[FFmpeg-devel] [PATCH v6 2/5] lavc/libopenh264enc: add default gop size and bit rate
Martin Storsjö
martin at martin.st
Wed Apr 29 11:52:09 EEST 2020
On Wed, 29 Apr 2020, Linjie Fu wrote:
> It would be 200kbps bitrate with gop size = 12 by default
> which generated too many IDR frames in rather low bit rate.
> The quality would be poor.
>
> Set these default values to -1 to check whether it's specified
> by user explicitly.
>
> Use 2Mbps bitrate as nvenc sugguested, and leave gop size
> untouched in libopenh264.
>
> Signed-off-by: Linjie Fu <linjie.fu at intel.com>
> ---
> libavcodec/libopenh264enc.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c
> index 265eb9c..245752d 100644
> --- a/libavcodec/libopenh264enc.c
> +++ b/libavcodec/libopenh264enc.c
> @@ -37,6 +37,8 @@
> #define SM_SIZELIMITED_SLICE SM_DYN_SLICE
> #endif
>
> +#define TARGET_BITRATE_DEFAULT 2*1000*1000
> +
> typedef struct SVCContext {
> const AVClass *av_class;
> ISVCEncoder *encoder;
> @@ -132,7 +134,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
> param.fMaxFrameRate = 1/av_q2d(avctx->time_base);
> param.iPicWidth = avctx->width;
> param.iPicHeight = avctx->height;
> - param.iTargetBitrate = avctx->bit_rate;
> + param.iTargetBitrate = avctx->bit_rate > 0 ? avctx->bit_rate : TARGET_BITRATE_DEFAULT;
> param.iMaxBitrate = FFMAX(avctx->rc_max_rate, avctx->bit_rate);
> param.iRCMode = RC_QUALITY_MODE;
> if (avctx->qmax >= 0)
> @@ -147,7 +149,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
> param.bEnableFrameSkip = s->skip_frames;
> param.bEnableLongTermReference = 0;
> param.iLtrMarkPeriod = 30;
> - param.uiIntraPeriod = avctx->gop_size;
> + if (avctx->gop_size >= 0)
> + param.uiIntraPeriod = avctx->gop_size;
> #if OPENH264_VER_AT_LEAST(1, 4)
> param.eSpsPpsIdStrategy = CONSTANT_ID;
> #else
> @@ -336,6 +339,8 @@ static int svc_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
> }
>
> static const AVCodecDefault svc_enc_defaults[] = {
> + { "b", "0" },
> + { "g", "-1" },
> { "qmin", "-1" },
> { "qmax", "-1" },
> { NULL },
> --
> 2.7.4
LGTM
// Martin
More information about the ffmpeg-devel
mailing list