[FFmpeg-devel] [PATCH] Fix empty G-VOP header decoding in MPEG-4

Måns Rullgård mans
Sat Feb 12 15:41:24 CET 2011


Anatoly Nenashev <anatoly.nenashev at ovsoft.ru> writes:

> diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
> index 5303da3..e0ef4bd 100644
> --- a/libavcodec/mpeg4videodec.c
> +++ b/libavcodec/mpeg4videodec.c
> @@ -1493,17 +1493,20 @@ end:
>
>  static int mpeg4_decode_gop_header(MpegEncContext * s, GetBitContext *gb){
> -    int hours, minutes, seconds;
> +    int hours, minutes, seconds, marker;
> +    int val;
>
> -    hours= get_bits(gb, 5);
> -    minutes= get_bits(gb, 6);
> -    skip_bits1(gb);
> -    seconds= get_bits(gb, 6);
> +    val= show_bits(gb, 18);
> +    marker= val & 0x40;
>
> -    s->time_base= seconds + 60*(minutes + 60*hours);
> -
> -    skip_bits1(gb);
> -    skip_bits1(gb);
> +    if (marker) {
> +        hours= (val >> 13) & 0x1F;
> +        minutes= (val >> 7) & 0x3F;
> +        seconds= val & 0x3F;
> +        s->time_base= seconds + 60*(minutes + 60*hours);
> +    } else {
> +        av_log(s->avctx, AV_LOG_WARNING, "marker bit in GOP header is not set\n");
> +    }
>
>      return 0;
>  }

Patch with nicer formatting attached.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list