summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2014-01-25 18:43:52 -0700
committerZhao Yakui <yakui.zhao@intel.com>2014-01-28 09:49:19 +0800
commitc25fe67b1f1e269dc8d0152ce883788ef9288aea (patch)
tree3780c87057ddee513a0ea24bc913f9073dd5df72
parent6736a39fce442a8e5abb2a2e99adf56e3965d35f (diff)
downloadlibva-intel-driver-c25fe67b1f1e269dc8d0152ce883788ef9288aea.tar.gz
libva-intel-driver-c25fe67b1f1e269dc8d0152ce883788ef9288aea.tar.bz2
libva-intel-driver-c25fe67b1f1e269dc8d0152ce883788ef9288aea.zip
intel-vaapi: Add more checks for H264 decoding parameter to filter the unsupported clip
Signed-off-by: Yuan Feng <feng.yuan@intel.com> Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
-rw-r--r--src/i965_decoder_utils.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/i965_decoder_utils.c b/src/i965_decoder_utils.c
index cf7f60b..597d239 100644
--- a/src/i965_decoder_utils.c
+++ b/src/i965_decoder_utils.c
@@ -547,6 +547,7 @@ intel_update_vp8_frame_store_index(VADriverContextP ctx,
static VAStatus
intel_decoder_check_avc_parameter(VADriverContextP ctx,
+ VAProfile h264_profile,
struct decode_state *decode_state)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
@@ -566,6 +567,14 @@ intel_decoder_check_avc_parameter(VADriverContextP ctx,
if (pic_param->CurrPic.picture_id != decode_state->current_render_target)
goto error;
+ if ((h264_profile != VAProfileH264Baseline)) {
+ if (pic_param->num_slice_groups_minus1 ||
+ pic_param->pic_fields.bits.redundant_pic_cnt_present_flag) {
+ WARN_ONCE("Unsupported the FMO/ASO constraints!!!\n");
+ goto error;
+ }
+ }
+
for (i = 0; i < 16; i++) {
if (pic_param->ReferenceFrames[i].flags & VA_PICTURE_H264_INVALID ||
pic_param->ReferenceFrames[i].picture_id == VA_INVALID_SURFACE)
@@ -752,7 +761,7 @@ intel_decoder_sanity_check_input(VADriverContextP ctx,
case VAProfileH264ConstrainedBaseline:
case VAProfileH264Main:
case VAProfileH264High:
- vaStatus = intel_decoder_check_avc_parameter(ctx, decode_state);
+ vaStatus = intel_decoder_check_avc_parameter(ctx, profile, decode_state);
break;
case VAProfileVC1Simple: