[FFmpeg-devel,v3,05/12] vaapi_encode_vp8: Enable support for more RC modes

Submitted by Mark Thompson on Feb. 10, 2019, 7:46 p.m.

Details

Message ID 20190210194705.3598-5-sw@jkqxz.net
State New
Headers show

Commit Message

Mark Thompson Feb. 10, 2019, 7:46 p.m.
---
 libavcodec/vaapi_encode_vp8.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

Patch hide | download patch | download mbox

diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c
index 166636cd84..ddbe4c9075 100644
--- a/libavcodec/vaapi_encode_vp8.c
+++ b/libavcodec/vaapi_encode_vp8.c
@@ -161,14 +161,15 @@  static int vaapi_encode_vp8_write_quant_table(AVCodecContext *avctx,
 
 static av_cold int vaapi_encode_vp8_configure(AVCodecContext *avctx)
 {
+    VAAPIEncodeContext     *ctx = avctx->priv_data;
     VAAPIEncodeVP8Context *priv = avctx->priv_data;
 
-    priv->q_index_p = av_clip(avctx->global_quality, 0, VP8_MAX_QUANT);
+    priv->q_index_p = av_clip(ctx->rc_quality, 0, VP8_MAX_QUANT);
     if (avctx->i_quant_factor > 0.0)
-        priv->q_index_i = av_clip((avctx->global_quality *
-                                   avctx->i_quant_factor +
-                                   avctx->i_quant_offset) + 0.5,
-                                  0, VP8_MAX_QUANT);
+        priv->q_index_i =
+            av_clip((avctx->i_quant_factor * priv->q_index_p  +
+                     avctx->i_quant_offset) + 0.5,
+                    0, VP8_MAX_QUANT);
     else
         priv->q_index_i = priv->q_index_p;
 
@@ -185,6 +186,8 @@  static const VAAPIEncodeType vaapi_encode_type_vp8 = {
 
     .configure             = &vaapi_encode_vp8_configure,
 
+    .default_quality       = 40,
+
     .sequence_params_size  = sizeof(VAEncSequenceParameterBufferVP8),
     .init_sequence_params  = &vaapi_encode_vp8_init_sequence_params,
 
@@ -215,6 +218,8 @@  static av_cold int vaapi_encode_vp8_init(AVCodecContext *avctx)
 #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM)
 static const AVOption vaapi_encode_vp8_options[] = {
     VAAPI_ENCODE_COMMON_OPTIONS,
+    VAAPI_ENCODE_RC_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",
@@ -226,7 +231,6 @@  static const AVCodecDefault vaapi_encode_vp8_defaults[] = {
     { "b",              "0"   },
     { "bf",             "0"   },
     { "g",              "120" },
-    { "global_quality", "40"  },
     { "qmin",           "-1"  },
     { "qmax",           "-1"  },
     { NULL },