• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

hardware/intel/intel-driver


Commit MetaInfo

Revisionb6bbb961364dbc24144e188796140e53bd4da5b4 (tree)
Time2014-12-14 01:42:17
AuthorXiang, Haihao <haihao.xiang@inte...>
CommiterXiang, Haihao

Log Message

Add support for quality level for H.264 encoding on SKL

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
(cherry picked from commit 422be2d36a6ef35bd886947717e969e3cf1d4101)

Change Summary

Incremental Difference

--- a/src/gen9_vme.c
+++ b/src/gen9_vme.c
@@ -556,7 +556,7 @@ gen9_vme_fill_vme_batchbuffer(VADriverContextP ctx,
556556
557557 /*inline data */
558558 *command_ptr++ = (mb_width << 16 | mb_y << 8 | mb_x);
559- *command_ptr++ = ( (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
559+ *command_ptr++ = ((encoder_context->quality_level << 24) | (1 << 16) | transform_8x8_mode_flag | (mb_intra_ub << 8));
560560
561561 *command_ptr++ = CMD_MEDIA_STATE_FLUSH;
562562 *command_ptr++ = 0;
@@ -602,13 +602,18 @@ static void gen9_vme_pipeline_programing(VADriverContextP ctx,
602602 int kernel_shader;
603603 bool allow_hwscore = true;
604604 int s;
605-
606- for (s = 0; s < encode_state->num_slice_params_ext; s++) {
607- pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
608- if ((pSliceParameter->macroblock_address % width_in_mbs)) {
609- allow_hwscore = false;
610- break;
611- }
605+ unsigned int is_low_quality = (encoder_context->quality_level == ENCODER_LOW_QUALITY);
606+
607+ if (is_low_quality)
608+ allow_hwscore = false;
609+ else {
610+ for (s = 0; s < encode_state->num_slice_params_ext; s++) {
611+ pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[s]->buffer;
612+ if ((pSliceParameter->macroblock_address % width_in_mbs)) {
613+ allow_hwscore = false;
614+ break;
615+ }
616+ }
612617 }
613618
614619 if ((pSliceParameter->slice_type == SLICE_TYPE_I) ||