[FFmpeg-devel] [PATCH 2/2] fix time code calculation for 60000/1001 drop frame

Matthieu Bouron matthieu.bouron at gmail.com
Wed Jan 23 11:41:36 CET 2013


On Wed, Jan 23, 2013 at 7:15 AM, Jason Livingston <jason at cpcweb.com> wrote:
> ---
>  libavutil/timecode.c |   17 ++++++++++-------
>  1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/libavutil/timecode.c b/libavutil/timecode.c
> index 5f9ebc2..d396032 100644
> --- a/libavutil/timecode.c
> +++ b/libavutil/timecode.c
> @@ -35,18 +35,21 @@ int av_timecode_adjust_ntsc_framenum2(int framenum, int fps)
>  {
>      /* only works for NTSC 29.97 and 59.94 */
>      int drop_frames = 0;
> -    int d = framenum / 17982;
> -    int m = framenum % 17982;
> +    int d, m, frames_per_10mins;
>
> -    if (fps == 30)
> +    if (fps == 30) {
>          drop_frames = 2;
> -    else if (fps == 60)
> +        frames_per_10mins = 17982;
> +    } else if (fps == 60) {
>          drop_frames = 4;
> -    else
> +        frames_per_10mins = 35964;
> +    } else
>          return framenum;
>
> -    //if (m < 2) m += 2; /* not needed since -2,-1 / 1798 in C returns 0 */
> -    return framenum + 9 * drop_frames * d + drop_frames * ((m - 2) / 1798);
> +    d = framenum / frames_per_10mins;
> +    m = framenum % frames_per_10mins;
> +
> +    return framenum + 9 * drop_frames * d + drop_frames * ((m - drop_frames) / (frames_per_10mins / 10));
>  }
>

Same remark as previous patch, prefixing commit message by
lavu/timecode: would be great.
Otherwise patch LGTM, thanks.

Regards,
Matthieu


More information about the ffmpeg-devel mailing list