[FFmpeg-devel] [PATCH] more mov edl fixes

Baptiste Coudurier baptiste.coudurier
Mon Mar 16 18:15:32 CET 2009


Hi Reimar,

On 3/16/2009 6:49 AM, Reimar D?ffinger wrote:
> Hello,
> attached patch fixes sync of
> http://samples.mplayerhq.hu/mov/weirdedl.mp4 (subtitles are supposed to
> be exactly in sync, the audio is supposed to be delayed by exactly 3
> seconds compared to how it plays now).
> Two issues:
> 1) it uses an "fillup" edl entry with time == -1 (implemented by the
> second chunk of the patch).
> 2) edl time values are relative to container, not track rate,
> implemented in an ugly way by the first chunk.
>
> 
> Index: libavformat/mov.c
> ===================================================================
> --- libavformat/mov.c	(revision 18004)
> +++ libavformat/mov.c	(working copy)
> @@ -1246,7 +1246,7 @@
>      /* adjust first dts according to edit list */
>      if (sc->time_offset) {
>          assert(sc->time_offset % sc->time_rate == 0);
> -        current_dts = - (sc->time_offset / sc->time_rate);
> +        current_dts = - ((int64_t)sc->time_offset * sc->time_scale / mov->time_scale / sc->time_rate);
>      }
>  
>      /* only use old uncompressed audio chunk demuxing when stts specifies it */
> @@ -1741,12 +1741,12 @@
>  
>      for(i=0; i<edit_count; i++){
>          int time;
> -        get_be32(pb); /* Track duration */
> +        int duration = get_be32(pb); /* Track duration */
>          time = get_be32(pb); /* Media time */
>          get_be32(pb); /* Media rate */
> -        if (i == 0 && time != -1) {
> -            sc->time_offset = time;
> -            sc->time_rate = av_gcd(sc->time_rate, time);
> +        if (i == 0) {
> +            sc->time_offset = time != -1 ? time : -duration;
> +            sc->time_rate = av_gcd(sc->time_rate, FFABS(sc->time_offset));
>          }
>      }

I think you can rescale here, using av_rescale. Values are available.

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
checking for life_signs in -lkenny... no
FFmpeg maintainer                                  http://www.ffmpeg.org




More information about the ffmpeg-devel mailing list