return (maj * 10 + min) * (c == 'W' ? -1 : 1);
}
+uint32_t
+dvb_sat_pls( dvb_mux_conf_t *dmc )
+{
+ if (dmc->dmc_fe_pls_mode == DVB_PLS_ROOT) {
+ uint32_t x, g;
+ const uint32_t root = dmc->dmc_fe_pls_code & 0x3ffff;
+
+ for (g = 0, x = 1; g < 0x3ffff; g++) {
+ if (root == x)
+ return g;
+ x = (((x ^ (x >> 7)) & 1) << 17) | (x >> 1);
+ }
+ return 0x3ffff;
+ }
+ return dmc->dmc_fe_pls_code & 0x3ffff;
+}
+
#endif /* ENABLE_MPEGTS_DVB */
/**
#if DVB_VER_ATLEAST(5,9)
S2CMD(DTV_STREAM_ID, r);
#if DVB_VER_ATLEAST(5,11)
- S2CMD(DTV_SCRAMBLING_SEQUENCE_INDEX, dmc->dmc_fe_pls_code & 0x3FFFF);
+ S2CMD(DTV_SCRAMBLING_SEQUENCE_INDEX, dvb_sat_pls(dmc));
#endif
#elif DVB_VER_ATLEAST(5,3)
S2CMD(DTV_DVBT2_PLP_ID, r);
#if DVB_VER_ATLEAST(5,9)
S2CMD(DTV_STREAM_ID, r);
#if DVB_VER_ATLEAST(5,11)
- S2CMD(DTV_SCRAMBLING_SEQUENCE_INDEX, dmc->dmc_fe_pls_code & 0x3FFFF);
+ S2CMD(DTV_SCRAMBLING_SEQUENCE_INDEX, dvb_sat_pls(dmc));
#endif
#elif DVB_VER_ATLEAST(5,3)
S2CMD(DTV_DVBT2_PLP_ID, r);