qtdemux: Ignore raw audio streams when adjusting seek

Because we treat raw audio chunks/samples as keyframes, they were interfering
with seek time adjustment.
Became apparent when the accompanying video stream was I-frame only,
for example ProRes.
Since raw audio streams can be seeked freely, it's fine to just ignore them here,
giving priority to the real keyframes in the video stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5674>
This commit is contained in:
Piotr Brzeziński 2023-06-29 15:20:29 +02:00 committed by Tim-Philipp Müller
parent 07cb8432cc
commit 15e9b513da

View file

@ -1144,6 +1144,10 @@ gst_qtdemux_adjust_seek (GstQTDemux * qtdemux, gint64 desired_time,
if (CUR_STREAM (str)->sparse && !use_sparse) if (CUR_STREAM (str)->sparse && !use_sparse)
continue; continue;
/* raw audio streams can be ignored as we can seek anywhere within them */
if (str->subtype == FOURCC_soun && str->need_clip)
continue;
seg_idx = gst_qtdemux_find_segment (qtdemux, str, desired_time); seg_idx = gst_qtdemux_find_segment (qtdemux, str, desired_time);
GST_DEBUG_OBJECT (qtdemux, "align segment %d", seg_idx); GST_DEBUG_OBJECT (qtdemux, "align segment %d", seg_idx);