[mythtv] how mythtv handles udp multicast of mpeg ts stream having multiple streams

John P Poet jppoet at gmail.com
Mon Jan 21 17:13:48 UTC 2013

On Sun, Jan 20, 2013 at 11:53 PM, radhika g <gradhika.dn at gmail.com> wrote:
> Using the latest git master branch code of mythtv itself. When i am trying
> to playback a file with multiple streams, i am unable to view or record even
> one stream.
> Below are the backend logs:
> Loaded [data]udp://[fectype][fec0][fec1] for 1001
> 2013-01-21 11:19:46.862263 N  AutoExpire: CalcParams(): Max required Free
> Space: 3.0 GB w/freq: 14 min
> 2013-01-21 11:19:46.936648 I  IPTVSH( run()
> 2013-01-21 11:19:46.936737 I  IPTVSH( Joining
> 2013-01-21 11:19:47.140899 E  DTVSM(): Program #0 not found in PAT!
> Program Association Section
>  PSIP tableID(0x0) length(29) extension(0x27dd)
>       version(11) current(1) section(0) last_section(0)
>       tsid(10205) programCount(5)
>   program number     3 has PID 0x0030
>   program number     7 has PID 0x0031
>   program number     1 has PID 0x0032
>   program number     2 has PID 0x0033
>   program number     8 has PID 0x0034
> 2013-01-21 11:19:47.738693 E  ProcessPAT: Program not found in PAT. Rescan
> your transports.
> 2013-01-21 11:19:47.738735 E  Desired program #0 not found in PAT.
> Cannot create single program PAT.
> 2013-01-21 11:23:46.239964 I  Running housekeeping thread
> 2013-01-21 11:28:47.248283 I  Running housekeeping thread
>>Having said that, I had never heard of an iptv channels streaming a TS
>>with multipliple video stream
> I have seen some UK based solutions having multiple video streams.

Hi Radhika,

To at least get something to record, you could force the program
number.  For example, in the mpegrecorder.cpp for the HD-PVR, we force
program number 1 when we initialize the streamdata:

        int progNum = 1;
        MPEGStreamData *sd = new MPEGStreamData(progNum, true);

To record all of the programs, separate instances iptvrecorder would
have to be spawned -- one for each program desired.  Each "recorder"
creates a "streamdata" to filter the TS down to just the desired PS.
Each of those "streamdata"s would be registered with THE streamhandler
for that TS.

To put it another way...

A "stream handler" reads the TS, and passes it off to any "stream
data" instances that has been registered with it (via an add listener
call).  Each "stream data" filters the TS down to just the desired PS
and then passes the PS to the "recorder" created for that PS.

Hope that helps.


PS.  Convention on this mailing list is to bottom post.

More information about the mythtv-dev mailing list