diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2013-08-08 10:01:50 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2013-09-06 15:30:14 +0800 |
commit | 7c0849287c2fa0186239973a0844592328bca9ba (patch) | |
tree | e83a0fa16438f6fad9f19857b2ceddb8c2caba6e | |
parent | 496bd7f47f93ad4ac4f3510aa1c088c027bfe762 (diff) |
Use the right wight/height to initialize the internal buffers for MPEG-2 encoding
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
(cherry picked from commit 3ecbff585af918d96959ce791eec29be25360d91)
-rw-r--r-- | src/gen6_mfc.c | 18 | ||||
-rw-r--r-- | src/gen75_mfc.c | 18 |
2 files changed, 30 insertions, 6 deletions
diff --git a/src/gen6_mfc.c b/src/gen6_mfc.c index 883a42b..1103e61 100644 --- a/src/gen6_mfc.c +++ b/src/gen6_mfc.c @@ -516,9 +516,21 @@ gen6_mfc_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; dri_bo *bo; int i; - VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; - int width_in_mbs = pSequenceParameter->picture_width_in_mbs; - int height_in_mbs = pSequenceParameter->picture_height_in_mbs; + int width_in_mbs = 0; + int height_in_mbs = 0; + + if (encoder_context->codec == CODEC_H264) { + VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + width_in_mbs = pSequenceParameter->picture_width_in_mbs; + height_in_mbs = pSequenceParameter->picture_height_in_mbs; + } else { + VAEncSequenceParameterBufferMPEG2 *pSequenceParameter = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer; + + assert(encoder_context->codec == CODEC_MPEG2); + + width_in_mbs = ALIGN(pSequenceParameter->picture_width, 16) / 16; + height_in_mbs = ALIGN(pSequenceParameter->picture_height, 16) / 16; + } /*Encode common setup for MFC*/ dri_bo_unreference(mfc_context->post_deblocking_output.bo); diff --git a/src/gen75_mfc.c b/src/gen75_mfc.c index d2201e3..255b64c 100644 --- a/src/gen75_mfc.c +++ b/src/gen75_mfc.c @@ -425,9 +425,21 @@ static void gen75_mfc_init(VADriverContextP ctx, struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; dri_bo *bo; int i; - VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; - int width_in_mbs = pSequenceParameter->picture_width_in_mbs; - int height_in_mbs = pSequenceParameter->picture_height_in_mbs; + int width_in_mbs = 0; + int height_in_mbs = 0; + + if (encoder_context->codec == CODEC_H264) { + VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + width_in_mbs = pSequenceParameter->picture_width_in_mbs; + height_in_mbs = pSequenceParameter->picture_height_in_mbs; + } else { + VAEncSequenceParameterBufferMPEG2 *pSequenceParameter = (VAEncSequenceParameterBufferMPEG2 *)encode_state->seq_param_ext->buffer; + + assert(encoder_context->codec == CODEC_MPEG2); + + width_in_mbs = ALIGN(pSequenceParameter->picture_width, 16) / 16; + height_in_mbs = ALIGN(pSequenceParameter->picture_height, 16) / 16; + } /*Encode common setup for MFC*/ dri_bo_unreference(mfc_context->post_deblocking_output.bo); |