H264Picture *pic = h->cur_pic_ptr;
struct vdpau_picture_context *pic_ctx = pic->hwaccel_picture_private;
VdpPictureInfoH264 *info = &pic_ctx->info.h264;
+#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
+ VdpPictureInfoH264Predictive *info2 = &pic_ctx->info.h264_predictive;
+#endif
/* init VdpPictureInfoH264 */
info->slice_count = 0;
info->log2_max_pic_order_cnt_lsb_minus4 = h->sps.poc_type ? 0 : h->sps.log2_max_poc_lsb - 4;
info->delta_pic_order_always_zero_flag = h->sps.delta_pic_order_always_zero_flag;
info->direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag;
+#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
+ info2->qpprime_y_zero_transform_bypass_flag = h->sps.transform_bypass;
+ info2->separate_colour_plane_flag = h->sps.residual_color_transform_flag;
+#endif
info->entropy_coding_mode_flag = h->pps.cabac;
info->pic_order_present_flag = h->pps.pic_order_present;
info->deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present;
profile = VDP_DECODER_PROFILE_H264_BASELINE;
break;
case FF_PROFILE_H264_CONSTRAINED_BASELINE:
+#ifdef VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE
+ profile = VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE;
+ break;
+#endif
case FF_PROFILE_H264_MAIN:
profile = VDP_DECODER_PROFILE_H264_MAIN;
break;
case FF_PROFILE_H264_HIGH:
profile = VDP_DECODER_PROFILE_H264_HIGH;
break;
+#ifdef VDP_DECODER_PROFILE_H264_EXTENDED
+ case FF_PROFILE_H264_EXTENDED:
+ profile = VDP_DECODER_PROFILE_H264_EXTENDED;
+ break;
+#endif
+ case FF_PROFILE_H264_HIGH_10:
+ /* XXX: High 10 can be treated as High so long as only 8-bits per
+ * formats are supported. */
+ profile = VDP_DECODER_PROFILE_H264_HIGH;
+ break;
+#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
+ case FF_PROFILE_H264_HIGH_422:
+ case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
+ case FF_PROFILE_H264_CAVLC_444:
+ profile = VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE;
+ break;
+#endif
default:
return AVERROR(ENOTSUP);
}