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

Rene Claus rclaus at google.com
Thu Dec 20 00:41:36 EET 2018


Yes, setting it to zero is the same as not setting it at all.
I'll look into updating vp8cx.h

On Wed, Dec 19, 2018 at 2:03 PM James Almer <jamrial at gmail.com> wrote:

> 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[] = {
> >
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list