[Libva] [PATCH libva-intel-driver 08/18] Encoding: Pass the qp parameter into VME shader on Ivybridge
Zhao, Yakui
yakui.zhao at intel.com
Mon Jan 12 05:01:31 PST 2015
From: Zhao Yakui <yakui.zhao at intel.com>
Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
---
src/gen7_vme.c | 12 +++++++++++-
src/shaders/vme/vme7.inc | 1 +
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/gen7_vme.c b/src/gen7_vme.c
index 8f57e01..ca884bd 100644
--- a/src/gen7_vme.c
+++ b/src/gen7_vme.c
@@ -487,7 +487,16 @@ gen7_vme_fill_vme_batchbuffer(VADriverContextP ctx,
int mb_x = 0, mb_y = 0;
int i, s, j;
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;
dri_bo_map(vme_context->vme_batchbuffer.bo, 1);
command_ptr = vme_context->vme_batchbuffer.bo->virtual;
@@ -537,7 +546,7 @@ gen7_vme_fill_vme_batchbuffer(VADriverContextP ctx,
mb_intra_ub &= ~(INTRA_PRED_AVAIL_FLAG_D);
}
- *command_ptr++ = (CMD_MEDIA_OBJECT | (8 - 2));
+ *command_ptr++ = (CMD_MEDIA_OBJECT | (9 - 2));
*command_ptr++ = kernel;
*command_ptr++ = 0;
*command_ptr++ = 0;
@@ -548,6 +557,7 @@ gen7_vme_fill_vme_batchbuffer(VADriverContextP ctx,
*command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
*command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
+ *command_ptr++ = qp;
i += 1;
}
diff --git a/src/shaders/vme/vme7.inc b/src/shaders/vme/vme7.inc
index e9d5864..38b4faa 100644
--- a/src/shaders/vme/vme7.inc
+++ b/src/shaders/vme/vme7.inc
@@ -136,6 +136,7 @@ define(`input_mb_intra_ub', `inline_reg0.5')
define(`num_macroblocks', `inline_reg0.6')
define(`quality_level_ub', `inline_reg0.7')
+define(`qp_ub', `inline_reg0.8')
/*
* GRF 6~11 -- reserved
*/
--
1.7.10.1
More information about the Libva
mailing list