diff mbox

[FFmpeg-devel,11/26] vaapi_encode: Add common options between all encoders

Message ID 20180422152921.32510-12-sw@jkqxz.net
State Accepted
Commit aa2563aecc0f9f495d581e3072f76e3c59b0fd59
Headers show

Commit Message

Mark Thompson April 22, 2018, 3:29 p.m. UTC
The only common option here is low_power - it was previously supported
for H.264 only, that specific option is removed.
---
 doc/encoders.texi              | 14 ++++++++++++--
 libavcodec/vaapi_encode.h      |  9 +++++++++
 libavcodec/vaapi_encode_h264.c |  8 ++------
 libavcodec/vaapi_encode_h265.c |  2 ++
 libavcodec/vaapi_encode_vp8.c  |  1 +
 libavcodec/vaapi_encode_vp9.c  |  1 +
 6 files changed, 27 insertions(+), 8 deletions(-)

Comments

Jun Zhao April 25, 2018, 1:21 a.m. UTC | #1
2018-04-22 23:29 GMT+08:00 Mark Thompson <sw@jkqxz.net>:
> The only common option here is low_power - it was previously supported
> for H.264 only, that specific option is removed.
> ---
>  doc/encoders.texi              | 14 ++++++++++++--
>  libavcodec/vaapi_encode.h      |  9 +++++++++
>  libavcodec/vaapi_encode_h264.c |  8 ++------
>  libavcodec/vaapi_encode_h265.c |  2 ++
>  libavcodec/vaapi_encode_vp8.c  |  1 +
>  libavcodec/vaapi_encode_vp9.c  |  1 +
>  6 files changed, 27 insertions(+), 8 deletions(-)
>
> diff --git a/doc/encoders.texi b/doc/encoders.texi
> index 16be6359b3..62a1509a96 100644
> --- a/doc/encoders.texi
> +++ b/doc/encoders.texi
> @@ -2599,6 +2599,18 @@ Size / quality tradeoff: higher values are smaller / worse quality.
>  @option{b_qoffset} / @option{b_quant_offset}
>  @end itemize
>
> +All encoders support the following options:
> +@itemize
> +@item
> +@option{low_power}
> +
> +Some drivers/platforms offer a second encoder for some codecs intended to use
> +less power than the default encoder; setting this option will attempt to use
> +that encoder.  Note that it may support a reduced feature set, so some other
> +options may not be available in this mode.
> +@end itemize
> +
> +Each encoder also has its own specific options:
>  @table @option
>
>  @item h264_vaapi
> @@ -2606,8 +2618,6 @@ Size / quality tradeoff: higher values are smaller / worse quality.
>  @option{level} sets the value of @emph{level_idc}.
>
>  @table @option
> -@item low_power
> -Use low-power encoding mode.
>  @item coder
>  Set entropy encoder (default is @emph{cabac}).  Possible values:
>
> diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h
> index 2b909d4d6b..9e0826b30e 100644
> --- a/libavcodec/vaapi_encode.h
> +++ b/libavcodec/vaapi_encode.h
> @@ -300,4 +300,13 @@ int ff_vaapi_encode2(AVCodecContext *avctx, AVPacket *pkt,
>  int ff_vaapi_encode_init(AVCodecContext *avctx);
>  int ff_vaapi_encode_close(AVCodecContext *avctx);
>
> +
> +#define VAAPI_ENCODE_COMMON_OPTIONS \
> +    { "low_power", \
> +      "Use low-power encoding mode (only available on some platforms; " \
> +      "may not support all encoding features)", \
> +      OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \
> +      { .i64 = 0 }, 0, 1, FLAGS }
> +
> +
>  #endif /* AVCODEC_VAAPI_ENCODE_H */
> diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
> index 93dc51eb40..49dc5229b5 100644
> --- a/libavcodec/vaapi_encode_h264.c
> +++ b/libavcodec/vaapi_encode_h264.c
> @@ -52,7 +52,6 @@ typedef struct VAAPIEncodeH264Context {
>      // User options.
>      int qp;
>      int quality;
> -    int low_power;

The patchset other part is Ok for me, but I don't think putting
low_power as common
option is good idea, as I know, low_power mode only supported by few
codec, maybe
only support by AVC/HEVC/VP9 encoder.

>      int coder;
>      int aud;
>      int sei;
> @@ -933,8 +932,6 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx)
>          return AVERROR_PATCHWELCOME;
>      }
>
> -    ctx->low_power = priv->low_power;
> -
>      if (avctx->bit_rate > 0) {
>          if (avctx->rc_max_rate == avctx->bit_rate)
>              ctx->va_rc_mode = VA_RC_CBR;
> @@ -969,13 +966,12 @@ static av_cold int vaapi_encode_h264_close(AVCodecContext *avctx)
>  #define OFFSET(x) offsetof(VAAPIEncodeH264Context, x)
>  #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
>  static const AVOption vaapi_encode_h264_options[] = {
> +    VAAPI_ENCODE_COMMON_OPTIONS,
> +
>      { "qp", "Constant QP (for P-frames; scaled by qfactor/qoffset for I/B)",
>        OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 20 }, 0, 52, FLAGS },
>      { "quality", "Set encode quality (trades off against speed, higher is faster)",
>        OFFSET(quality), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 8, FLAGS },
> -    { "low_power", "Use low-power encoding mode (experimental: only supported "
> -      "on some platforms, does not support all features)",
> -      OFFSET(low_power), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
>      { "coder", "Entropy coder type",
>        OFFSET(coder), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, FLAGS, "coder" },
>          { "cavlc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, FLAGS, "coder" },
> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
> index e01bdcf6b4..a818650811 100644
> --- a/libavcodec/vaapi_encode_h265.c
> +++ b/libavcodec/vaapi_encode_h265.c
> @@ -954,6 +954,8 @@ static av_cold int vaapi_encode_h265_close(AVCodecContext *avctx)
>  #define OFFSET(x) offsetof(VAAPIEncodeH265Context, x)
>  #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
>  static const AVOption vaapi_encode_h265_options[] = {
> +    VAAPI_ENCODE_COMMON_OPTIONS,
> +
>      { "qp", "Constant QP (for P-frames; scaled by qfactor/qoffset for I/B)",
>        OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 25 }, 0, 52, FLAGS },
>
> diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c
> index 2191e00ef4..d9c359a4e1 100644
> --- a/libavcodec/vaapi_encode_vp8.c
> +++ b/libavcodec/vaapi_encode_vp8.c
> @@ -226,6 +226,7 @@ static av_cold int vaapi_encode_vp8_init(AVCodecContext *avctx)
>  #define OFFSET(x) offsetof(VAAPIEncodeVP8Context, x)
>  #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
>  static const AVOption vaapi_encode_vp8_options[] = {
> +    VAAPI_ENCODE_COMMON_OPTIONS,
>      { "loop_filter_level", "Loop filter level",
>        OFFSET(loop_filter_level), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 63, FLAGS },
>      { "loop_filter_sharpness", "Loop filter sharpness",
> diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c
> index 8091ae87e9..eabacbd0fd 100644
> --- a/libavcodec/vaapi_encode_vp9.c
> +++ b/libavcodec/vaapi_encode_vp9.c
> @@ -251,6 +251,7 @@ static av_cold int vaapi_encode_vp9_init(AVCodecContext *avctx)
>  #define OFFSET(x) offsetof(VAAPIEncodeVP9Context, x)
>  #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
>  static const AVOption vaapi_encode_vp9_options[] = {
> +    VAAPI_ENCODE_COMMON_OPTIONS,
>      { "loop_filter_level", "Loop filter level",
>        OFFSET(loop_filter_level), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 63, FLAGS },
>      { "loop_filter_sharpness", "Loop filter sharpness",
> --
> 2.16.3
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Mark Thompson April 25, 2018, 9:58 p.m. UTC | #2
On 25/04/18 02:21, Zhao Jun wrote:
> 2018-04-22 23:29 GMT+08:00 Mark Thompson <sw@jkqxz.net>:
>> The only common option here is low_power - it was previously supported
>> for H.264 only, that specific option is removed.
>> ---
>>  doc/encoders.texi              | 14 ++++++++++++--
>>  libavcodec/vaapi_encode.h      |  9 +++++++++
>>  libavcodec/vaapi_encode_h264.c |  8 ++------
>>  libavcodec/vaapi_encode_h265.c |  2 ++
>>  libavcodec/vaapi_encode_vp8.c  |  1 +
>>  libavcodec/vaapi_encode_vp9.c  |  1 +
>>  6 files changed, 27 insertions(+), 8 deletions(-)
>>
>> diff --git a/doc/encoders.texi b/doc/encoders.texi
>> index 16be6359b3..62a1509a96 100644
>> --- a/doc/encoders.texi
>> +++ b/doc/encoders.texi
>> @@ -2599,6 +2599,18 @@ Size / quality tradeoff: higher values are smaller / worse quality.
>>  @option{b_qoffset} / @option{b_quant_offset}
>>  @end itemize
>>
>> +All encoders support the following options:
>> +@itemize
>> +@item
>> +@option{low_power}
>> +
>> +Some drivers/platforms offer a second encoder for some codecs intended to use
>> +less power than the default encoder; setting this option will attempt to use
>> +that encoder.  Note that it may support a reduced feature set, so some other
>> +options may not be available in this mode.
>> +@end itemize
>> +
>> +Each encoder also has its own specific options:
>>  @table @option
>>
>>  @item h264_vaapi
>> @@ -2606,8 +2618,6 @@ Size / quality tradeoff: higher values are smaller / worse quality.
>>  @option{level} sets the value of @emph{level_idc}.
>>
>>  @table @option
>> -@item low_power
>> -Use low-power encoding mode.
>>  @item coder
>>  Set entropy encoder (default is @emph{cabac}).  Possible values:
>>
>> diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h
>> index 2b909d4d6b..9e0826b30e 100644
>> --- a/libavcodec/vaapi_encode.h
>> +++ b/libavcodec/vaapi_encode.h
>> @@ -300,4 +300,13 @@ int ff_vaapi_encode2(AVCodecContext *avctx, AVPacket *pkt,
>>  int ff_vaapi_encode_init(AVCodecContext *avctx);
>>  int ff_vaapi_encode_close(AVCodecContext *avctx);
>>
>> +
>> +#define VAAPI_ENCODE_COMMON_OPTIONS \
>> +    { "low_power", \
>> +      "Use low-power encoding mode (only available on some platforms; " \
>> +      "may not support all encoding features)", \
>> +      OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \
>> +      { .i64 = 0 }, 0, 1, FLAGS }
>> +
>> +
>>  #endif /* AVCODEC_VAAPI_ENCODE_H */
>> diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
>> index 93dc51eb40..49dc5229b5 100644
>> --- a/libavcodec/vaapi_encode_h264.c
>> +++ b/libavcodec/vaapi_encode_h264.c
>> @@ -52,7 +52,6 @@ typedef struct VAAPIEncodeH264Context {
>>      // User options.
>>      int qp;
>>      int quality;
>> -    int low_power;
> 
> The patchset other part is Ok for me, but I don't think putting
> low_power as common
> option is good idea, as I know, low_power mode only supported by few
> codec, maybe
> only support by AVC/HEVC/VP9 encoder.

That is just what is supported on the i965 driver on Cannonlake at the moment, right?  There isn't anything stopping it being supported for other codecs in any driver, and since we query the entrypoints at runtime the behaviour if it isn't there is just the same as if run on the i965 driver with an Intel chip not supporting VDENC for H.264.

- Mark
Xiang, Haihao May 25, 2018, 6:01 a.m. UTC | #3
Hi Mark

Do you plan to merge this commit any time soon?

Thanks
Haihao


> On 25/04/18 02:21, Zhao Jun wrote:

> > 2018-04-22 23:29 GMT+08:00 Mark Thompson <sw@jkqxz.net>:

> > > The only common option here is low_power - it was previously supported

> > > for H.264 only, that specific option is removed.

> > > ---

> > >  doc/encoders.texi              | 14 ++++++++++++--

> > >  libavcodec/vaapi_encode.h      |  9 +++++++++

> > >  libavcodec/vaapi_encode_h264.c |  8 ++------

> > >  libavcodec/vaapi_encode_h265.c |  2 ++

> > >  libavcodec/vaapi_encode_vp8.c  |  1 +

> > >  libavcodec/vaapi_encode_vp9.c  |  1 +

> > >  6 files changed, 27 insertions(+), 8 deletions(-)

> > > 

> > > diff --git a/doc/encoders.texi b/doc/encoders.texi

> > > index 16be6359b3..62a1509a96 100644

> > > --- a/doc/encoders.texi

> > > +++ b/doc/encoders.texi

> > > @@ -2599,6 +2599,18 @@ Size / quality tradeoff: higher values are smaller

> > > / worse quality.

> > >  @option{b_qoffset} / @option{b_quant_offset}

> > >  @end itemize

> > > 

> > > +All encoders support the following options:

> > > +@itemize

> > > +@item

> > > +@option{low_power}

> > > +

> > > +Some drivers/platforms offer a second encoder for some codecs intended to

> > > use

> > > +less power than the default encoder; setting this option will attempt to

> > > use

> > > +that encoder.  Note that it may support a reduced feature set, so some

> > > other

> > > +options may not be available in this mode.

> > > +@end itemize

> > > +

> > > +Each encoder also has its own specific options:

> > >  @table @option

> > > 

> > >  @item h264_vaapi

> > > @@ -2606,8 +2618,6 @@ Size / quality tradeoff: higher values are smaller /

> > > worse quality.

> > >  @option{level} sets the value of @emph{level_idc}.

> > > 

> > >  @table @option

> > > -@item low_power

> > > -Use low-power encoding mode.

> > >  @item coder

> > >  Set entropy encoder (default is @emph{cabac}).  Possible values:

> > > 

> > > diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h

> > > index 2b909d4d6b..9e0826b30e 100644

> > > --- a/libavcodec/vaapi_encode.h

> > > +++ b/libavcodec/vaapi_encode.h

> > > @@ -300,4 +300,13 @@ int ff_vaapi_encode2(AVCodecContext *avctx, AVPacket

> > > *pkt,

> > >  int ff_vaapi_encode_init(AVCodecContext *avctx);

> > >  int ff_vaapi_encode_close(AVCodecContext *avctx);

> > > 

> > > +

> > > +#define VAAPI_ENCODE_COMMON_OPTIONS \

> > > +    { "low_power", \

> > > +      "Use low-power encoding mode (only available on some platforms; " \

> > > +      "may not support all encoding features)", \

> > > +      OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \

> > > +      { .i64 = 0 }, 0, 1, FLAGS }

> > > +

> > > +

> > >  #endif /* AVCODEC_VAAPI_ENCODE_H */

> > > diff --git a/libavcodec/vaapi_encode_h264.c

> > > b/libavcodec/vaapi_encode_h264.c

> > > index 93dc51eb40..49dc5229b5 100644

> > > --- a/libavcodec/vaapi_encode_h264.c

> > > +++ b/libavcodec/vaapi_encode_h264.c

> > > @@ -52,7 +52,6 @@ typedef struct VAAPIEncodeH264Context {

> > >      // User options.

> > >      int qp;

> > >      int quality;

> > > -    int low_power;

> > 

> > The patchset other part is Ok for me, but I don't think putting

> > low_power as common

> > option is good idea, as I know, low_power mode only supported by few

> > codec, maybe

> > only support by AVC/HEVC/VP9 encoder.

> 

> That is just what is supported on the i965 driver on Cannonlake at the moment,

> right?  There isn't anything stopping it being supported for other codecs in

> any driver, and since we query the entrypoints at runtime the behaviour if it

> isn't there is just the same as if run on the i965 driver with an Intel chip

> not supporting VDENC for H.264.

> 

> - Mark

> _______________________________________________

> ffmpeg-devel mailing list

> ffmpeg-devel@ffmpeg.org

> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Mark Thompson May 26, 2018, 4:26 p.m. UTC | #4
On 25/05/18 07:01, Xiang, Haihao wrote:
> 
> Hi Mark
> 
> Do you plan to merge this commit any time soon?

There are quite a few changes throughout the set, I'll resend it soon.

- Mark
Xiang, Haihao June 7, 2018, 4:13 a.m. UTC | #5
On Sat, 2018-05-26 at 17:26 +0100, Mark Thompson wrote:
> On 25/05/18 07:01, Xiang, Haihao wrote:

> > 

> > Hi Mark

> > 

> > Do you plan to merge this commit any time soon?

> 

> There are quite a few changes throughout the set, I'll resend it soon.

> 


Thanks for your reply, I'd like to give a try with your new patchset.

Thanks
Haihao
diff mbox

Patch

diff --git a/doc/encoders.texi b/doc/encoders.texi
index 16be6359b3..62a1509a96 100644
--- a/doc/encoders.texi
+++ b/doc/encoders.texi
@@ -2599,6 +2599,18 @@  Size / quality tradeoff: higher values are smaller / worse quality.
 @option{b_qoffset} / @option{b_quant_offset}
 @end itemize
 
+All encoders support the following options:
+@itemize
+@item
+@option{low_power}
+
+Some drivers/platforms offer a second encoder for some codecs intended to use
+less power than the default encoder; setting this option will attempt to use
+that encoder.  Note that it may support a reduced feature set, so some other
+options may not be available in this mode.
+@end itemize
+
+Each encoder also has its own specific options:
 @table @option
 
 @item h264_vaapi
@@ -2606,8 +2618,6 @@  Size / quality tradeoff: higher values are smaller / worse quality.
 @option{level} sets the value of @emph{level_idc}.
 
 @table @option
-@item low_power
-Use low-power encoding mode.
 @item coder
 Set entropy encoder (default is @emph{cabac}).  Possible values:
 
diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h
index 2b909d4d6b..9e0826b30e 100644
--- a/libavcodec/vaapi_encode.h
+++ b/libavcodec/vaapi_encode.h
@@ -300,4 +300,13 @@  int ff_vaapi_encode2(AVCodecContext *avctx, AVPacket *pkt,
 int ff_vaapi_encode_init(AVCodecContext *avctx);
 int ff_vaapi_encode_close(AVCodecContext *avctx);
 
+
+#define VAAPI_ENCODE_COMMON_OPTIONS \
+    { "low_power", \
+      "Use low-power encoding mode (only available on some platforms; " \
+      "may not support all encoding features)", \
+      OFFSET(common.low_power), AV_OPT_TYPE_BOOL, \
+      { .i64 = 0 }, 0, 1, FLAGS }
+
+
 #endif /* AVCODEC_VAAPI_ENCODE_H */
diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
index 93dc51eb40..49dc5229b5 100644
--- a/libavcodec/vaapi_encode_h264.c
+++ b/libavcodec/vaapi_encode_h264.c
@@ -52,7 +52,6 @@  typedef struct VAAPIEncodeH264Context {
     // User options.
     int qp;
     int quality;
-    int low_power;
     int coder;
     int aud;
     int sei;
@@ -933,8 +932,6 @@  static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx)
         return AVERROR_PATCHWELCOME;
     }
 
-    ctx->low_power = priv->low_power;
-
     if (avctx->bit_rate > 0) {
         if (avctx->rc_max_rate == avctx->bit_rate)
             ctx->va_rc_mode = VA_RC_CBR;
@@ -969,13 +966,12 @@  static av_cold int vaapi_encode_h264_close(AVCodecContext *avctx)
 #define OFFSET(x) offsetof(VAAPIEncodeH264Context, x)
 #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
 static const AVOption vaapi_encode_h264_options[] = {
+    VAAPI_ENCODE_COMMON_OPTIONS,
+
     { "qp", "Constant QP (for P-frames; scaled by qfactor/qoffset for I/B)",
       OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 20 }, 0, 52, FLAGS },
     { "quality", "Set encode quality (trades off against speed, higher is faster)",
       OFFSET(quality), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 8, FLAGS },
-    { "low_power", "Use low-power encoding mode (experimental: only supported "
-      "on some platforms, does not support all features)",
-      OFFSET(low_power), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS },
     { "coder", "Entropy coder type",
       OFFSET(coder), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, FLAGS, "coder" },
         { "cavlc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, FLAGS, "coder" },
diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
index e01bdcf6b4..a818650811 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -954,6 +954,8 @@  static av_cold int vaapi_encode_h265_close(AVCodecContext *avctx)
 #define OFFSET(x) offsetof(VAAPIEncodeH265Context, x)
 #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
 static const AVOption vaapi_encode_h265_options[] = {
+    VAAPI_ENCODE_COMMON_OPTIONS,
+
     { "qp", "Constant QP (for P-frames; scaled by qfactor/qoffset for I/B)",
       OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 25 }, 0, 52, FLAGS },
 
diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c
index 2191e00ef4..d9c359a4e1 100644
--- a/libavcodec/vaapi_encode_vp8.c
+++ b/libavcodec/vaapi_encode_vp8.c
@@ -226,6 +226,7 @@  static av_cold int vaapi_encode_vp8_init(AVCodecContext *avctx)
 #define OFFSET(x) offsetof(VAAPIEncodeVP8Context, x)
 #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
 static const AVOption vaapi_encode_vp8_options[] = {
+    VAAPI_ENCODE_COMMON_OPTIONS,
     { "loop_filter_level", "Loop filter level",
       OFFSET(loop_filter_level), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 63, FLAGS },
     { "loop_filter_sharpness", "Loop filter sharpness",
diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c
index 8091ae87e9..eabacbd0fd 100644
--- a/libavcodec/vaapi_encode_vp9.c
+++ b/libavcodec/vaapi_encode_vp9.c
@@ -251,6 +251,7 @@  static av_cold int vaapi_encode_vp9_init(AVCodecContext *avctx)
 #define OFFSET(x) offsetof(VAAPIEncodeVP9Context, x)
 #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
 static const AVOption vaapi_encode_vp9_options[] = {
+    VAAPI_ENCODE_COMMON_OPTIONS,
     { "loop_filter_level", "Loop filter level",
       OFFSET(loop_filter_level), AV_OPT_TYPE_INT, { .i64 = 16 }, 0, 63, FLAGS },
     { "loop_filter_sharpness", "Loop filter sharpness",