From 5e85fd9f9c2c16dd70db889f5b5473fff271cd09 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Mon, 12 Sep 2011 15:55:34 -0400 Subject: [PATCH] libx264: fix overwriting presets with flags2 This fixes overwriting x264 preset settings for flags2 based options. See https://ffmpeg.org/trac/ffmpeg/ticket/448 --- libavcodec/libx264.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index e1096bba17..946f674ade 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -358,16 +358,18 @@ static av_cold int X264_init(AVCodecContext *avctx) if (avctx->partitions & X264_PART_B8X8) x4->params.analyse.inter |= X264_ANALYSE_BSUB16x16; } - x4->params.analyse.b_ssim = avctx->flags2 & CODEC_FLAG2_SSIM; - x4->params.b_intra_refresh = avctx->flags2 & CODEC_FLAG2_INTRA_REFRESH; - x4->params.i_bframe_pyramid = avctx->flags2 & CODEC_FLAG2_BPYRAMID ? X264_B_PYRAMID_NORMAL : X264_B_PYRAMID_NONE; - x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED; - x4->params.analyse.b_mixed_references = avctx->flags2 & CODEC_FLAG2_MIXED_REFS; - x4->params.analyse.b_transform_8x8 = avctx->flags2 & CODEC_FLAG2_8X8DCT; - x4->params.analyse.b_fast_pskip = avctx->flags2 & CODEC_FLAG2_FASTPSKIP; - x4->params.b_aud = avctx->flags2 & CODEC_FLAG2_AUD; - x4->params.analyse.b_psy = avctx->flags2 & CODEC_FLAG2_PSY; - x4->params.rc.b_mb_tree = !!(avctx->flags2 & CODEC_FLAG2_MBTREE); + if (avctx->flags2) { + x4->params.analyse.b_ssim = avctx->flags2 & CODEC_FLAG2_SSIM; + x4->params.b_intra_refresh = avctx->flags2 & CODEC_FLAG2_INTRA_REFRESH; + x4->params.i_bframe_pyramid = avctx->flags2 & CODEC_FLAG2_BPYRAMID ? X264_B_PYRAMID_NORMAL : X264_B_PYRAMID_NONE; + x4->params.analyse.b_weighted_bipred = avctx->flags2 & CODEC_FLAG2_WPRED; + x4->params.analyse.b_mixed_references = avctx->flags2 & CODEC_FLAG2_MIXED_REFS; + x4->params.analyse.b_transform_8x8 = avctx->flags2 & CODEC_FLAG2_8X8DCT; + x4->params.analyse.b_fast_pskip = avctx->flags2 & CODEC_FLAG2_FASTPSKIP; + x4->params.b_aud = avctx->flags2 & CODEC_FLAG2_AUD; + x4->params.analyse.b_psy = avctx->flags2 & CODEC_FLAG2_PSY; + x4->params.rc.b_mb_tree = !!(avctx->flags2 & CODEC_FLAG2_MBTREE); + } #endif if (avctx->me_method == ME_EPZS) @@ -578,6 +580,7 @@ static const AVClass class = { static const AVCodecDefault x264_defaults[] = { { "b", "0" }, { "bf", "-1" }, + { "flags2", "0" }, { "g", "-1" }, { "qmin", "-1" }, { "qmax", "-1" },