From: "Zhao, Yakui" <[email protected]> Now the corresponding structures/slice_header data will be handled by the upper-layer. So the corresponding definition in driver looks redundant.
Signed-off-by: Zhao, Yakui <[email protected]> --- src/gen6_mfc_common.c | 56 +++++++++---------------------------------- src/i965_encoder_utils.c | 62 ------------------------------------------------ src/i965_encoder_utils.h | 10 -------- 3 files changed, 11 insertions(+), 117 deletions(-) diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c index 8eea8a2..c983293 100644 --- a/src/gen6_mfc_common.c +++ b/src/gen6_mfc_common.c @@ -1577,51 +1577,17 @@ void intel_avc_slice_insert_packed_data(VADriverContextP ctx, VAEncSliceParameterBufferH264 *pSliceParameter = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer; /* No slice header data is passed. And the driver needs to generate it */ - if (encoder_context->codec == CODEC_H264_MVC) { - VAEncSequenceParameterBufferH264_MVC *mvc_seq_param = (VAEncSequenceParameterBufferH264_MVC *)pSequenceParameter; - VAEncPictureParameterBufferH264_MVC *mvc_pic_param = (VAEncPictureParameterBufferH264_MVC*)pPicParameter; - VAEncSliceParameterBufferH264 *slice_param = pSliceParameter; - - if (mvc_pic_param->view_id != 0) { - /* generate one extension slice header with type of 20 */ - slice_header_length_in_bits = build_avc_mvc_slice_header(mvc_seq_param, - mvc_pic_param, - slice_param, - &slice_header); - mfc_context->insert_object(ctx, encoder_context, - (unsigned int *)slice_header, - ALIGN(slice_header_length_in_bits, 32) >> 5, - slice_header_length_in_bits & 0x1f, - 8, /* first 5 bytes are start code + nal unit type */ - 1, 0, 1, slice_batch); - - } else { - - /* generate common H264 slice header */ - slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, - pPicParameter, - pSliceParameter, - &slice_header); - mfc_context->insert_object(ctx, encoder_context, - (unsigned int *)slice_header, - ALIGN(slice_header_length_in_bits, 32) >> 5, - slice_header_length_in_bits & 0x1f, - 5, /* first 5 bytes are start code + nal unit type */ - 1, 0, 1, slice_batch); - } - } else { - /* For the Normal H264 */ - slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, - pPicParameter, - pSliceParameter, - &slice_header); - mfc_context->insert_object(ctx, encoder_context, - (unsigned int *)slice_header, - ALIGN(slice_header_length_in_bits, 32) >> 5, - slice_header_length_in_bits & 0x1f, - 5, /* first 5 bytes are start code + nal unit type */ - 1, 0, 1, slice_batch); - } + /* For the Normal H264 */ + slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, + pPicParameter, + pSliceParameter, + &slice_header); + mfc_context->insert_object(ctx, encoder_context, + (unsigned int *)slice_header, + ALIGN(slice_header_length_in_bits, 32) >> 5, + slice_header_length_in_bits & 0x1f, + 5, /* first 5 bytes are start code + nal unit type */ + 1, 0, 1, slice_batch); free(slice_header); } else { unsigned int skip_emul_byte_cnt; diff --git a/src/i965_encoder_utils.c b/src/i965_encoder_utils.c index e59e7fb..a232564 100644 --- a/src/i965_encoder_utils.c +++ b/src/i965_encoder_utils.c @@ -201,25 +201,6 @@ static void nal_header(avc_bitstream *bs, int nal_ref_idc, int nal_unit_type) avc_bitstream_put_ui(bs, nal_unit_type, 5); } -static void -nal_header_mvc_extension(avc_bitstream *bs, - VAEncSequenceParameterBufferH264_MVC *mvc_sps_param, - VAEncPictureParameterBufferH264_MVC *mvc_pic_param, - VAEncSliceParameterBufferH264 *slice_param) -{ - VAEncPictureParameterBufferH264 *pic_param = &mvc_pic_param->base; - int non_idr = !pic_param->pic_fields.bits.idr_pic_flag; - - avc_bitstream_put_ui(bs, 0, 1); /* svc extension flag */ - avc_bitstream_put_ui(bs, non_idr, 1); /* non_idr_flag */ - avc_bitstream_put_ui(bs, 5, 6); /* priority_id */ - avc_bitstream_put_ui(bs, mvc_pic_param->view_id, 10); /* view_id */ - avc_bitstream_put_ui(bs, 0, 3); /* temporal_id */ - avc_bitstream_put_ui(bs, mvc_pic_param->anchor_pic_flag, 1);/* anchor_pic_flag */ - avc_bitstream_put_ui(bs, mvc_pic_param->inter_view_flag, 1);/* inter_view_flag */ - avc_bitstream_put_ui(bs, 1, 1); /* reserved_one_bit */ -} - static void slice_header(avc_bitstream *bs, VAEncSequenceParameterBufferH264 *sps_param, @@ -518,47 +499,4 @@ build_mpeg2_slice_header(VAEncSequenceParameterBufferMPEG2 *sps_param, return bs.bit_offset; } -int -build_avc_mvc_prefix_nal_unit(VAEncSequenceParameterBufferH264_MVC *mvc_sps_param, - VAEncPictureParameterBufferH264_MVC *mvc_pic_param, - VAEncSliceParameterBufferH264 *slice_param, - unsigned char **nal_unit_buffer) -{ - VAEncPictureParameterBufferH264 *pic_param = &mvc_pic_param->base; - int is_ref = !!pic_param->pic_fields.bits.reference_pic_flag; - avc_bitstream bs; - avc_bitstream_start(&bs); - nal_start_code_prefix(&bs); - - nal_header(&bs, is_ref ? NAL_REF_IDC_LOW : NAL_REF_IDC_NONE, NAL_PREFIX); - nal_header_mvc_extension(&bs, mvc_sps_param, mvc_pic_param, slice_param); - - avc_bitstream_end(&bs); - *nal_unit_buffer = (unsigned char *)bs.buffer; - - return bs.bit_offset; -} - -int -build_avc_mvc_slice_header(VAEncSequenceParameterBufferH264_MVC *mvc_sps_param, - VAEncPictureParameterBufferH264_MVC *mvc_pic_param, - VAEncSliceParameterBufferH264 *slice_param, - unsigned char **slice_header_buffer) -{ - avc_bitstream bs; - VAEncPictureParameterBufferH264 *pic_param = &mvc_pic_param->base; - int is_ref = !!pic_param->pic_fields.bits.reference_pic_flag; - - avc_bitstream_start(&bs); - nal_start_code_prefix(&bs); - - nal_header(&bs, is_ref ? NAL_REF_IDC_HIGH : NAL_REF_IDC_NONE, NAL_SLICE_EXTENSION); - nal_header_mvc_extension(&bs, mvc_sps_param, mvc_pic_param, slice_param); - slice_header(&bs, &mvc_sps_param->base, &mvc_pic_param->base, slice_param); - - avc_bitstream_end(&bs); - *slice_header_buffer = (unsigned char *)bs.buffer; - - return bs.bit_offset; -} diff --git a/src/i965_encoder_utils.h b/src/i965_encoder_utils.h index 4885376..60dada1 100644 --- a/src/i965_encoder_utils.h +++ b/src/i965_encoder_utils.h @@ -33,15 +33,5 @@ build_mpeg2_slice_header(VAEncSequenceParameterBufferMPEG2 *sps_param, VAEncSliceParameterBufferMPEG2 *slice_param, unsigned char **slice_header_buffer); -int -build_avc_mvc_prefix_nal_unit(VAEncSequenceParameterBufferH264_MVC *mvc_sps_param, - VAEncPictureParameterBufferH264_MVC *mvc_pic_param, - VAEncSliceParameterBufferH264 *slice_param, - unsigned char **nal_unit_buffer); -int -build_avc_mvc_slice_header(VAEncSequenceParameterBufferH264_MVC *mvc_sps_param, - VAEncPictureParameterBufferH264_MVC *mvc_pic_param, - VAEncSliceParameterBufferH264 *slice_param, - unsigned char **slice_header_buffer); #endif /* __I965_ENCODER_UTILS_H__ */ -- 1.7.12-rc1 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
