matroskademux: Send tags after seeking

Similar to what qtdemux does in `gst_qtdemux_stream_update_segment()`,
in which case we want to resend tags according to our position.
By setting the changed flag for all stream tags we ensure they will all
be (re-)send as we progrees.

This notably ensures that rotation tags are not lost when video players
finish playback and jump back to the beginning of a video.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8429>
This commit is contained in:
Robert Mader 2025-01-24 15:55:06 +01:00 committed by GStreamer Marge Bot
parent bebec6d965
commit 7e2b383553

View File

@ -3265,6 +3265,13 @@ exit:
else
demux->to_time = GST_CLOCK_TIME_NONE;
demux->segment_seqnum = seqnum;
for (int i = 0; i < demux->common.src->len; i++) {
GstMatroskaTrackContext *stream;
stream = g_ptr_array_index (demux->common.src, i);
stream->tags_changed = TRUE;
}
GST_OBJECT_UNLOCK (demux);
/* restart our task since it might have been stopped when we did the
@ -6255,6 +6262,7 @@ gst_matroska_demux_loop (GstPad * pad)
if (G_UNLIKELY (demux->new_segment)) {
gst_matroska_demux_send_event (demux, demux->new_segment);
demux->new_segment = NULL;
gst_matroska_demux_send_tags (demux);
}
}