diff mbox series

[FFmpeg-devel,v6,1/5] lavc/libopenh264enc: Add qmin/qmax support

Message ID 1588129250-30726-1-git-send-email-linjie.fu@intel.com
State Accepted
Commit 433ece8c8b62e092601ee9580029ba0e6e48ff58
Headers show
Series [FFmpeg-devel,v6,1/5] lavc/libopenh264enc: Add qmin/qmax support | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Fu, Linjie April 29, 2020, 3 a.m. UTC
Clip iMinQp/iMaxQp to (1, 51) for user specified qp range.

If not set, leave iMinQp/iMaxQp untouched and use the values (0, 51)
initialized in FillDefault(), and the QP range would be adjusted to the
defaults inside libopenh264 library according to the iUsageType, (12, 42)
for iUsageType == CAMERA_VIDEO_REAL_TIME which is default.

<https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/encoder_ext.cpp#L375>

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
---
 libavcodec/libopenh264enc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Martin Storsjö April 29, 2020, 8:51 a.m. UTC | #1
On Wed, 29 Apr 2020, Linjie Fu wrote:

> Clip iMinQp/iMaxQp to (1, 51) for user specified qp range.
>
> If not set, leave iMinQp/iMaxQp untouched and use the values (0, 51)
> initialized in FillDefault(), and the QP range would be adjusted to the
> defaults inside libopenh264 library according to the iUsageType, (12, 42)
> for iUsageType == CAMERA_VIDEO_REAL_TIME which is default.
>
> <https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/encoder_ext.cpp#L375>
>
> Signed-off-by: Linjie Fu <linjie.fu@intel.com>
> ---
> libavcodec/libopenh264enc.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)

LGTM

// Martin
Fu, Linjie April 29, 2020, 1:43 p.m. UTC | #2
> From: Martin Storsjö <martin@martin.st>
> Sent: Wednesday, April 29, 2020 16:52
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Cc: Fu, Linjie <linjie.fu@intel.com>
> Subject: Re: [FFmpeg-devel] [PATCH v6 1/5] lavc/libopenh264enc: Add
> qmin/qmax support
> 
> On Wed, 29 Apr 2020, Linjie Fu wrote:
> 
> > Clip iMinQp/iMaxQp to (1, 51) for user specified qp range.
> >
> > If not set, leave iMinQp/iMaxQp untouched and use the values (0, 51)
> > initialized in FillDefault(), and the QP range would be adjusted to the
> > defaults inside libopenh264 library according to the iUsageType, (12, 42)
> > for iUsageType == CAMERA_VIDEO_REAL_TIME which is default.
> >
> >
> <https://github.com/cisco/openh264/blob/master/codec/encoder/core/src/
> encoder_ext.cpp#L375>
> >
> > Signed-off-by: Linjie Fu <linjie.fu@intel.com>
> > ---
> > libavcodec/libopenh264enc.c | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> 
> LGTM
> 
Thanks for your review for the whole set, hope it would be merge soon: )

- Linjie
diff mbox series

Patch

diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
index dd5d4ee..265eb9c 100644
--- a/libavcodec/libopenh264enc.c
+++ b/libavcodec/libopenh264enc.c
@@ -135,6 +135,10 @@  FF_ENABLE_DEPRECATION_WARNINGS
     param.iTargetBitrate             = avctx->bit_rate;
     param.iMaxBitrate                = FFMAX(avctx->rc_max_rate, avctx->bit_rate);
     param.iRCMode                    = RC_QUALITY_MODE;
+    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 +335,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 +354,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",
 };