Track index table array was being lost during track info update.
Ref it over to updated info, so it can be used for finding
nearest seek points.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1203>
new_track->pad = old_track->pad;
new_track->index = old_track->index;
new_track->pos = old_track->pos;
+
+ /* If index table is empty, do not ref it, we will try to fallback
+ * to the generic one from read-common in such case */
+ if (old_track->index_table && old_track->index_table->len > 0)
+ new_track->index_table = g_array_ref (old_track->index_table);
+
g_ptr_array_index (demux->common.src, old_track_index) = new_track;
gst_pad_set_element_private (new_track->pad, new_track);
GArray *index;
/* find entry just before or at the requested position */
- if (track && track->index_table)
+ if (track && track->index_table) {
index = track->index_table;
- else
+ } else {
+ GST_DEBUG_OBJECT (common->sinkpad, "Missing track index table");
index = common->index;
+ }
if (!index || !index->len)
return NULL;