mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 02:12:28 +00:00
lavc/libopenh264enc: add default gop size and bit rate
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@intel.com> Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
433ece8c8b
commit
e5f097eca7
@ -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 },
|
||||
|
Loading…
Reference in New Issue
Block a user