Skip to content

Commit

Permalink
Allow building testffmpeg without Vulkan support
Browse files Browse the repository at this point in the history
  • Loading branch information
slouken committed Mar 9, 2024
1 parent 16e0806 commit fcb132b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 3 deletions.
5 changes: 4 additions & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,11 @@ if(FFmpeg_FOUND)
check_struct_has_member("AVVulkanFramesContext" "format" "libavutil/hwcontext_vulkan.h" LIBAVUTIL_AVFULKANFRAMESCONTEXT_HAS_FORMAT)
cmake_pop_check_state()
endif()
if(FFmpeg_FOUND AND LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT AND LIBAVUTIL_AVFULKANFRAMESCONTEXT_HAS_FORMAT)
if(FFmpeg_FOUND AND LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT)
add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c testffmpeg_vulkan.c ${icon_bmp_header})
if(LIBAVUTIL_AVFULKANFRAMESCONTEXT_HAS_FORMAT)
target_compile_definitions(testffmpeg PRIVATE FFMPEG_VULKAN_SUPPORT)
endif()
if(APPLE)
target_link_options(testffmpeg PRIVATE "-Wl,-framework,CoreVideo")
endif()
Expand Down
43 changes: 41 additions & 2 deletions test/testffmpeg_vulkan.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
#include <SDL3/SDL.h>
#include <SDL3/SDL_vulkan.h>

#include "testffmpeg_vulkan.h"

#ifdef FFMPEG_VULKAN_SUPPORT

#include <libavutil/hwcontext.h>
#include <libavutil/hwcontext_vulkan.h>

#include "testffmpeg_vulkan.h"

#define VULKAN_FUNCTIONS() \
VULKAN_GLOBAL_FUNCTION(vkCreateInstance) \
VULKAN_GLOBAL_FUNCTION(vkEnumerateInstanceExtensionProperties) \
Expand Down Expand Up @@ -966,3 +968,40 @@ void DestroyVulkanVideoContext(VulkanVideoContext *context)
SDL_free(context);
}
}

#else

VulkanVideoContext *CreateVulkanVideoContext(SDL_Window *window)
{
SDL_SetError("testffmpeg not built with Vulkan support");
return NULL;
}

void SetupVulkanRenderProperties(VulkanVideoContext *context, SDL_PropertiesID props)
{
}

void SetupVulkanDeviceContextData(VulkanVideoContext *context, AVVulkanDeviceContext *ctx)
{
}

SDL_Texture *CreateVulkanVideoTexture(VulkanVideoContext *context, AVFrame *frame, SDL_Renderer *renderer, SDL_PropertiesID props)
{
return NULL;
}

int BeginVulkanFrameRendering(VulkanVideoContext *context, AVFrame *frame, SDL_Renderer *renderer)
{
return -1;
}

int FinishVulkanFrameRendering(VulkanVideoContext *context, AVFrame *frame, SDL_Renderer *renderer)
{
return -1;
}

void DestroyVulkanVideoContext(VulkanVideoContext *context)
{
}

#endif // FFMPEG_VULKAN_SUPPORT

0 comments on commit fcb132b

Please sign in to comment.