camera: Reworked to operate with a driver interface, like other subsystems.

This commit is contained in:
Ryan C. Gordon
2023-12-01 10:59:13 -05:00
parent 2ad44bd162
commit cb10c80aaf
25 changed files with 608 additions and 332 deletions

View File

@@ -332,6 +332,7 @@ set_option(SDL_KMSDRM "Use KMS DRM video driver" ${UNIX_SYS})
dep_option(SDL_KMSDRM_SHARED "Dynamically load KMS DRM support" ON "SDL_KMSDRM" OFF)
set_option(SDL_OFFSCREEN "Use offscreen video driver" ON)
dep_option(SDL_CAMERA "Enable camera support" ON SDL_VIDEO OFF)
set_option(SDL_DUMMYCAMERA "Support the dummy camera driver" ON)
option_string(SDL_BACKGROUNDING_SIGNAL "number to use for magic backgrounding signal or 'OFF'" OFF)
option_string(SDL_FOREGROUNDING_SIGNAL "number to use for magic foregrounding signal or 'OFF'" OFF)
dep_option(SDL_HIDAPI "Enable the HIDAPI subsystem" ON "NOT VISIONOS" OFF)
@@ -1172,6 +1173,23 @@ if(SDL_AUDIO)
endif()
endif()
if(SDL_CAMERA)
# CheckDummyCamera/CheckDiskCamera - valid for all platforms
if(SDL_DUMMYCAMERA)
set(SDL_CAMERA_DRIVER_DUMMY 1)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/dummy/*.c")
set(HAVE_DUMMYCAMERA TRUE)
set(HAVE_SDL_CAMERA TRUE)
endif()
# !!! FIXME: for later.
#if(SDL_DISKCAMERA)
# set(SDL_CAMERA_DRIVER_DISK 1)
# sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/disk/*.c")
# set(HAVE_DISKCAMERA TRUE)
# set(HAVE_SDL_CAMERA TRUE)
#endif()
endif()
if(UNIX OR APPLE)
# Relevant for Unix/Darwin only
set(DYNAPI_NEEDS_DLOPEN 1)
@@ -1290,7 +1308,7 @@ if(ANDROID)
endif()
if(SDL_CAMERA)
set(SDL_CAMERA_ANDROID 1)
set(SDL_CAMERA_DRIVER_ANDROID 1)
set(HAVE_CAMERA TRUE)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/android/*.c")
endif()
@@ -1531,7 +1549,7 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
endif()
if(SDL_CAMERA AND HAVE_LINUX_VIDEODEV2_H)
set(SDL_CAMERA_V4L2 1)
set(SDL_CAMERA_DRIVER_V4L2 1)
set(HAVE_CAMERA TRUE)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/v4l2/*.c")
endif()
@@ -2035,9 +2053,9 @@ elseif(APPLE)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/file/cocoa/*.m")
if(IOS OR TVOS OR MACOSX OR DARWIN)
set(SDL_CAMERA_APPLE TRUE)
set(SDL_CAMERA_DRIVER_COREMEDIA 1)
set(HAVE_CAMERA TRUE)
sdl_sources("${SDL3_SOURCE_DIR}/src/camera/apple/SDL_camera_apple.m")
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/coremedia/*.m")
endif()
if(IOS OR TVOS OR VISIONOS)
@@ -2739,7 +2757,7 @@ if(NOT HAVE_SDL_MISC)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/dummy/*.c")
endif()
if(NOT HAVE_CAMERA)
set(SDL_CAMERA_DUMMY 1)
set(SDL_CAMERA_DRIVER_DUMMY 1)
sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/dummy/*.c")
endif()