Old VDPAU drivers do not support this newly defined profile, so falling back to Main profile is necessary for backward binary compatibility. --- libavcodec/vdpau.c | 9 +++++++++ libavcodec/vdpau_h264.c | 4 ++++ 2 files changed, 13 insertions(+)
diff --git a/libavcodec/vdpau.c b/libavcodec/vdpau.c index 1e891ed..ccb3352 100644 --- a/libavcodec/vdpau.c +++ b/libavcodec/vdpau.c @@ -125,6 +125,15 @@ int ff_vdpau_common_init(AVCodecContext *avctx, VdpDecoderProfile profile, status = decoder_query_caps(vdctx->device, profile, &supported, &max_level, &max_mb, &max_width, &max_height); +#ifdef VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE + if (status != VDP_STATUS_OK && profile == VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE) { + /* Run-time backward compatibility for libvdpau 0.8 and earlier */ + profile = VDP_DECODER_PROFILE_H264_MAIN; + status = decoder_query_caps(vdctx->device, profile, &supported, + &max_level, &max_mb, + &max_width, &max_height); + } +#endif if (status != VDP_STATUS_OK) return vdpau_error(status); diff --git a/libavcodec/vdpau_h264.c b/libavcodec/vdpau_h264.c index d18a970..5ed1fff 100644 --- a/libavcodec/vdpau_h264.c +++ b/libavcodec/vdpau_h264.c @@ -213,6 +213,10 @@ static int vdpau_h264_init(AVCodecContext *avctx) 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; -- 2.1.3 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel