Feature #5717
SAT>IP Map Different sources between each other
0%
Description
Sometimes it is necessary to map sources, for example if you want to have a DVB-S transponder in a network thats usually DVB-C only it is necessary to map the DVB-S Frequency/Mux to a DVB-C Frequency. It would probably be a good idea to extend the IPTVs Map functionality to also cover the other DVB variants.
History
Updated by Flole Systems about 5 years ago
@saen acro
Thanks, not really the same. I came up with a patch that at least does dvb-s to dvb-c/dvb-t mapping, everything else is just copy and paste which I didnt want to do (because I dont need it and because changes will be harder then). Basically all that we need to do now is go through all the sources and add dvb-c/dvb-t/dvb-s where appropriate (dvb-s doesnt need to be mapped to dvb-s, so skip that one). In terms of the patch that would mean copying the top part and adapting it where necessary.
Patch:
--- ./src/input/mpegts/mpegts_mux_dvb.c
+++ ./src/input/mpegts/mpegts_mux_dvb.c
@@ -530,6 +530,22 @@
.get = dvb_mux_dvbs_class_orbital_get,
.opts = PO_ADVANCED | PO_RDONLY
},
+ {
+ .type = PT_U32,
+ .id = "dvb_satip_dvbc_freq",
+ .name = N_("SAT>IP DVB-C frequency (Hz)"),
+ .off = offsetof(dvb_mux_t, mm_dvb_satip_dvbc_freq),
+ .desc = N_("For example: 312000000. This frequency is 312Mhz."),
+ .opts = PO_ADVANCED
+ },
+ {
+ .type = PT_U32,
+ .id = "dvb_satip_dvbt_freq",
+ .name = N_("SAT>IP DVB-T frequency (Hz)"),
+ .off = offsetof(dvb_mux_t, mm_dvb_satip_dvbt_freq),
+ .desc = N_("For example: 312000000. This frequency is 312Mhz."),
+ .opts = PO_ADVANCED
+ },
{}
}
};
--- ./src/input/mpegts/mpegts_dvb.h
+++ ./src/input/mpegts/mpegts_dvb.h
@@ -38,6 +38,13 @@
* Tuning information
*/
dvb_mux_conf_t lm_tuning;
+
+ /*
+ * Frequencies for Mapping
+ */
+ uint32_t mm_dvb_satip_dvbt_freq;
+ uint32_t mm_dvb_satip_dvbc_freq;
+ uint32_t mm_dvb_satip_dvbs_freq;
} dvb_mux_t;
/*
--- ./src/satip/rtsp.c
+++ ./src/satip/rtsp.c
@@ -641,6 +641,24 @@
}
}
#endif
+ if (idnode_is_instance(&mn->mn_id, &dvb_network_class)) {
+ LIST_FOREACH(mux, &mn->mn_muxes, mm_network_link) {
+ if (rs->dmc.dmc_fe_type == DVB_TYPE_T &&
+ deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbt_freq) < 2000)
+ break;
+ if (rs->dmc.dmc_fe_type == DVB_TYPE_C &&
+ deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbc_freq) < 2000)
+ break;
+ if (rs->dmc.dmc_fe_type == DVB_TYPE_S &&
+ deltaU32(rs->dmc.dmc_fe_freq, ((dvb_mux_t *)mux)->mm_dvb_satip_dvbs_freq) < 2000)
+ break;
+ }
+ if (mux) {
+ dmc = rs->dmc;
+ rs->perm_lock = 1;
+ break;
+ }
+ }
}
if (mux == NULL && mn2 &&
(rtsp_muxcnf == MUXCNF_AUTO || rtsp_muxcnf == MUXCNF_KEEP)) {
@Jaroslav: What do you think about this?