[Libva] [PATCH Libva-intel-driver] Encoding: Remove the redundant MVC structure for encoding

Zhao, Yakui yakui.zhao at intel.com
Sun Jun 15 18:29:49 PDT 2014


From: "Zhao, Yakui" <yakui.zhao at intel.com>

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 <yakui.zhao at intel.com>
---
 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



More information about the Libva mailing list