After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 687178 - tsdemux produces buffers without timestamps when activated in push mode
tsdemux produces buffers without timestamps when activated in push mode
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
1.x
Other Linux
: Normal critical
: 1.0.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-10-30 09:26 UTC by Josep Torra Valles
Modified: 2013-01-04 12:11 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
mpegts: Only use timestamp-based PCR/PTS estimation when needed (2.73 KB, patch)
2012-11-09 09:52 UTC, Edward Hervey
committed Details | Review

Description Josep Torra Valles 2012-10-30 09:26:57 UTC
The buffers produced by tsdemux doesn't provide timing info when activated in push mode causing random behaviours from a single video frame presented to A/V sync issues depending on the media and the video codec involved.
Comment 1 Edward Hervey 2012-11-08 09:04:54 UTC
The combination of push-mode AND non-timestamped input is indeed failing.

I think we should just activate the skew-based code when it's push-based AND time-based. And then we use the other algorithm (offset-based) for all the other use cases.

Note : I just want to be sure that those use cases are indeed non live. Otherwise upstream *should* timestamp that stream, otherwise we cannot achieve proper rate/skew estimation.
Comment 2 Josep Torra Valles 2012-11-08 09:48:44 UTC
At lest the following are valid use cases that aren't live.

playbin uri=pushfile://
filesrc ! queue ! tsdemux
anysrc ! flumpegshifter ! tsdemux
Comment 3 Edward Hervey 2012-11-09 09:52:36 UTC
Created attachment 228530 [details] [review]
mpegts: Only use timestamp-based PCR/PTS estimation when needed

When dealing with non-time based push-mode streams, we need to revert
to using the offset-based PCR/PTS estimation logic of packetizer.

This solves uses cases such as:
 pushfile:// ! tsdemux
 src ! queue ! tsdemux
Comment 4 Edward Hervey 2012-11-09 11:16:11 UTC
Author: Edward Hervey <edward@collabora.com>
Date:   Thu Nov 8 17:15:26 2012 +0100

    mpegts: Only use timestamp-based PCR/PTS estimation when needed
    
    When dealing with non-time based push-mode streams, we need to revert
    to using the offset-based PCR/PTS estimation logic of packetizer.
    
    This solves uses cases such as:
     pushfile:// ! tsdemux
     src ! queue ! tsdemux
    
    https://bugzilla.gnome.org/show_bug.cgi?id=687178
Comment 5 Tim-Philipp Müller 2013-01-04 12:11:14 UTC
This appears to have broken DVB playback, at least in some cases, see bug #690949.