Version 1.0.16 - DD.Feb.2012
* Fix VC-1 motion vector modes for Ivy Bridge
+* Fix MFX_QM_STATE for H.264 flat scaling lists (IVB)
* Fix and simplify AVC_REF_IDX_STATE setup (ILK, SNB, IVB)
Version 1.0.15 - 28.Oct.2011
struct gen7_mfd_context *gen7_mfd_context)
{
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
- int qm_present_flag;
int img_struct;
int mbaff_frame_flag;
unsigned int width_in_mbs, height_in_mbs;
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
assert(!(pic_param->CurrPic.flags & VA_PICTURE_H264_INVALID));
- if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
- qm_present_flag = 1;
- else
- qm_present_flag = 0; /* built-in QM matrices */
-
if (pic_param->CurrPic.flags & VA_PICTURE_H264_TOP_FIELD)
img_struct = 1;
else if (pic_param->CurrPic.flags & VA_PICTURE_H264_BOTTOM_FIELD)
VAIQMatrixBufferH264 *iq_matrix;
VAPictureParameterBufferH264 *pic_param;
- if (!decode_state->iq_matrix || !decode_state->iq_matrix->buffer)
- return;
-
- iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
+ if (decode_state->iq_matrix && decode_state->iq_matrix->buffer)
+ iq_matrix = (VAIQMatrixBufferH264 *)decode_state->iq_matrix->buffer;
+ else
+ iq_matrix = &gen7_mfd_context->iq_matrix.h264;
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferH264 *)decode_state->pic_param->buffer;
ADVANCE_BCS_BATCH(batch);
}
+static inline void
+gen7_mfd_avc_context_init(
+ VADriverContextP ctx,
+ struct gen7_mfd_context *gen7_mfd_context
+)
+{
+ /* Initialize flat scaling lists */
+ avc_gen_default_iq_matrix(&gen7_mfd_context->iq_matrix.h264);
+}
+
static void
gen7_mfd_avc_decode_init(VADriverContextP ctx,
struct decode_state *decode_state,
gen7_mfd_context->jpeg_wa_surface_id = VA_INVALID_SURFACE;
+ switch (profile) {
+ case VAProfileH264Baseline:
+ case VAProfileH264Main:
+ case VAProfileH264High:
+ gen7_mfd_avc_context_init(ctx, gen7_mfd_context);
+ break;
+ default:
+ break;
+ }
return (struct hw_context *)gen7_mfd_context;
}
#include <assert.h>
#include <stddef.h>
+#include <string.h>
#include "intel_batchbuffer.h"
#include "i965_decoder_utils.h"
#include "i965_defines.h"
+/* Generate flat scaling matrices for H.264 decoding */
+void
+avc_gen_default_iq_matrix(VAIQMatrixBufferH264 *iq_matrix)
+{
+ /* Flat_4x4_16 */
+ memset(&iq_matrix->ScalingList4x4, 16, sizeof(iq_matrix->ScalingList4x4));
+
+ /* Flat_8x8_16 */
+ memset(&iq_matrix->ScalingList8x8, 16, sizeof(iq_matrix->ScalingList8x8));
+}
+
static inline uint8_t
get_ref_idx_state_1(const VAPictureH264 *va_pic, unsigned int frame_store_id)
{