From 4aa5ad71c0b5aff7282b622d2bffe8bb83788f52 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 28 Mar 2026 16:17:59 -0500 Subject: [PATCH] Use av_vk_get_optional_device_extensions() on FFmpeg 8.1 --- app/streaming/video/ffmpeg-renderers/plvk.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/streaming/video/ffmpeg-renderers/plvk.cpp b/app/streaming/video/ffmpeg-renderers/plvk.cpp index 6fad86bb..ac80017e 100644 --- a/app/streaming/video/ffmpeg-renderers/plvk.cpp +++ b/app/streaming/video/ffmpeg-renderers/plvk.cpp @@ -9,7 +9,9 @@ #include +extern "C" { #include +} #include #include @@ -19,7 +21,7 @@ #define VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR ((VkVideoCodecOperationFlagBitsKHR)0x00000004) #endif -// Keep these in sync with hwcontext_vulkan.c +#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(60, 26, 100) static const char *k_OptionalDeviceExtensions[] = { /* Misc or required by other extensions */ //VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME, @@ -52,6 +54,7 @@ static const char *k_OptionalDeviceExtensions[] = { "VK_MESA_video_decode_av1", // FFmpeg 6.1 uses the Mesa AV1 extension #endif }; +#endif static void pl_log_cb(void*, enum pl_log_level level, const char *msg) { @@ -318,10 +321,17 @@ bool PlVkRenderer::tryInitializeDevice(VkPhysicalDevice device, VkPhysicalDevice vkParams.get_proc_addr = m_PlVkInstance->get_proc_addr; vkParams.surface = m_VkSurface; vkParams.device = device; +#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(60, 26, 100) + vkParams.opt_extensions = av_vk_get_optional_device_extensions(&vkParams.num_opt_extensions); +#else vkParams.opt_extensions = k_OptionalDeviceExtensions; vkParams.num_opt_extensions = SDL_arraysize(k_OptionalDeviceExtensions); +#endif vkParams.extra_queues = m_HwAccelBackend ? VK_QUEUE_FLAG_BITS_MAX_ENUM : 0; m_Vulkan = pl_vulkan_create(m_Log, &vkParams); +#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(60, 26, 100) + av_free((void*)vkParams.opt_extensions); +#endif if (m_Vulkan == nullptr) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "pl_vulkan_create() failed for '%s'",