[FFmpeg-devel] [PATCH v5 1/5] lavc/libopenh264enc: Add qmin/qmax support
Linjie Fu
linjie.fu at intel.com
Tue Apr 28 12:15:59 EEST 2020
Clip iMinQp/iMaxQp to (1, 51) if user specified qp range
explicitly since QP = 0 is not well supported currently
in libopenh264, otherwise leave iMinQp/iMaxQp untouched
and use the values initialized in FillDefault().
Note that if iMaxQp/iMinQp equals 0, the QP range would
be adjusted inside libopenh264 with a warning:
Warning:Change QP Range from(0,51) to (12,42)
<https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/encoder_ext.cpp#L375>
<https://github.com/cisco/openh264/issues/3259>
Signed-off-by: Linjie Fu <linjie.fu at intel.com>
---
libavcodec/libopenh264enc.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index dd5d4ee..1b6b53a 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -135,6 +135,11 @@ FF_ENABLE_DEPRECATION_WARNINGS
param.iTargetBitrate = avctx->bit_rate;
param.iMaxBitrate = FFMAX(avctx->rc_max_rate, avctx->bit_rate);
param.iRCMode = RC_QUALITY_MODE;
+ // QP = 0 is not well supported, so clip to (1, 51)
+ if (avctx->qmax >= 0)
+ param.iMaxQp = av_clip(avctx->qmax, 1, 51);
+ if (avctx->qmin >= 0)
+ param.iMinQp = av_clip(avctx->qmin, 1, param.iMaxQp);
param.iTemporalLayerNum = 1;
param.iSpatialLayerNum = 1;
param.bEnableDenoise = 0;
@@ -331,6 +336,12 @@ static int svc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
return 0;
}
+static const AVCodecDefault svc_enc_defaults[] = {
+ { "qmin", "-1" },
+ { "qmax", "-1" },
+ { NULL },
+};
+
AVCodec ff_libopenh264_encoder = {
.name = "libopenh264",
.long_name = NULL_IF_CONFIG_SMALL("OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"),
@@ -344,6 +355,7 @@ AVCodec ff_libopenh264_encoder = {
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
.pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE },
+ .defaults = svc_enc_defaults,
.priv_class = &class,
.wrapper_name = "libopenh264",
};
--
2.7.4
More information about the ffmpeg-devel
mailing list