GNOME Bugzilla – Bug 779347
First buffer from theoradec always has segment.start timestamp
Last modified: 2018-11-03 11:54:56 UTC
I've encountered an error with splitmuxsrc and reverse playback. The first buffer from oggdemux for a file fragment always has timestamp NONE. Theoradec/ videodecoder guess a timestamp equal to segment->start which is normally OK, except here. With splitmuxsrc, it each fragment is a separate ogg file, so there'll be a first buffer for each part with timestamp NONE. TBH, I'm not sure how we should fix it. Either oggdemux needs to be able to work out the correct timestamp to put on the first theora packet in a stream, or theoradec needs to somehow work backward from the 2nd packet to calculate the timestamp for the first. videodecoder might be able to do the 2nd if it defers guessing a timestamp until it's pushing out the reverse buffers.
I think oggdemux should always be able to calculate a timestamp. This only happens in reverse playback? How can one reproduce it? I've tried: 1) gst-launch-1.0 videotestsrc num-buffers=250 ! video/x-raw,framerate=10/1 ! timeoverlay font-desc=Sans,25 ! theoraenc keyframe-force=10 ! splitmuxsink muxer=oggmux max-size-time=5000000000 location=/tmp/ogg-%05d.ogv 2) gst-play-1.0 splitfile:///tmp/ogg-*ogv - let play a little - press '-' repeatedly to lower playback speed - press 'd' to reverse playback direction Result: I don't see any problems or skips in the timestamps when crossing file boundaries
I'll have to try and remember what the test case was. It was something like that though - gaps and jumps in the timestamps in reverse playback
-- 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-base/issues/340.