# HG changeset patch # User reimar # Date 1237236592 0 # Node ID 0496cbd94374da0e3874757e660a990921c42a6b # Parent 4f53f8346307426875cdd08f9104e819c5a1ea82 Extend mov edit list support to work for a first padding entry with time == -1 and duration. Complicated since time is relative to stream, duration relative to container time base. diff -r 4f53f8346307 -r 0496cbd94374 mov.c --- a/mov.c Mon Mar 16 20:22:39 2009 +0000 +++ b/mov.c Mon Mar 16 20:49:52 2009 +0000 @@ -1278,8 +1278,9 @@ /* adjust first dts according to edit list */ if (sc->time_offset) { + int rescaled = sc->time_offset < 0 ? av_rescale(sc->time_offset, sc->time_scale, mov->time_scale) : sc->time_offset; assert(sc->time_offset % sc->time_rate == 0); - current_dts = - (sc->time_offset / sc->time_rate); + current_dts = - (rescaled / sc->time_rate); } /* only use old uncompressed audio chunk demuxing when stts specifies it */ @@ -1774,12 +1775,12 @@ for(i=0; itime_offset = time; - sc->time_rate = av_gcd(sc->time_rate, time); + if (i == 0 && time >= -1) { + sc->time_offset = time != -1 ? time : -duration; + sc->time_rate = av_gcd(sc->time_rate, FFABS(sc->time_offset)); } }