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 778341 - rtpjitterbuffer: resetting pts to 0 after gap
rtpjitterbuffer: resetting pts to 0 after gap
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
1.11.1
Other Linux
: Normal blocker
: 1.10.5
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-02-08 13:36 UTC by Andrew
Modified: 2017-02-26 10:42 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch to bypass gap checking for packets with estimated dts (3.26 KB, patch)
2017-02-08 13:36 UTC, Andrew
committed Details | Review

Description Andrew 2017-02-08 13:36:27 UTC
Created attachment 345217 [details] [review]
patch to bypass gap checking for packets with estimated dts

In function rtp_jitter_buffer_calculate_pts: If gap in incoming RTP timestamps is more than (3 * jbuf->clock_rate) we call rtp_jitter_buffer_reset_skew which resets pts to 0. So components down the pipeline (playes, mixers) just skip frames/samples until pts becomes equal to pts before gap.

In version 1.10.2 and before this checking was bypassed for packets with "estimated dts", and gaps were handled correctly.
 I created a small patch that fixes this (bypasses checking for "estimated dts" packets like in 1.10.2).
Possibly this bypassing was lost after extraction of function rtp_jitter_buffer_calculate_pts.
Comment 1 Sebastian Dröge (slomo) 2017-02-26 08:39:14 UTC
This didn't make it into 1.10.4 but should really be solved.
Comment 2 Sebastian Dröge (slomo) 2017-02-26 10:42:38 UTC
commit 76792a5c204dab025ea8c2ce0be865bdca430b98
Author: Andrew <nifigase@gmail.com>
Date:   Wed Feb 8 13:36:00 2017 +0000

    rtpjitterbuffer: Don't always reset PTS to 0 after a gap
    
    In function rtp_jitter_buffer_calculate_pts: If gap in incoming RTP
    timestamps is more than (3 * jbuf->clock_rate) we call
    rtp_jitter_buffer_reset_skew which resets pts to 0. So components down
    the pipeline (playes, mixers) just skip frames/samples until pts becomes
    equal to pts before gap.
    
    In version 1.10.2 and before this checking was bypassed for packets with
    "estimated dts", and gaps were handled correctly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=778341