Commit 9e14a992 authored by Martin Storsjö's avatar Martin Storsjö

libopenh264enc: Add an option for controlling the frame skipping

This allows enabling the frame skipping, which is required for the
encoder to properly hit the target bitrate.
Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent b8deb7c3
...@@ -38,6 +38,7 @@ typedef struct SVCContext { ...@@ -38,6 +38,7 @@ typedef struct SVCContext {
int loopfilter; int loopfilter;
char *profile; char *profile;
int max_nal_size; int max_nal_size;
int skip_frames;
} SVCContext; } SVCContext;
#define OPENH264_VER_AT_LEAST(maj, min) \ #define OPENH264_VER_AT_LEAST(maj, min) \
...@@ -55,6 +56,7 @@ static const AVOption options[] = { ...@@ -55,6 +56,7 @@ static const AVOption options[] = {
{ "loopfilter", "Enable loop filter", OFFSET(loopfilter), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE }, { "loopfilter", "Enable loop filter", OFFSET(loopfilter), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE },
{ "profile", "Set profile restrictions", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE }, { "profile", "Set profile restrictions", OFFSET(profile), AV_OPT_TYPE_STRING, { 0 }, 0, 0, VE },
{ "max_nal_size", "Set maximum NAL size in bytes", OFFSET(max_nal_size), AV_OPT_TYPE_INT, { 0 }, 0, INT_MAX, VE }, { "max_nal_size", "Set maximum NAL size in bytes", OFFSET(max_nal_size), AV_OPT_TYPE_INT, { 0 }, 0, INT_MAX, VE },
{ "allow_skip_frames", "Allow skipping frames to hit the target bitrate", OFFSET(skip_frames), AV_OPT_TYPE_INT, { 0 }, 0, 1, VE },
{ NULL } { NULL }
}; };
...@@ -144,7 +146,7 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) ...@@ -144,7 +146,7 @@ static av_cold int svc_encode_init(AVCodecContext *avctx)
param.bEnableDenoise = 0; param.bEnableDenoise = 0;
param.bEnableBackgroundDetection = 1; param.bEnableBackgroundDetection = 1;
param.bEnableAdaptiveQuant = 1; param.bEnableAdaptiveQuant = 1;
param.bEnableFrameSkip = 0; param.bEnableFrameSkip = s->skip_frames;
param.bEnableLongTermReference = 0; param.bEnableLongTermReference = 0;
param.iLtrMarkPeriod = 30; param.iLtrMarkPeriod = 30;
param.uiIntraPeriod = avctx->gop_size; param.uiIntraPeriod = avctx->gop_size;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment