summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2013-08-08 10:01:50 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2013-09-06 15:30:14 +0800
commit7c0849287c2fa0186239973a0844592328bca9ba (patch)
treee83a0fa16438f6fad9f19857b2ceddb8c2caba6e
parent496bd7f47f93ad4ac4f3510aa1c088c027bfe762 (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.c18
-rw-r--r--src/gen75_mfc.c18
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);