From: Thierry Foucu Date: Thu, 21 Jul 2011 03:33:23 +0000 (-0700) Subject: mpeg4: decode Level Profile for MPEG4 Part 2. X-Git-Tag: v0.8b1~1927 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0637e50579c77ce16373a45dc173aa449e3a8011;p=platform%2Fupstream%2Flibav.git mpeg4: decode Level Profile for MPEG4 Part 2. Signed-off-by: Ronald S. Bultje --- diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index df0191d..b48f44d 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -1523,6 +1523,22 @@ static int mpeg4_decode_gop_header(MpegEncContext * s, GetBitContext *gb){ return 0; } +static int mpeg4_decode_profile_level(MpegEncContext * s, GetBitContext *gb){ + int profile_and_level_indication; + + profile_and_level_indication = get_bits(gb, 8); + + s->avctx->profile = (profile_and_level_indication & 0xf0) >> 4; + s->avctx->level = (profile_and_level_indication & 0x0f); + + // for Simple profile, level 0 + if (s->avctx->profile == 0 && s->avctx->level == 8) { + s->avctx->level = 0; + } + + return 0; +} + static int decode_vol_header(MpegEncContext *s, GetBitContext *gb){ int width, height, vo_ver_id; @@ -2177,6 +2193,9 @@ int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb) else if(startcode == GOP_STARTCODE){ mpeg4_decode_gop_header(s, gb); } + else if(startcode == VOS_STARTCODE){ + mpeg4_decode_profile_level(s, gb); + } else if(startcode == VOP_STARTCODE){ break; }