GNOME Bugzilla – Bug 611398
[regression] outgoing buffer durations aren't correct
Last modified: 2010-03-01 11:53:52 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"
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.
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