You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
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: Rene Claus <rclaus@google.com> Signed-off-by: James Zern <jzern@google.com>
This commit is contained in:
@@ -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 {
|
|||||||
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[] = {
|
|||||||
[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
|
|||||||
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,
|
|||||||
{"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[] = {
|
||||||
|
Reference in New Issue
Block a user