GNOME Bugzilla – Bug 676306
[tsdemux] Handle PMT updates only changing PCR PID
Last modified: 2013-04-29 07:50:28 UTC
ts Streams that change audio/video pids through a PMT update (like it's seen on DVB broadcasts that temporary switch to regional program) are not correctly handled at the moment. With git version as of yesterday such a PMT update causes a stream error being thrown by the source and the demuxer, so that playback stopped. With todays update (http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=fa4b92e743fa7850cee330143aa727818dc2f56e) the behviour changed to a playback freeze. This is even worse as in this case the application can not automatically restart to workaround the issue. A testing sample for this problem can be found here: http://jusst.de/files/pmt-switch-short.ts
It seems the freeze in the sample file occurs because the PMT switch is between two channels which have a different PTS base. One can see that the timestamps returned by tsdemux jump by about 30 minutes when the freeze occurs. I guess on such PMT changes the timestamp calculation should be reset somehow.
The only thing that changes is indeed the PCR PID (it has the same streams otherwise).
This was fixed some time ago commit 671550714f2fa4eb011a1b2c7d68f93d8176944a Author: Edward Hervey <edward.hervey@collabora.co.uk> Date: Fri Mar 2 10:54:48 2012 +0100 mpegtsbase: Check harder for program changes And don't just rely on the section crc/version_number changing to indicate that the program actually changed.