I have a TS channel which twice a day updates its PMT with a completely different set of ES. Seems they have two sets of ES with different content that they swap at given times. With v2.1.5 I got some discontinuties for some minutes but eventually it got back to normal, but with GIT head I get no video or audio output when transcoding said TS.
Reading the log, seems that VLC tries to switch the PCR to an ES id (640) which no longer exists on the updated PMT, but did exist on the previous PMT.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
I have compiled todays version but unfortunately I won't be able to test this live until mid next week or so.
Explanation:
At 18:45, after doing the PMTCallBack to the new pids (517 for video and 660 for audio) the VLC which is playing the transcoded stream turns black, but it does not stop playing, i.e. it gets data from the transcoding VLC.
At 18:58 another PMTCallBack is called and pid's get back to "normal". Neither image nor sound come back to the playing VLC, but they do eventually after some time (sometimes minutes, sometimes more than an hour).
From 20:55 to 21:00 I see exactly the same behavior.
I have attached the full log when I tried to dump to file the stream using a compiled VLC without "commit 50accb82" applied. The dumped stream ends as soon as the PMT update happens (18:45), so I think its useless.
I'm going to try to get a sample using todays GIT version and I will upload the log too.
If it gets copied properly, will be useful if I upload somewhere the dumped .ts file too?
while( vlc_object_alive(p_sys->p_input) && !p_sys->b_buffering ) { if( input_DecoderIsEmpty( es->p_dec ) && ( !es->p_dec_record || input_DecoderIsEmpty( es->p_dec_record ) )) break; /* FIXME there should be a way to have auto deleted es, but there will be * a problem when another codec of the same type is created (mainly video) */ msleep( 20*1000 ); }
This seems to be working correctly with version VLC media player 3.0.0-git Vetinari (revision 2.2.0-git-3058-g3447e875), looks like this commit fixed the issue:
demux: ts: really fix [#14257](https://code.videolan.org/videolan/vlc/-/issues/14257)We need to unselect missing PID on PMT update as someproviders add overlapping delay to the last packet ofprev pid.reverts commit 50accb82e6e8b10a3f3493091dfcd832405ba234