X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fvc1dec.c;h=04e22cca8e2f6e1b8901d2f8473a3f727f0d5c79;hb=9f8e57efe4400ca86352277873792792279c3b15;hp=abaa0b48e0d9fea0dd45d0ba22e64fe4ba74932e;hpb=10ea06b3bb863b8dca51f65c4b725eeba8557f12;p=ffmpeg diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index abaa0b48e0d..04e22cca8e2 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -647,12 +647,14 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, return buf_size; } +#if FF_API_CAP_VDPAU if (s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU) { if (v->profile < PROFILE_ADVANCED) avctx->pix_fmt = AV_PIX_FMT_VDPAU_WMV3; else avctx->pix_fmt = AV_PIX_FMT_VDPAU_VC1; } +#endif //for advanced profile we may need to parse and unescape data if (avctx->codec_id == AV_CODEC_ID_VC1 || avctx->codec_id == AV_CODEC_ID_VC1IMAGE) { @@ -672,15 +674,21 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, if (size <= 0) continue; switch (AV_RB32(start)) { case VC1_CODE_FRAME: - if (avctx->hwaccel || - s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU) + if (avctx->hwaccel +#if FF_API_CAP_VDPAU + || s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU +#endif + ) buf_start = start; buf_size2 = vc1_unescape_buffer(start + 4, size, buf2); break; case VC1_CODE_FIELD: { int buf_size3; - if (avctx->hwaccel || - s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU) + if (avctx->hwaccel +#if FF_API_CAP_VDPAU + || s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU +#endif + ) buf_start_second_field = start; tmp = av_realloc_array(slices, sizeof(*slices), (n_slices+1)); if (!tmp) { @@ -742,8 +750,11 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, ret = AVERROR_INVALIDDATA; goto err; } else { // found field marker, unescape second field - if (avctx->hwaccel || - s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU) + if (avctx->hwaccel +#if FF_API_CAP_VDPAU + || s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU +#endif + ) buf_start_second_field = divider; tmp = av_realloc_array(slices, sizeof(*slices), (n_slices+1)); if (!tmp) { @@ -890,6 +901,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, s->me.qpel_put = s->qdsp.put_qpel_pixels_tab; s->me.qpel_avg = s->qdsp.avg_qpel_pixels_tab; +#if FF_API_CAP_VDPAU if ((CONFIG_VC1_VDPAU_DECODER) &&s->avctx->codec->capabilities&AV_CODEC_CAP_HWACCEL_VDPAU) { if (v->field_mode && buf_start_second_field) { @@ -898,7 +910,9 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, } else { ff_vdpau_vc1_decode_picture(s, buf_start, (buf + buf_size) - buf_start); } - } else if (avctx->hwaccel) { + } else +#endif + if (avctx->hwaccel) { if (v->field_mode && buf_start_second_field) { // decode first field s->picture_structure = PICT_BOTTOM_FIELD - v->tff; @@ -1101,7 +1115,7 @@ static const enum AVPixelFormat vc1_hwaccel_pixfmt_list_420[] = { AV_PIX_FMT_D3D11VA_VLD, #endif #if CONFIG_VC1_VAAPI_HWACCEL - AV_PIX_FMT_VAAPI_VLD, + AV_PIX_FMT_VAAPI, #endif #if CONFIG_VC1_VDPAU_HWACCEL AV_PIX_FMT_VDPAU, @@ -1142,7 +1156,7 @@ AVCodec ff_wmv3_decoder = { }; #endif -#if CONFIG_WMV3_VDPAU_DECODER +#if CONFIG_WMV3_VDPAU_DECODER && FF_API_VDPAU AVCodec ff_wmv3_vdpau_decoder = { .name = "wmv3_vdpau", .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9 VDPAU"), @@ -1158,7 +1172,7 @@ AVCodec ff_wmv3_vdpau_decoder = { }; #endif -#if CONFIG_VC1_VDPAU_DECODER +#if CONFIG_VC1_VDPAU_DECODER && FF_API_VDPAU AVCodec ff_vc1_vdpau_decoder = { .name = "vc1_vdpau", .long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1 VDPAU"),