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 611398 - [regression] outgoing buffer durations aren't correct
[regression] outgoing buffer durations aren't correct
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other Linux
: Normal blocker
: 0.10.10
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-02-28 14:14 UTC by Edward Hervey
Modified: 2010-03-01 11:53 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gstffmpegdec: Handle durations in reordered frames (8.60 KB, patch)
2010-02-28 14:15 UTC, Edward Hervey
committed Details | Review

Description Edward Hervey 2010-02-28 14:14:13 UTC
The buffer timestamp/offset reordering code isn't taking into account the buffer duration, resulting in outgoing buffers having the proper timestamp... but not the proper duration.

The following shows the problem (before is before the decoder and after is after the decoder). Notice the duration of the first buffer coming in and the first buffer going out.

#
/GstPipeline:pipeline0/GstIdentity:before: last-message = "chain   ******* (before:sink)i (12338 bytes, timestamp: 0:00:00.000000000, duration: 0:00:00.066666666, offset: -1, offset_end: -1, flags: 32) 0x7f47100032a0"
#
/GstPipeline:pipeline0/GstIdentity:before: last-message = "chain   ******* (before:sink)i (2030 bytes, timestamp: 0:00:00.066666666, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 256) 0x7f4710003420"
#
/GstPipeline:pipeline0/GstFakeSink:after: last-message = "chain   ******* < (115200 bytes, timestamp: 0:00:00.000000000, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 32) 0x7f4710003320"
#
/GstPipeline:pipeline0/GstIdentity:before: last-message = "chain   ******* (before:sink)i (1749 bytes, timestamp: 0:00:00.133333333, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 256) 0x7f47100030a0"
#
/GstPipeline:pipeline0/GstFakeSink:after: last-message = "chain   ******* < (115200 bytes, timestamp: 0:00:00.066666666, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 256) 0x7f47100033a0"
#
/GstPipeline:pipeline0/GstIdentity:before: last-message = "chain   ******* (before:sink)i (715 bytes, timestamp: 0:00:00.200000000, duration: 0:00:00.066666666, offset: -1, offset_end: -1, flags: 256) 0x615640"
#
/GstPipeline:pipeline0/GstFakeSink:after: last-message = "chain   ******* < (115200 bytes, timestamp: 0:00:00.133333333, duration: 0:00:00.066666666, offset: -1, offset_end: -1, flags: 256) 0x7f4710003020"
#
/GstPipeline:pipeline0/GstIdentity:before: last-message = "chain   ******* (before:sink)i (185 bytes, timestamp: 0:00:00.266666666, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 256) 0x7f4710003220"
#
/GstPipeline:pipeline0/GstFakeSink:after: last-message = "chain   ******* < (115200 bytes, timestamp: 0:00:00.200000000, duration: 0:00:00.066666667, offset: -1, offset_end: -1, flags: 256) 0x6156c0"
Comment 1 Edward Hervey 2010-02-28 14:15:09 UTC
Created attachment 154899 [details] [review]
gstffmpegdec: Handle durations in reordered frames

The buffer durations were not being reordered along with the timestamp
and offset of the buffers, resulting in buffers using the duration of the
latest incoming frame instead of their original frame.
Comment 2 Edward Hervey 2010-03-01 11:53:33 UTC
Author: Edward Hervey <bilboed@bilboed.com>
Date:   Sun Feb 28 15:10:34 2010 +0100

    gstffmpegdec: Handle durations in reordered frames
    
    The buffer durations were not being reordered along with the timestamp
    and offset of the buffers, resulting in buffers using the duration of the
    latest incoming frame instead of their original frame.
    
    Fixes #611398