GNOME Bugzilla – Bug 754669
opusparse: overwrites upstream timestamps
Last modified: 2018-11-03 13:40:08 UTC
Opusparse seems to just make up its own timestamps by starting from 0 and adding the frame durations. This probably means it does not take into account any upstream timestamps in case where we're not reading straight from a file but there's a demuxer or depayloader upstream. Just came across this whilst investigating follow-ups to bug #752106, did not look in detail, just filing it here for now before I forget.
I can't reproduce this bug with my MSE test vectors, opusparse seems to be working fine in that regard. In the following snippet I make a WebM file where the audio starts at a non-zero timestamp. Notice the PTSs from matroskademux are preserved by opusparse. > gst-launch-1.0 -v filesrc location=<(cat ~/yt-mse-test-vectors/car_opus_low.webm/{init,media2}.webm) ! matroskademux ! identity silent=false ! opusparse ! fakesink silent=false | grep chain |head -n6 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (110 bytes, dts: none, pts: 0:00:09.994500000, duration: none, offset: -1, offset_end: -1, flags: 00004040 discont tag-memory , meta: none) 0x7fcd380074d0 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (110 bytes, dts: 0:00:09.994500000, pts: 0:00:09.994500000, duration: 0:00:00.020000000, offset: 20000000, offset_end: 960, flags: 00004040 discont tag-memory , meta: none) 0x7fcd380074d0 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (110 bytes, dts: none, pts: 0:00:10.014500000, duration: none, offset: -1, offset_end: -1, flags: 00004000 tag-memory , meta: none) 0x7fcd38007a20 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (110 bytes, dts: 0:00:10.014500000, pts: 0:00:10.014500000, duration: 0:00:00.020000000, offset: 40000000, offset_end: 1920, flags: 00000000 , meta: none) 0x7fcd38007a20 /GstPipeline:pipeline0/GstIdentity:identity0: last-message = chain ******* (identity0:sink) (110 bytes, dts: none, pts: 0:00:10.034500000, duration: none, offset: -1, offset_end: -1, flags: 00004000 tag-memory , meta: none) 0x7fcd38010010 /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain ******* (fakesink0:sink) (110 bytes, dts: 0:00:10.034500000, pts: 0:00:10.034500000, duration: 0:00:00.020000000, offset: 60000000, offset_end: 2880, flags: 00000000 , meta: none) 0x7fcd38010010
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/297.