mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
qtdemux: fix key unit seek corner case
If a key unit seek is performed with a time position that matches the offset of a keyframe, but not its actual PTS, we need to adjust the segment nevertheless. For example consider the following case: * stream starts with a keyframe at 0 nanosecond, lasting 40 milliseconds * user does a key unit seek at 20 milliseconds * we don't adjust the segment as the time position is "over" a keyframe * we push a segment that starts at 20 milliseconds * we push a buffer with PTS == 0 * an element downstream (eg rtponviftimestamp) tries to calculate the stream time of the buffer, fails to do so and drops it
This commit is contained in:
parent
4911ac38ac
commit
104f459258
1 changed files with 4 additions and 3 deletions
|
@ -1394,9 +1394,10 @@ gst_qtdemux_adjust_seek (GstQTDemux * qtdemux, gint64 desired_time,
|
|||
if (next && kindex == -1)
|
||||
kindex = gst_qtdemux_find_keyframe (qtdemux, str, index, FALSE);
|
||||
|
||||
/* if the keyframe is at a different position, we need to update the
|
||||
* requested seek time */
|
||||
if (index != kindex) {
|
||||
/* Update the requested time whenever a keyframe was found, to make it
|
||||
* accurate and avoid having the first buffer fall outside of the segment
|
||||
*/
|
||||
if (kindex != -1) {
|
||||
index = kindex;
|
||||
|
||||
/* get timestamp of keyframe */
|
||||
|
|
Loading…
Reference in a new issue