OSDN Git Service

Fix typo of variable name
[android-x86/hardware-intel-common-vaapi.git] / src / gen9_vp9_encoder.c
index 8389dde..f44f8ab 100644 (file)
@@ -46,6 +46,7 @@
 #include "vp9_probs.h"
 #include "gen9_vp9_const_def.h"
 
+#define MAX_VP9_ENCODER_FRAMERATE       60
 #define MAX_VP9_ENCODER_SURFACES        64
 
 #define MAX_URB_SIZE                    4096 /* In register */
@@ -306,7 +307,7 @@ gen9_vp9_check_dys_surfaces(VADriverContextP ctx,
      * the expected, it is unnecessary to allocate it again
      */
     if (vp9_surface->dys_frame_width == surface_param->frame_width &&
-        vp9_surface->dys_frame_width == surface_param->frame_width)
+        vp9_surface->dys_frame_height == surface_param->frame_height)
         return VA_STATUS_SUCCESS;
 
     if (vp9_surface->dys_4x_surface_obj) {
@@ -1059,7 +1060,7 @@ void gen9_vp9_set_curbe_brc(VADriverContextP ctx,
         cmd->dw13.init_frame_width   = pic_param->frame_width_src;
         cmd->dw13.init_frame_height   = pic_param->frame_height_src;
 
-        cmd->dw15.min_qp          = 0;
+        cmd->dw15.min_qp          = 1;
         cmd->dw15.max_qp          = 255;
 
         cmd->dw16.cq_level            = 30;
@@ -1108,7 +1109,7 @@ void gen9_vp9_set_curbe_brc(VADriverContextP ctx,
         break;
     }
     case VP9_MEDIA_STATE_BRC_UPDATE: {
-        cmd->dw15.min_qp          = 0;
+        cmd->dw15.min_qp          = 1;
         cmd->dw15.max_qp          = 255;
 
         cmd->dw25.frame_number    = param->frame_number;
@@ -2676,7 +2677,7 @@ gen9_vp9_run_dys_refframes(VADriverContextP ctx,
 
         if (vp9_state->hme_enabled) {
             dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
-            dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
+            dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 4), 16);
             dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
 
             dys_kernel_param.output_width = vp9_state->frame_width_4x;
@@ -3525,49 +3526,49 @@ gen9_init_vfe_scoreboard_vp9(struct i965_gpe_context *gpe_context,
         gpe_context->vfe_desc5.scoreboard0.mask = 0x0F;
         gpe_context->vfe_desc5.scoreboard0.type = 1;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y0 = -1;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE;
+        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y1 = -2;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3;
+        gpe_context->vfe_desc6.scoreboard1.delta_x2 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 3;
 
-        gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1;
+        gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 1;
     } else {
         // Scoreboard 0
-        gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0;
+        gpe_context->vfe_desc6.scoreboard1.delta_x0 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0;
 
         // Scoreboard 1
-        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
-        gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+        gpe_context->vfe_desc6.scoreboard1.delta_y1 = -1;
 
         // Scoreboard 2
-        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1;
-        gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x2 = 1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y2 = -1;
 
         // Scoreboard 3
-        gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
-        gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF;
+        gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+        gpe_context->vfe_desc6.scoreboard1.delta_y3 = -1;
 
         // Scoreboard 4
-        gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF;
-        gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1;
+        gpe_context->vfe_desc7.scoreboard2.delta_x4 = -1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y4 = 1;
 
         // Scoreboard 5
-        gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0;
-        gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0;
+        gpe_context->vfe_desc7.scoreboard2.delta_y5 = -2;
 
         // Scoreboard 6
-        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1;
-        gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
 
         // Scoreboard 7
-        gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF;
-        gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+        gpe_context->vfe_desc7.scoreboard2.delta_x6 = -1;
+        gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
     }
 }
 
@@ -3723,6 +3724,11 @@ gen9_encode_vp9_check_parameter(VADriverContextP ctx,
 
             vp9_state->gop_size = encoder_context->brc.gop_size;
             vp9_state->framerate = encoder_context->brc.framerate[0];
+            if ((vp9_state->framerate.num / vp9_state->framerate.den) > MAX_VP9_ENCODER_FRAMERATE) {
+                vp9_state->framerate.num = MAX_VP9_ENCODER_FRAMERATE * vp9_state->framerate.den;
+                i965_log_info(ctx, "gen9_encode_vp9_check_parameter: Too high frame rate(num: %d, den: %d), max supported is %d fps.\n",
+                              vp9_state->framerate.num, vp9_state->framerate.den, MAX_VP9_ENCODER_FRAMERATE);
+            }
 
             if (encoder_context->rate_control_mode == VA_RC_CBR ||
                 !encoder_context->brc.target_percentage[0]) {