[FFmpeg-devel] [PATCH] avcodec/libvpxenc: add VP8/9 sharpness config option

James Almer jamrial at gmail.com
Thu Dec 20 00:03:23 EET 2018


On 12/19/2018 6:52 PM, Rene Claus wrote:
> 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 at google.com>
> ---
>  doc/encoders.texi      | 4 ++++
>  libavcodec/libvpxenc.c | 6 ++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/doc/encoders.texi b/doc/encoders.texi
> index ca3892d682..3dd2989526 100644
> --- a/doc/encoders.texi
> +++ b/doc/encoders.texi
> @@ -1767,6 +1767,10 @@ Set number of frames to look ahead for frametype and ratecontrol.
>  @item error-resilient
>  Enable error resiliency features.
>  
> + at item sharpness @var{integer}
> +Set sharpness.
> +The valid range is [0, 7]. Default: 0

I assume 0 means disabled and it would be the same as not setting this
control id at all, right?

Also, if you're going to update the documentation, you should take the
chance to mention this valid range in vp8cx.h

> +
>  @item VP8-specific options
>  @table @option
>  @item ts-parameters
> diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c
> index 39af586790..f9b19a8975 100644
> --- a/libavcodec/libvpxenc.c
> +++ b/libavcodec/libvpxenc.c
> @@ -76,6 +76,7 @@ typedef struct VPxEncoderContext {
>      struct FrameListData *coded_frame_list;
>  
>      int cpu_used;
> +    int sharpness;
>      /**
>       * VP8 specific flags, see VP8F_* below.
>       */
> @@ -130,6 +131,7 @@ static const char *const ctlidstr[] = {
>      [VP8E_SET_TUNING]            = "VP8E_SET_TUNING",
>      [VP8E_SET_CQ_LEVEL]          = "VP8E_SET_CQ_LEVEL",
>      [VP8E_SET_MAX_INTRA_BITRATE_PCT] = "VP8E_SET_MAX_INTRA_BITRATE_PCT",
> +    [VP8E_SET_SHARPNESS]               = "VP8E_SET_SHARPNESS",
>  #if CONFIG_LIBVPX_VP9_ENCODER
>      [VP9E_SET_LOSSLESS]                = "VP9E_SET_LOSSLESS",
>      [VP9E_SET_TILE_COLUMNS]            = "VP9E_SET_TILE_COLUMNS",
> @@ -751,6 +753,9 @@ FF_ENABLE_DEPRECATION_WARNINGS
>          return AVERROR(EINVAL);
>      }
>  
> +    if (ctx->sharpness)
> +        codecctl_int(avctx, VP8E_SET_SHARPNESS, ctx->sharpness);
> +
>      if (CONFIG_LIBVPX_VP8_ENCODER && avctx->codec_id == AV_CODEC_ID_VP8) {
>  #if FF_API_PRIVATE_OPT
>  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_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}, \
> +    { "sharpness", "Sharpness", offsetof(VPxContext, sharpness), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 7, VE},
>  
>  #if CONFIG_LIBVPX_VP8_ENCODER
>  static const AVOption vp8_options[] = {
> 



More information about the ffmpeg-devel mailing list