OK. Thanks. 2014-06-16 3:29 GMT+02:00 Zhao, Yakui <[email protected]>: > 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
-- Gwenole Beauchesne Intel Corporation SAS / 2 rue de Paris, 92196 Meudon Cedex, France Registration Number (RCS): Nanterre B 302 456 199 _______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
