From ccbf370f2000b9b27f4af259c23007d67f7ea46e Mon Sep 17 00:00:00 2001 From: Nidhi Makhijani Date: Tue, 29 Jul 2014 21:24:29 +0530 Subject: [PATCH] mpegvideo: move vol_control_parameters to the only place it is used Signed-off-by: Diego Biurrun --- libavcodec/mpeg4video.h | 2 ++ libavcodec/mpeg4videodec.c | 10 +++++----- libavcodec/mpegvideo.h | 1 - 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h index 59358eb555..b092684768 100644 --- a/libavcodec/mpeg4video.h +++ b/libavcodec/mpeg4video.h @@ -94,6 +94,8 @@ typedef struct Mpeg4DecContext { int lavc_build; ///< flag for having shown the warning about divxs invalid b frames int showed_packed_warning; + int vol_control_parameters; /**< does the stream contain the low_delay flag, + * used to work around buggy encoders. */ int cplx_estimation_trash_i; int cplx_estimation_trash_p; diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index a4e7725753..199e3b341b 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -1685,7 +1685,7 @@ static int decode_vol_header(Mpeg4DecContext *ctx, GetBitContext *gb) s->avctx->sample_aspect_ratio = ff_h263_pixel_aspect[s->aspect_ratio_info]; } - if ((s->vol_control_parameters = get_bits1(gb))) { /* vol control parameter */ + if ((ctx->vol_control_parameters = get_bits1(gb))) { /* vol control parameter */ int chroma_format = get_bits(gb, 2); if (chroma_format != CHROMA_420) av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n"); @@ -2058,7 +2058,7 @@ static int decode_user_data(Mpeg4DecContext *ctx, GetBitContext *gb) if (ctx->xvid_build == -1 && ctx->divx_version == -1 && ctx->lavc_build == -1) if (s->codec_tag == AV_RL32("DIVX") && s->vo_type == 0 && - s->vol_control_parameters == 0) + ctx->vol_control_parameters == 0) ctx->divx_version = 400; // divx 4 if (ctx->xvid_build >= 0 && ctx->divx_version >= 0) { @@ -2085,7 +2085,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) s->pict_type = get_bits(gb, 2) + AV_PICTURE_TYPE_I; /* pict type: I = 0 , P = 1 */ if (s->pict_type == AV_PICTURE_TYPE_B && s->low_delay && - s->vol_control_parameters == 0 && !(s->flags & CODEC_FLAG_LOW_DELAY)) { + ctx->vol_control_parameters == 0 && !(s->flags & CODEC_FLAG_LOW_DELAY)) { av_log(s->avctx, AV_LOG_ERROR, "low_delay flag incorrectly, clearing it\n"); s->low_delay = 0; } @@ -2276,7 +2276,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) s->data_partitioning, ctx->resync_marker, ctx->num_sprite_warping_points, s->sprite_warping_accuracy, 1 - s->no_rounding, s->vo_type, - s->vol_control_parameters ? " VOLC" : " ", ctx->intra_dc_threshold, + ctx->vol_control_parameters ? " VOLC" : " ", ctx->intra_dc_threshold, ctx->cplx_estimation_trash_i, ctx->cplx_estimation_trash_p, ctx->cplx_estimation_trash_b); } @@ -2297,7 +2297,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) /* detect buggy encoders which don't set the low_delay flag * (divx4/xvid/opendivx). Note we cannot detect divx5 without b-frames * easily (although it's buggy too) */ - if (s->vo_type == 0 && s->vol_control_parameters == 0 && + if (s->vo_type == 0 && ctx->vol_control_parameters == 0 && ctx->divx_version == -1 && s->picture_number == 0) { av_log(s->avctx, AV_LOG_WARNING, "looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n"); diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 49774bc226..1333d44414 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -518,7 +518,6 @@ typedef struct MpegEncContext { int partitioned_frame; ///< is current frame partitioned int low_delay; ///< no reordering needed / has no b-frames int vo_type; - int vol_control_parameters; ///< does the stream contain the low_delay flag, used to workaround buggy encoders PutBitContext tex_pb; ///< used for data partitioned VOPs PutBitContext pb2; ///< used for data partitioned VOPs int mpeg_quant;