hardware/intel/intel-driver
Revision | b6bbb961364dbc24144e188796140e53bd4da5b4 (tree) |
---|---|
Time | 2014-12-14 01:42:17 |
Author | Xiang, Haihao <haihao.xiang@inte...> |
Commiter | Xiang, Haihao |
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)
@@ -556,7 +556,7 @@ gen9_vme_fill_vme_batchbuffer(VADriverContextP ctx, | ||
556 | 556 | |
557 | 557 | /*inline data */ |
558 | 558 | *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)); | |
560 | 560 | |
561 | 561 | *command_ptr++ = CMD_MEDIA_STATE_FLUSH; |
562 | 562 | *command_ptr++ = 0; |
@@ -602,13 +602,18 @@ static void gen9_vme_pipeline_programing(VADriverContextP ctx, | ||
602 | 602 | int kernel_shader; |
603 | 603 | bool allow_hwscore = true; |
604 | 604 | 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 | + } | |
612 | 617 | } |
613 | 618 | |
614 | 619 | if ((pSliceParameter->slice_type == SLICE_TYPE_I) || |