Commit 1426a55a authored by Sebastian Dröge's avatar Sebastian Dröge

qtmux: Clear edit lists every time we recalculate them

We recalculate them, so any old information has to be forgotten.
Otherwise we write invalid edit lists when writing headers multiple
times.

https://bugzilla.gnome.org/show_bug.cgi?id=778330
parent 2849ec29
......@@ -3716,6 +3716,15 @@ atom_edts_add_entry (AtomEDTS * edts, gint index, EditListEntry * entry)
*e = *entry;
}
void
atom_trak_edts_clear (AtomTRAK * trak)
{
if (trak->edts) {
atom_edts_clear (trak->edts);
trak->edts = NULL;
}
}
/*
* Update an entry in this trak edits list, creating it if needed.
* index is the index of the entry to update, or create if it's past the end.
......
......@@ -918,6 +918,7 @@ void atom_trak_add_samples (AtomTRAK * trak, guint32 nsamples, guint
gint64 pts_offset);
void atom_trak_set_elst_entry (AtomTRAK * trak, gint index, guint32 duration,
guint32 media_time, guint32 rate);
void atom_trak_edts_clear (AtomTRAK * trak);
guint32 atom_trak_get_timescale (AtomTRAK *trak);
guint32 atom_trak_get_id (AtomTRAK * trak);
void atom_stbl_add_samples (AtomSTBL * stbl, guint32 nsamples,
......
......@@ -2511,6 +2511,8 @@ gst_qt_mux_update_edit_lists (GstQTMux * qtmux)
GstCollectData *cdata = (GstCollectData *) walk->data;
GstQTPad *qtpad = (GstQTPad *) cdata;
atom_trak_edts_clear (qtpad->trak);
if (GST_CLOCK_TIME_IS_VALID (qtpad->first_ts)) {
guint32 lateness = 0;
guint32 duration = qtpad->trak->tkhd.duration;
......@@ -2556,7 +2558,6 @@ gst_qt_mux_update_edit_lists (GstQTMux * qtmux)
/* need to add the empty time to the trak duration */
duration += lateness;
qtpad->trak->tkhd.duration = duration;
if (qtpad->tc_trak) {
qtpad->tc_trak->tkhd.duration = duration;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment