[FFmpeg-devel] [PATCH v2 3/3] avcodec/libopenh264enc: set iEntropyCodingModeFlag by coder option
Martin Storsjö
martin at martin.st
Fri Jan 14 11:30:35 EET 2022
On Fri, 14 Jan 2022, lance.lmwang at gmail.com wrote:
> From: Limin Wang <lance.lmwang at gmail.com>
>
> 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
>
> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> ---
> libavcodec/libopenh264enc.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
> index 8e27edb..4c0997b 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:
> --
> 1.8.3.1
This looks good to me now I think, thanks!
// Martin
More information about the ffmpeg-devel
mailing list