Commit 6a8cc869 authored by Rene Claus's avatar Rene Claus Committed by James Zern

avcodec/libvpxenc: add VP8/9 sharpness config option

This commit adds configuration options to libvpxenc.c that can be used to
tune the sharpness parameter for VP8 and VP9.
Signed-off-by: 's avatarRene Claus <rclaus@google.com>
Signed-off-by: 's avatarJames Zern <jzern@google.com>
parent f652c7a4
...@@ -1767,6 +1767,10 @@ Set number of frames to look ahead for frametype and ratecontrol. ...@@ -1767,6 +1767,10 @@ Set number of frames to look ahead for frametype and ratecontrol.
@item error-resilient @item error-resilient
Enable error resiliency features. Enable error resiliency features.
@item sharpness @var{integer}
Increase sharpness at the expense of lower PSNR.
The valid range is [0, 7].
@item VP8-specific options @item VP8-specific options
@table @option @table @option
@item ts-parameters @item ts-parameters
......
...@@ -76,6 +76,7 @@ typedef struct VPxEncoderContext { ...@@ -76,6 +76,7 @@ typedef struct VPxEncoderContext {
struct FrameListData *coded_frame_list; struct FrameListData *coded_frame_list;
int cpu_used; int cpu_used;
int sharpness;
/** /**
* VP8 specific flags, see VP8F_* below. * VP8 specific flags, see VP8F_* below.
*/ */
...@@ -130,6 +131,7 @@ static const char *const ctlidstr[] = { ...@@ -130,6 +131,7 @@ static const char *const ctlidstr[] = {
[VP8E_SET_TUNING] = "VP8E_SET_TUNING", [VP8E_SET_TUNING] = "VP8E_SET_TUNING",
[VP8E_SET_CQ_LEVEL] = "VP8E_SET_CQ_LEVEL", [VP8E_SET_CQ_LEVEL] = "VP8E_SET_CQ_LEVEL",
[VP8E_SET_MAX_INTRA_BITRATE_PCT] = "VP8E_SET_MAX_INTRA_BITRATE_PCT", [VP8E_SET_MAX_INTRA_BITRATE_PCT] = "VP8E_SET_MAX_INTRA_BITRATE_PCT",
[VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS",
#if CONFIG_LIBVPX_VP9_ENCODER #if CONFIG_LIBVPX_VP9_ENCODER
[VP9E_SET_LOSSLESS] = "VP9E_SET_LOSSLESS", [VP9E_SET_LOSSLESS] = "VP9E_SET_LOSSLESS",
[VP9E_SET_TILE_COLUMNS] = "VP9E_SET_TILE_COLUMNS", [VP9E_SET_TILE_COLUMNS] = "VP9E_SET_TILE_COLUMNS",
...@@ -751,6 +753,9 @@ FF_ENABLE_DEPRECATION_WARNINGS ...@@ -751,6 +753,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
if (ctx->sharpness >= 0)
codecctl_int(avctx, VP8E_SET_SHARPNESS, ctx->sharpness);
if (CONFIG_LIBVPX_VP8_ENCODER && avctx->codec_id == AV_CODEC_ID_VP8) { if (CONFIG_LIBVPX_VP8_ENCODER && avctx->codec_id == AV_CODEC_ID_VP8) {
#if FF_API_PRIVATE_OPT #if FF_API_PRIVATE_OPT
FF_DISABLE_DEPRECATION_WARNINGS FF_DISABLE_DEPRECATION_WARNINGS
...@@ -1193,6 +1198,7 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, ...@@ -1193,6 +1198,7 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt,
{"arnr_strength", "altref noise reduction filter strength", offsetof(VPxContext, arnr_strength), AV_OPT_TYPE_INT, {.i64 = 3}, 0, 6, VE}, \ {"arnr_strength", "altref noise reduction filter strength", offsetof(VPxContext, arnr_strength), AV_OPT_TYPE_INT, {.i64 = 3}, 0, 6, VE}, \
{"arnr_type", "altref noise reduction filter type", offsetof(VPxContext, arnr_type), AV_OPT_TYPE_INT, {.i64 = 3}, 1, 3, VE}, \ {"arnr_type", "altref noise reduction filter type", offsetof(VPxContext, arnr_type), AV_OPT_TYPE_INT, {.i64 = 3}, 1, 3, VE}, \
{"rc_lookahead", "Number of frames to look ahead for alternate reference frame selection", offsetof(VPxContext, lag_in_frames), AV_OPT_TYPE_INT, {.i64 = 25}, 0, 25, VE}, \ {"rc_lookahead", "Number of frames to look ahead for alternate reference frame selection", offsetof(VPxContext, lag_in_frames), AV_OPT_TYPE_INT, {.i64 = 25}, 0, 25, VE}, \
{"sharpness", "Increase sharpness at the expense of lower PSNR", offsetof(VPxContext, sharpness), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 7, VE},
#if CONFIG_LIBVPX_VP8_ENCODER #if CONFIG_LIBVPX_VP8_ENCODER
static const AVOption vp8_options[] = { static const AVOption vp8_options[] = {
......
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