OSDN Git Service

Don't compare an array against NULL
[android-x86/hardware-intel-common-vaapi.git] / src / i965_avc_encoder.c
index f63a636..8585734 100644 (file)
@@ -1521,49 +1521,49 @@ gen9_init_vfe_scoreboard_avc(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;
     }
 }
 /*
@@ -7874,7 +7874,8 @@ gen9_avc_update_parameters(VADriverContextP ctx,
     avc_state->pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
 
     if (fei_enabled &&
-        encode_state->misc_param[VAEncMiscParameterTypeFEIFrameControl]) {
+        encode_state->misc_param[VAEncMiscParameterTypeFEIFrameControl][0] &&
+        encode_state->misc_param[VAEncMiscParameterTypeFEIFrameControl][0]->buffer) {
         fei_misc_param = (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeFEIFrameControl][0]->buffer;
         avc_state->fei_framectl_param =
             (VAEncMiscParameterFEIFrameControlH264 *)fei_misc_param->data;
@@ -8676,6 +8677,8 @@ gen9_avc_preenc_update_parameters(VADriverContextP ctx,
             goto error;
         size = frame_mb_nums * FEI_AVC_MV_PREDICTOR_BUFFER_SIZE;
         obj_buffer = BUFFER(stat_param->mv_predictor);
+        if (!obj_buffer)
+            goto error;
         buffer_store = obj_buffer->buffer_store;
         if (buffer_store->bo->size < size)
             goto error;
@@ -8729,7 +8732,7 @@ gen9_avc_preenc_update_parameters(VADriverContextP ctx,
         }
     }
     /* mv data output buffer */
-    if (!stat_param_h264->disable_mv_output) {
+    if (!stat_param_h264->disable_mv_output && obj_buffer_mv) {
         size = frame_mb_nums * FEI_AVC_MV_DATA_BUFFER_SIZE;
         buffer_store = obj_buffer_mv->buffer_store;
         if (buffer_store->bo->size < size)
@@ -8741,7 +8744,7 @@ gen9_avc_preenc_update_parameters(VADriverContextP ctx,
             buffer_store->bo);
     }
     /* statistics output buffer */
-    if (!stat_param_h264->disable_statistics_output) {
+    if (!stat_param_h264->disable_statistics_output && obj_buffer_stat) {
         size = frame_mb_nums * PREENC_AVC_STATISTICS_BUFFER_SIZE;
         buffer_store = obj_buffer_stat->buffer_store;
         if (buffer_store->bo->size < size)
@@ -11234,7 +11237,9 @@ gen9_avc_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *en
         avc_state->kernel_trellis_enable = 1;
         avc_state->lambda_table_enable = 1;
         avc_state->brc_split_enable = 1;
-        avc_state->adaptive_transform_decision_enable = 1;// CNL
+
+        if (IS_GEN10(i965->intel.device_info))
+            avc_state->adaptive_transform_decision_enable = 1;// CNL
     }
 
     avc_state->num_refs[0] = 0;