From: Zhao Yakui <[email protected]>

Signed-off-by: Zhao Yakui <[email protected]>
---
 src/gen6_mfc_common.c |   18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c
index a44d328..625f7a0 100644
--- a/src/gen6_mfc_common.c
+++ b/src/gen6_mfc_common.c
@@ -1003,6 +1003,16 @@ gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP 
ctx,
     int mb_row;
     int s;
     unsigned int *command_ptr;
+    struct gen6_mfc_context *mfc_context = encoder_context->mfc_context;
+    VAEncPictureParameterBufferH264 *pic_param = 
(VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer;
+    VAEncSliceParameterBufferH264 *slice_param = 
(VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer;
+    int qp;
+    int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type);
+
+    if (encoder_context->rate_control_mode == VA_RC_CQP)
+        qp = pic_param->pic_init_qp + slice_param->slice_qp_delta;
+    else
+        qp = mfc_context->bit_rate_control_context[slice_type].QpPrimeY;
 
 #define                USE_SCOREBOARD          (1 << 21)
  
@@ -1042,7 +1052,7 @@ gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
                     }
                }
                                                        
-               *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
+               *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
                *command_ptr++ = kernel;
                *command_ptr++ = USE_SCOREBOARD;
                /* Indirect data */
@@ -1053,6 +1063,8 @@ gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
                /*inline data */
                *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
                *command_ptr++ = ((1 << 18) | (1 << 16) | 
transform_8x8_mode_flag | (mb_intra_ub << 8));
+                /* qp occupies one byte */
+                *command_ptr++ = qp;
                x_inner -= 2;
                y_inner += 1;
            }
@@ -1086,7 +1098,7 @@ gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
                     }
                }
 
-               *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
+               *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
                *command_ptr++ = kernel;
                *command_ptr++ = USE_SCOREBOARD;
                /* Indirect data */
@@ -1097,6 +1109,8 @@ gen7_vme_walker_fill_vme_batchbuffer(VADriverContextP ctx,
                /*inline data */
                *command_ptr++ = (mb_width << 16 | y_inner << 8 | x_inner);
                *command_ptr++ = ((1 << 18) | (1 << 16) | 
transform_8x8_mode_flag | (mb_intra_ub << 8));
+                /* qp occupies one byte */
+                *command_ptr++ = qp;
 
                x_inner -= 2;
                y_inner += 1;
-- 
1.7.10.1

_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to