SDL: cmake: check ffmpeg capability instead of version

From ee53e4d319098efec46dea198bd32c8dd868cf9b Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 10 Oct 2023 20:36:58 +0200
Subject: [PATCH] cmake: check ffmpeg capability instead of version

---
 test/CMakeLists.txt | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 0a22daa1738d..fa4175a8df9e 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,6 +1,9 @@
 #
 # CMake script for building the SDL tests
 #
+
+include(CheckStructHasMember)
+
 if(SDL_TESTS_LINK_SHARED)
     set(sdl_name_component SDL3-shared)
 else()
@@ -183,15 +186,20 @@ if(HAVE_LIBUDEV_H)
 endif()
 
 include("${SDL3_SOURCE_DIR}/cmake/FindFFmpeg.cmake")
-if(FFmpeg_FOUND AND (FFmpeg_AVCODEC_VERSION STREQUAL "" OR FFmpeg_AVCODEC_VERSION VERSION_GREATER_EQUAL "59.37"))
+if(FFmpeg_FOUND)
+    cmake_push_check_state()
+    list(APPEND CMAKE_REQUIRED_INCLUDES "${FFmpeg_AVUTIL_INCLUDE_DIRS}")
+    check_struct_has_member("AVFrame" "ch_layout" "libavutil/frame.h" LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT)
+    cmake_pop_check_state()
+endif()
+if(FFmpeg_FOUND AND LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT)
+    add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c ${icon_bmp_header})
     if(APPLE)
-        add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c testffmpeg_videotoolbox.m ${icon_bmp_header})
+        target_sources(testffmpeg PRIVATE testffmpeg_videotoolbox.m)
         target_link_options(testffmpeg PRIVATE "-Wl,-framework,CoreFoundation" "-Wl,-framework,CoreVideo" "-Wl,-framework,Metal")
-    else()
-        add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c ${icon_bmp_header})
     endif()
     if(HAVE_OPENGLES_V2)
-        #message(STATUS "Enabling EGL support in testffmpeg")
+        message(DEBUG "Enabling EGL support in testffmpeg")
         target_compile_definitions(testffmpeg PRIVATE HAVE_EGL)
         if(TARGET OpenGL::EGL)
             target_link_libraries(testffmpeg PRIVATE OpenGL::EGL)