OSDN Git Service

Fix the incorrect ver-coord for VDENC encoding
authorZhao Yakui <yakui.zhao@intel.com>
Tue, 14 Feb 2017 06:52:40 +0000 (14:52 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Tue, 14 Feb 2017 07:06:37 +0000 (15:06 +0800)
Currently the ver-coord is wrong for VDENC command especially when multi-slices
are used.

Fix the issue #44
https://github.com/01org/intel-vaapi-driver/issues/44

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
src/gen9_vdenc.c

index 82aca83..72ea58d 100644 (file)
@@ -2815,11 +2815,11 @@ gen95_vdenc_vdenc_walker_state(VADriverContextP ctx,
     int luma_log2_weight_denom, weighted_pred_idc;
 
     slice_hor_pos = slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
-    slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
+    slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_width_in_mbs;
 
     if (next_slice_param) {
         next_slice_hor_pos = next_slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
-        next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
+        next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_width_in_mbs;
     } else {
         next_slice_hor_pos = 0;
         next_slice_ver_pos = vdenc_context->frame_height_in_mbs;
@@ -3159,11 +3159,11 @@ gen9_vdenc_mfx_avc_slice_state(VADriverContextP ctx,
         inter_rounding = 3;
 
     slice_hor_pos = slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
-    slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
+    slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_width_in_mbs;
 
     if (next_slice_param) {
         next_slice_hor_pos = next_slice_param->macroblock_address % vdenc_context->frame_width_in_mbs;
-        next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_height_in_mbs;
+        next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_width_in_mbs;
     } else {
         next_slice_hor_pos = 0;
         next_slice_ver_pos = vdenc_context->frame_height_in_mbs;