|
|
@ -69,6 +69,9 @@ if (PLATFORM_PS4 OR PLATFORM_MANAGARM) |
|
|
--disable-vulkan |
|
|
--disable-vulkan |
|
|
--disable-libdrm) |
|
|
--disable-libdrm) |
|
|
elseif (UNIX) |
|
|
elseif (UNIX) |
|
|
|
|
|
find_package(PkgConfig REQUIRED) |
|
|
|
|
|
|
|
|
|
|
|
# X11 is "optional", some distros may opt for a super-fully wayland install... |
|
|
find_package(X11) |
|
|
find_package(X11) |
|
|
if(X11_FOUND) |
|
|
if(X11_FOUND) |
|
|
# Include X11 if possible, some APIs such as VDPAU heavily depend |
|
|
# Include X11 if possible, some APIs such as VDPAU heavily depend |
|
|
@ -83,32 +86,38 @@ elseif (UNIX) |
|
|
X11 |
|
|
X11 |
|
|
"${CMAKE_SYSROOT}/usr/lib/xorg/amd64/libdrm.so") |
|
|
"${CMAKE_SYSROOT}/usr/lib/xorg/amd64/libdrm.so") |
|
|
else() |
|
|
else() |
|
|
pkg_check_modules(LIBDRM libdrm) |
|
|
|
|
|
if (LIBDRM_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES |
|
|
|
|
|
${LIBDRM_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS |
|
|
|
|
|
${LIBDRM_INCLUDE_DIRS}) |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
pkg_check_modules(LIBDRM libdrm REQUIRED) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBDRM_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBDRM_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBDRM_LDFLAGS}) |
|
|
endif() |
|
|
endif() |
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-libdrm) |
|
|
|
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS --enable-libdrm) |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
pkg_check_modules(LIBVA libva) |
|
|
if(LIBVA_FOUND) |
|
|
if(LIBVA_FOUND) |
|
|
pkg_check_modules(LIBVA-DRM libva-drm) |
|
|
|
|
|
pkg_check_modules(LIBVA-X11 libva-x11) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES |
|
|
|
|
|
${LIBVA-DRM_LIBRARIES} |
|
|
|
|
|
${LIBVA-X11_LIBRARIES} |
|
|
|
|
|
${LIBVA_LIBRARIES}) |
|
|
|
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA_LDFLAGS}) |
|
|
|
|
|
|
|
|
|
|
|
# Logically, they can only exist if libva itself exists |
|
|
|
|
|
pkg_check_modules(LIBVA-DRM libva-drm REQUIRED) |
|
|
|
|
|
pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED) |
|
|
|
|
|
if (LIBVA-DRM_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA-DRM_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA-DRM_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA-DRM_LDFLAGS}) |
|
|
|
|
|
endif() |
|
|
|
|
|
if (LIBVA-X11_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA-X11_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA-X11_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA-X11_LDFLAGS}) |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
--enable-hwaccel=h264_vaapi |
|
|
--enable-hwaccel=h264_vaapi |
|
|
--enable-hwaccel=vp8_vaapi |
|
|
--enable-hwaccel=vp8_vaapi |
|
|
--enable-hwaccel=vp9_vaapi) |
|
|
--enable-hwaccel=vp9_vaapi) |
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS |
|
|
|
|
|
${LIBVA-DRM_INCLUDE_DIRS} |
|
|
|
|
|
${LIBVA-X11_INCLUDE_DIRS} |
|
|
|
|
|
${LIBVA_INCLUDE_DIRS}) |
|
|
|
|
|
message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found") |
|
|
message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found") |
|
|
else() |
|
|
else() |
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi) |
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi) |
|
|
@ -119,70 +128,66 @@ elseif (UNIX) |
|
|
message(WARNING "ffmpeg: X11 libraries not found, disabling VA-API...") |
|
|
message(WARNING "ffmpeg: X11 libraries not found, disabling VA-API...") |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
find_package(PkgConfig) |
|
|
|
|
|
if (PkgConfig_FOUND) |
|
|
|
|
|
pkg_check_modules(LIBVA libva) |
|
|
|
|
|
pkg_check_modules(CUDA cuda) |
|
|
|
|
|
pkg_check_modules(FFNVCODEC ffnvcodec) |
|
|
|
|
|
pkg_check_modules(VDPAU vdpau) |
|
|
|
|
|
pkg_check_modules(VULKAN vulkan) |
|
|
|
|
|
find_package(spirv-headers) |
|
|
|
|
|
|
|
|
|
|
|
if (FFNVCODEC_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-cuvid |
|
|
|
|
|
--enable-ffnvcodec |
|
|
|
|
|
--enable-nvdec |
|
|
|
|
|
--enable-hwaccel=h264_nvdec |
|
|
|
|
|
--enable-hwaccel=vp8_nvdec |
|
|
|
|
|
--enable-hwaccel=vp9_nvdec) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: ffnvcodec libraries version ${FFNVCODEC_VERSION} found") |
|
|
|
|
|
# ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress |
|
|
|
|
|
# here we handle the hard-linking scenario where CUDA is linked during compilation |
|
|
|
|
|
if (CUDA_FOUND) |
|
|
|
|
|
# This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value |
|
|
|
|
|
#list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: CUDA libraries version ${CUDA_VERSION} found, hard-linking will be performed") |
|
|
|
|
|
endif(CUDA_FOUND) |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
pkg_check_modules(CUDA cuda) |
|
|
|
|
|
pkg_check_modules(FFNVCODEC ffnvcodec) |
|
|
|
|
|
pkg_check_modules(VDPAU vdpau) |
|
|
|
|
|
pkg_check_modules(VULKAN vulkan) |
|
|
|
|
|
find_package(spirv-headers) |
|
|
|
|
|
|
|
|
|
|
|
if (FFNVCODEC_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-cuvid |
|
|
|
|
|
--enable-ffnvcodec |
|
|
|
|
|
--enable-nvdec |
|
|
|
|
|
--enable-hwaccel=h264_nvdec |
|
|
|
|
|
--enable-hwaccel=vp8_nvdec |
|
|
|
|
|
--enable-hwaccel=vp9_nvdec) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: ffnvcodec libraries version ${FFNVCODEC_VERSION} found") |
|
|
|
|
|
# ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress |
|
|
|
|
|
# here we handle the hard-linking scenario where CUDA is linked during compilation |
|
|
|
|
|
if (CUDA_FOUND) |
|
|
|
|
|
# This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value |
|
|
|
|
|
#list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: CUDA libraries version ${CUDA_VERSION} found, hard-linking will be performed") |
|
|
|
|
|
endif(CUDA_FOUND) |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (VDPAU_FOUND AND NOT APPLE) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-vdpau |
|
|
|
|
|
--enable-hwaccel=h264_vdpau |
|
|
|
|
|
--enable-hwaccel=vp9_vdpau) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: vdpau libraries version ${VDPAU_VERSION} found") |
|
|
|
|
|
else() |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) |
|
|
|
|
|
message(WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)...") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (VDPAU_FOUND AND NOT APPLE) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-vdpau |
|
|
|
|
|
--enable-hwaccel=h264_vdpau |
|
|
|
|
|
--enable-hwaccel=vp9_vdpau) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: vdpau libraries version ${VDPAU_VERSION} found") |
|
|
|
|
|
else() |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) |
|
|
|
|
|
message(WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)...") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (VULKAN_FOUND AND NOT APPLE) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-vulkan |
|
|
|
|
|
--enable-hwaccel=h264_vulkan |
|
|
|
|
|
--enable-hwaccel=vp9_vulkan) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VULKAN_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VULKAN_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VULKAN_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: vulkan libraries version ${VULKAN_VERSION} found") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (VULKAN_FOUND AND NOT APPLE) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_FLAGS |
|
|
|
|
|
--enable-vulkan |
|
|
|
|
|
--enable-hwaccel=h264_vulkan |
|
|
|
|
|
--enable-hwaccel=vp9_vulkan) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VULKAN_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VULKAN_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VULKAN_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: vulkan libraries version ${VULKAN_VERSION} found") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (SPIRV_HEADERS_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${SPIRV_HEADERS_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${SPIRV_HEADERS_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${SPIRV_HEADERS_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: spirv-headers libraries version ${SPIRV_HEADERS_VERSION} found") |
|
|
|
|
|
endif() |
|
|
|
|
|
|
|
|
if (SPIRV_HEADERS_FOUND) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${SPIRV_HEADERS_LIBRARIES}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${SPIRV_HEADERS_INCLUDE_DIRS}) |
|
|
|
|
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${SPIRV_HEADERS_LDFLAGS}) |
|
|
|
|
|
message(STATUS "ffmpeg: spirv-headers libraries version ${SPIRV_HEADERS_VERSION} found") |
|
|
endif() |
|
|
endif() |
|
|
endif() |
|
|
endif() |
|
|
|
|
|
|
|
|
|