diff options
-rw-r--r-- | src/gen6_mfc.c | 80 | ||||
-rw-r--r-- | src/gen6_mfc.h | 5 | ||||
-rw-r--r-- | src/gen6_mfc_common.c | 76 | ||||
-rw-r--r-- | src/gen75_mfc.c | 80 |
4 files changed, 85 insertions, 156 deletions
diff --git a/src/gen6_mfc.c b/src/gen6_mfc.c index 59034be9..09d11106 100644 --- a/src/gen6_mfc.c +++ b/src/gen6_mfc.c @@ -619,82 +619,6 @@ static void gen6_mfc_init(VADriverContextP ctx, struct intel_encoder_context *en i965_gpe_context_init(ctx, &mfc_context->gpe_context); } -static void gen6_mfc_avc_pipeline_header_programing(VADriverContextP ctx, - struct encode_state *encode_state, - struct intel_encoder_context *encoder_context, - struct intel_batchbuffer *slice_batch) -{ - struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; - int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } - - idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } - - idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } -} - static void gen6_mfc_avc_pipeline_picture_programing( VADriverContextP ctx, struct encode_state *encode_state, struct intel_encoder_context *encoder_context) @@ -1040,7 +964,7 @@ gen6_mfc_avc_pipeline_slice_programing(VADriverContextP ctx, (rate_control_mode == VA_RC_CBR), qp, slice_batch); if ( slice_index == 0) - gen6_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); + intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, pPicParameter, pSliceParameter, &slice_header); @@ -1420,7 +1344,7 @@ gen6_mfc_avc_batchbuffer_slice(VADriverContextP ctx, slice_batch); if (slice_index == 0) - gen6_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); + intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, pPicParameter, pSliceParameter, &slice_header); diff --git a/src/gen6_mfc.h b/src/gen6_mfc.h index d458d10a..45423fea 100644 --- a/src/gen6_mfc.h +++ b/src/gen6_mfc.h @@ -250,4 +250,9 @@ extern int intel_mfc_interlace_check(VADriverContextP ctx, extern void intel_mfc_brc_prepare(struct encode_state *encode_state, struct intel_encoder_context *encoder_context); + +extern void intel_mfc_avc_pipeline_header_programing(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct intel_batchbuffer *slice_batch); #endif /* _GEN6_MFC_BCS_H_ */ diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c index f0dabe1f..83f2792c 100644 --- a/src/gen6_mfc_common.c +++ b/src/gen6_mfc_common.c @@ -386,3 +386,79 @@ void intel_mfc_brc_prepare(struct encode_state *encode_state, } } +void intel_mfc_avc_pipeline_header_programing(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct intel_batchbuffer *slice_batch) +{ + struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; + int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS); + + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + mfc_context->insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + 5, /* FIXME: check it */ + 0, + 0, + !param->has_emulation_bytes, + slice_batch); + } + + idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS); + + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + mfc_context->insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + 5, /* FIXME: check it */ + 0, + 0, + !param->has_emulation_bytes, + slice_batch); + } + + idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI); + + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + mfc_context->insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + 5, /* FIXME: check it */ + 0, + 0, + !param->has_emulation_bytes, + slice_batch); + } +} + diff --git a/src/gen75_mfc.c b/src/gen75_mfc.c index f558434d..f15bd845 100644 --- a/src/gen75_mfc.c +++ b/src/gen75_mfc.c @@ -1145,82 +1145,6 @@ gen75_mfc_avc_slice_state(VADriverContextP ctx, } -static void gen75_mfc_avc_pipeline_header_programing(VADriverContextP ctx, - struct encode_state *encode_state, - struct intel_encoder_context *encoder_context, - struct intel_batchbuffer *slice_batch) -{ - struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; - int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } - - idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } - - idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI); - - if (encode_state->packed_header_data[idx]) { - VAEncPackedHeaderParameterBuffer *param = NULL; - unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; - unsigned int length_in_bits; - - assert(encode_state->packed_header_param[idx]); - param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; - length_in_bits = param->bit_length; - - mfc_context->insert_object(ctx, - encoder_context, - header_data, - ALIGN(length_in_bits, 32) >> 5, - length_in_bits & 0x1f, - 5, /* FIXME: check it */ - 0, - 0, - !param->has_emulation_bytes, - slice_batch); - } -} - #ifdef MFC_SOFTWARE_HASWELL static int @@ -1386,7 +1310,7 @@ gen75_mfc_avc_pipeline_slice_programing(VADriverContextP ctx, (rate_control_mode == VA_RC_CBR), qp, slice_batch); if ( slice_index == 0) - gen75_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); + intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, pPicParameter, pSliceParameter, &slice_header); @@ -1766,7 +1690,7 @@ gen75_mfc_avc_batchbuffer_slice(VADriverContextP ctx, slice_batch); if (slice_index == 0) - gen75_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); + intel_mfc_avc_pipeline_header_programing(ctx, encode_state, encoder_context, slice_batch); slice_header_length_in_bits = build_avc_slice_header(pSequenceParameter, pPicParameter, pSliceParameter, &slice_header); |