[mythtv] Replaying DVB MPEG-TS SI via mythfilerecorder for channel scanning

roger roger at beardandsandals.co.uk
Wed Mar 1 11:04:33 UTC 2017

This is a lot more straightforward than I originally thought. However I 
suspect it only works by accident!

or anyone how has not tried it.

Here are the the steps.

1. Setup a new capture "External (black box) recorder type

2. For the file setting use "/full/path/to/mythfilerecorder 
--infile=/full/path/to/capturedfile" (without the quotes)

3. Connect the card to an "over the air" videosource and select the 
MPEG2TS input type.

4. Scan for channels etc. on the connection you just defined.

The reason I say may work by chance as far as SI is concerned is that 
the it will always use the "scan current transport" scan type.

This piece of code  (channelscanner.cpp) looks like this.

     else if (ScanTypeSetting::CurrentTransportScan == scantype)
         QString sistandard = "mpeg";
             "ScanCurrentTransport(" + sistandard + ")");
         ok = sigmonScanner->ScanCurrentTransport(sistandard);

Note that the sistandard string is set to "mpeg" lower case.

and this piece of code (channelscan_sm.cpp) looks like this.

bool ChannelScanSM::Tune(const transport_scan_items_it_t &transport)


     if (item.tuning.sistandard == "MPEG")
         return GetDTVChannel()->Tune(item.iptv_tuning, true);

     const uint64_t freq = item.freq_offset(transport.offset());
     DTVMultiplex tuning = item.tuning;
     tuning.frequency = freq;

     if (m_scanDTVTunerType == DTVTunerType::kTunerTypeDVBT2)
         if (m_dvbt2Tried)
             tuning.mod_sys = DTVModulationSystem::kModulationSystem_DVBT2;
             tuning.mod_sys = DTVModulationSystem::kModulationSystem_DVBT;
     return GetDTVChannel()->Tune(tuning);

sistandard is being tested against "MPEG" uppercase. So it never goes 
down the iptv tuning path. Which is good for me because it would 
probably fail!

I hope nobody "fixes" it :-).


More information about the mythtv-dev mailing list