Commit ccbf370f authored by Nidhi Makhijani's avatar Nidhi Makhijani Committed by Diego Biurrun

mpegvideo: move vol_control_parameters to the only place it is used

Signed-off-by: 's avatarDiego Biurrun <diego@biurrun.de>
parent fa38573c
...@@ -94,6 +94,8 @@ typedef struct Mpeg4DecContext { ...@@ -94,6 +94,8 @@ typedef struct Mpeg4DecContext {
int lavc_build; int lavc_build;
///< flag for having shown the warning about divxs invalid b frames ///< flag for having shown the warning about divxs invalid b frames
int showed_packed_warning; 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_i;
int cplx_estimation_trash_p; int cplx_estimation_trash_p;
......
...@@ -1685,7 +1685,7 @@ static int decode_vol_header(Mpeg4DecContext *ctx, GetBitContext *gb) ...@@ -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]; 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); int chroma_format = get_bits(gb, 2);
if (chroma_format != CHROMA_420) if (chroma_format != CHROMA_420)
av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n"); av_log(s->avctx, AV_LOG_ERROR, "illegal chroma format\n");
...@@ -2058,7 +2058,7 @@ static int decode_user_data(Mpeg4DecContext *ctx, GetBitContext *gb) ...@@ -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 (ctx->xvid_build == -1 && ctx->divx_version == -1 && ctx->lavc_build == -1)
if (s->codec_tag == AV_RL32("DIVX") && s->vo_type == 0 && 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 ctx->divx_version = 400; // divx 4
if (ctx->xvid_build >= 0 && ctx->divx_version >= 0) { if (ctx->xvid_build >= 0 && ctx->divx_version >= 0) {
...@@ -2085,7 +2085,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) ...@@ -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 */ 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 && 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"); av_log(s->avctx, AV_LOG_ERROR, "low_delay flag incorrectly, clearing it\n");
s->low_delay = 0; s->low_delay = 0;
} }
...@@ -2276,7 +2276,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) ...@@ -2276,7 +2276,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb)
s->data_partitioning, ctx->resync_marker, s->data_partitioning, ctx->resync_marker,
ctx->num_sprite_warping_points, s->sprite_warping_accuracy, ctx->num_sprite_warping_points, s->sprite_warping_accuracy,
1 - s->no_rounding, s->vo_type, 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_i, ctx->cplx_estimation_trash_p,
ctx->cplx_estimation_trash_b); ctx->cplx_estimation_trash_b);
} }
...@@ -2297,7 +2297,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) ...@@ -2297,7 +2297,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb)
/* detect buggy encoders which don't set the low_delay flag /* detect buggy encoders which don't set the low_delay flag
* (divx4/xvid/opendivx). Note we cannot detect divx5 without b-frames * (divx4/xvid/opendivx). Note we cannot detect divx5 without b-frames
* easily (although it's buggy too) */ * 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) { ctx->divx_version == -1 && s->picture_number == 0) {
av_log(s->avctx, AV_LOG_WARNING, av_log(s->avctx, AV_LOG_WARNING,
"looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n"); "looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag\n");
......
...@@ -518,7 +518,6 @@ typedef struct MpegEncContext { ...@@ -518,7 +518,6 @@ typedef struct MpegEncContext {
int partitioned_frame; ///< is current frame partitioned int partitioned_frame; ///< is current frame partitioned
int low_delay; ///< no reordering needed / has no b-frames int low_delay; ///< no reordering needed / has no b-frames
int vo_type; 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 tex_pb; ///< used for data partitioned VOPs
PutBitContext pb2; ///< used for data partitioned VOPs PutBitContext pb2; ///< used for data partitioned VOPs
int mpeg_quant; int mpeg_quant;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment