From edd305ed54dd3e16f2edc3ad150178483e67b78a Mon Sep 17 00:00:00 2001 From: Limin Wang Date: Fri, 14 Jan 2022 17:48:54 +0800 Subject: [PATCH] avcodec/libopenh264enc: set iEntropyCodingModeFlag by coder option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For high/main profile, user can choose to use cavlc by specify "-coder cavlc", for default, it'll will use cabac, if it's baseline, we'll use cavlc by specs anyway. ffmpeg -y -f lavfi -i testsrc -c:v libopenh264 -profile:v main -coder cavlc -frames:v 1 -bsf trace_headers -f null - before the patch: entropy_coding_mode_flag 0 = 1 after the patch: entropy_coding_mode_flag 0 = 0 Reviewed-by: Martin Storsjö Signed-off-by: Limin Wang --- libavcodec/libopenh264enc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index eb18046456..7c0501a2eb 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -193,7 +193,7 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) #endif param.bPrefixNalAddingCtrl = 0; param.iLoopFilterDisableIdc = !s->loopfilter; - param.iEntropyCodingModeFlag = 0; + param.iEntropyCodingModeFlag = s->coder >= 0 ? s->coder : 1; param.iMultipleThreadIdc = avctx->thread_count; /* Allow specifying the libopenh264 profile through AVCodecContext. */ @@ -221,14 +221,14 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) switch (s->profile) { case FF_PROFILE_H264_HIGH: - param.iEntropyCodingModeFlag = 1; - av_log(avctx, AV_LOG_VERBOSE, "Using CABAC, " - "select EProfileIdc PRO_HIGH in libopenh264.\n"); + av_log(avctx, AV_LOG_VERBOSE, "Using %s, " + "select EProfileIdc PRO_HIGH in libopenh264.\n", + param.iEntropyCodingModeFlag ? "CABAC" : "CAVLC"); break; case FF_PROFILE_H264_MAIN: - param.iEntropyCodingModeFlag = 1; - av_log(avctx, AV_LOG_VERBOSE, "Using CABAC, " - "select EProfileIdc PRO_MAIN in libopenh264.\n"); + av_log(avctx, AV_LOG_VERBOSE, "Using %s, " + "select EProfileIdc PRO_MAIN in libopenh264.\n", + param.iEntropyCodingModeFlag ? "CABAC" : "CAVLC"); break; case FF_PROFILE_H264_CONSTRAINED_BASELINE: case FF_PROFILE_UNKNOWN: