MAP(HEVC, HEVC_MAIN_STILL_PICTURE,
HEVCMain ),
#endif
-#if VA_CHECK_VERSION(1, 2, 0)
+#if VA_CHECK_VERSION(1, 2, 0) && CONFIG_HEVC_VAAPI_HWACCEL
MAP(HEVC, HEVC_REXT, None,
ff_vaapi_parse_hevc_rext_profile ),
#endif
#if VA_CHECK_VERSION(0, 39, 0)
MAP(VP9, VP9_2, VP9Profile2 ),
#endif
+#if VA_CHECK_VERSION(1, 8, 0)
+ MAP(AV1, AV1_MAIN, AV1Profile0),
+ MAP(AV1, AV1_HIGH, AV1Profile1),
+#endif
+
#undef MAP
};
frames->initial_pool_size += 16;
break;
case AV_CODEC_ID_VP9:
+ case AV_CODEC_ID_AV1:
frames->initial_pool_size += 8;
break;
case AV_CODEC_ID_VP8:
ctx->va_config = VA_INVALID_ID;
ctx->va_context = VA_INVALID_ID;
-#if FF_API_STRUCT_VAAPI_CONTEXT
- if (avctx->hwaccel_context) {
- av_log(avctx, AV_LOG_WARNING, "Using deprecated struct "
- "vaapi_context in decode.\n");
-
- ctx->have_old_context = 1;
- ctx->old_context = avctx->hwaccel_context;
-
- // Really we only want the VAAPI device context, but this
- // allocates a whole generic device context because we don't
- // have any other way to determine how big it should be.
- ctx->device_ref =
- av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_VAAPI);
- if (!ctx->device_ref) {
- err = AVERROR(ENOMEM);
- goto fail;
- }
- ctx->device = (AVHWDeviceContext*)ctx->device_ref->data;
- ctx->hwctx = ctx->device->hwctx;
-
- ctx->hwctx->display = ctx->old_context->display;
-
- // The old VAAPI decode setup assumed this quirk was always
- // present, so set it here to avoid the behaviour changing.
- ctx->hwctx->driver_quirks =
- AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS;
-
- }
-#endif
-
-#if FF_API_STRUCT_VAAPI_CONTEXT
- if (ctx->have_old_context) {
- ctx->va_config = ctx->old_context->config_id;
- ctx->va_context = ctx->old_context->context_id;
-
- av_log(avctx, AV_LOG_DEBUG, "Using user-supplied decoder "
- "context: %#x/%#x.\n", ctx->va_config, ctx->va_context);
- } else {
-#endif
-
err = ff_decode_get_hw_frames_ctx(avctx, AV_HWDEVICE_TYPE_VAAPI);
if (err < 0)
goto fail;
av_log(avctx, AV_LOG_DEBUG, "Decode context initialised: "
"%#x/%#x.\n", ctx->va_config, ctx->va_context);
-#if FF_API_STRUCT_VAAPI_CONTEXT
- }
-#endif
return 0;
VAAPIDecodeContext *ctx = avctx->internal->hwaccel_priv_data;
VAStatus vas;
-#if FF_API_STRUCT_VAAPI_CONTEXT
- if (ctx->have_old_context) {
- av_buffer_unref(&ctx->device_ref);
- } else {
-#endif
-
if (ctx->va_context != VA_INVALID_ID) {
vas = vaDestroyContext(ctx->hwctx->display, ctx->va_context);
if (vas != VA_STATUS_SUCCESS) {
}
}
-#if FF_API_STRUCT_VAAPI_CONTEXT
- }
-#endif
-
return 0;
}