@ -11,125 +11,149 @@ set(FFmpeg_HWACCEL_LDFLAGS)
if ( NOT YUZU_USE_BUNDLED_FFMPEG )
set ( FFmpeg_CROSS_COMPILE_FLAGS "" )
if ( ANDROID )
if ( CMAKE_CROSSCOMPILING )
message ( STATUS "ffmpeg: Enabling cross compilation ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" )
# T O D O : M a y b e u s e C M A K E _ S Y S R O O T ? a n d p r o b a b l y p r o v i d e a t o o l c h a i n f i l e f o r a n d r o i d
# I m e a n i s n ' t t h a t t h e " p r o p e r " w a y a n y w a y s ?
string ( TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" FFmpeg_HOST_SYSTEM_NAME )
set ( TOOLCHAIN "${ANDROID_NDK}/toolchains/llvm/prebuilt/${FFmpeg_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}" )
set ( SYSROOT "${TOOLCHAIN}/sysroot" )
set ( FFmpeg_CPU "armv8-a" )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS
- - e n a b l e - c r o s s - c o m p i l e
- - a r c h = a r m 6 4
# - - c p u = $ { F F m p e g _ C P U }
- - c r o s s - p r e f i x = " $ { T O O L C H A I N } / b i n / a a r c h 6 4 - l i n u x - a n d r o i d - "
- - s y s r o o t = " $ { S Y S R O O T } "
- - t a r g e t - o s = a n d r o i d
- - e x t r a - l d f l a g s = " - - l d - p a t h = $ { T O O L C H A I N } / b i n / l d . l l d "
- - e x t r a - l d f l a g s = " - n o s t d l i b "
)
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
# U s e r a t t e m p t s t o d o a F F m p e g c r o s s c o m p i l a t i o n b e c a u s e . . .
# H e r e w e j u s t q u i c k l y t e s t a g a i n s t h o s t / s y s t e m p r o c e s s o r s n o t m a t c h i n g
# T O D O : T e s t f o r v e r s i o n s n o t m a t c h i n g a s w e l l ?
elseif ( NOT ( CMAKE_HOST_SYSTEM_PROCESSOR MATCHES CMAKE_SYSTEM_PROCESSOR
A N D C M A K E _ H O S T _ S Y S T E M _ N A M E M A T C H E S C M A K E _ S Y S T E M _ N A M E ) )
string ( TOLOWER "${CMAKE_SYSTEM_NAME}" FFmpeg_SYSTEM_NAME )
# s y s t e m s F F m p e g n a t i v e l y s u p p o r t s
if ( NOT ( NETBSD OR SOLARIS OR FREEBSD
O R O P E N B S D O R D R A G O N F L Y B S D O R H A I K U
O R L I N U X O R M S Y S O R WIN32 O R A N D R O I D O R APPLE ) )
set ( FFmpeg_SYSTEM_NAME "none" )
endif ( )
# T O D O : C a n w e r e a l l y d o b e t t e r ? A u t o - d e t e c t i o n ? S o m e t h i n g c l e v e r ?
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS
- - e n a b l e - c r o s s - c o m p i l e
- - a r c h = " $ { C M A K E _ S Y S T E M _ P R O C E S S O R } "
- - t a r g e t - o s = " $ { F F m p e g _ S Y S T E M _ N A M E } "
- - s y s r o o t = " $ { C M A K E _ S Y S R O O T } "
)
if ( DEFINED FFmpeg_CROSS_PREFIX )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS --cross-prefix= "${FFmpeg_CROSS_PREFIX}" )
if ( ANDROID )
string ( TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" FFmpeg_HOST_SYSTEM_NAME )
set ( TOOLCHAIN "${ANDROID_NDK}/toolchains/llvm/prebuilt/${FFmpeg_HOST_SYSTEM_NAME}-${CMAKE_HOST_SYSTEM_PROCESSOR}" )
set ( SYSROOT "${TOOLCHAIN}/sysroot" )
set ( FFmpeg_CPU "armv8-a" )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS
- - e n a b l e - c r o s s - c o m p i l e
- - a r c h = a r m 6 4
# - - c p u = $ { F F m p e g _ C P U }
- - c r o s s - p r e f i x = " $ { T O O L C H A I N } / b i n / a a r c h 6 4 - l i n u x - a n d r o i d - "
- - s y s r o o t = " $ { S Y S R O O T } "
- - t a r g e t - o s = a n d r o i d
- - e x t r a - l d f l a g s = " - - l d - p a t h = $ { T O O L C H A I N } / b i n / l d . l l d "
- - e x t r a - l d f l a g s = " - n o s t d l i b " )
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
else ( )
message ( WARNING "Please set FFmpeg_CROSS_PREFIX to your cross toolchain prefix, for example: \${CMAKE_STAGING_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-" )
string ( TOLOWER "${CMAKE_SYSTEM_NAME}" FFmpeg_SYSTEM_NAME )
# s y s t e m s F F m p e g n a t i v e l y s u p p o r t s
if ( NOT ( NETBSD OR SOLARIS OR FREEBSD
O R O P E N B S D O R D R A G O N F L Y B S D O R H A I K U
O R L I N U X O R M S Y S O R WIN32 O R A N D R O I D O R APPLE ) )
set ( FFmpeg_SYSTEM_NAME "none" )
endif ( )
# T O D O : C a n w e r e a l l y d o b e t t e r ? A u t o - d e t e c t i o n ? S o m e t h i n g c l e v e r ?
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS
- - e n a b l e - c r o s s - c o m p i l e
- - a r c h = " $ { C M A K E _ S Y S T E M _ P R O C E S S O R } "
- - t a r g e t - o s = " $ { F F m p e g _ S Y S T E M _ N A M E } "
- - s y s r o o t = " $ { C M A K E _ S Y S R O O T } " )
if ( DEFINED FFmpeg_CROSS_PREFIX )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS --cross-prefix= "${FFmpeg_CROSS_PREFIX}" )
else ( )
message ( FATAL_ERROR "Please set FFmpeg_CROSS_PREFIX to your cross toolchain prefix, for example: \${CMAKE_STAGING_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-" )
endif ( )
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
endif ( )
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
endif ( )
endif ( )
if ( OPENORBIS OR MANAGARM OR EMSCRIPTEN )
# D o e s n ' t s u p p o r t V A - A P I , d o n ' t g o t h r u t h e e m b a r r a s s m e n t o f t r y i n g t o e n a b l e i t
if ( WIN32 )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - d i s a b l e - v a a p i
- - d i s n a b l e - c u v i d
- - d i s n a b l e - f f n v c o d e c
- - d i s n a b l e - n v d e c
- - d i s a b l e - v u l k a n
- - d i s a b l e - l i b d r m )
elseif ( UNIX )
find_package ( PkgConfig REQUIRED )
find_package ( X11 )
if ( X11_FOUND )
# I n c l u d e X 1 1 i f p o s s i b l e , s o m e A P I s s u c h a s V D P A U h e a v i l y d e p e n d
# u p o n i t ' s e x i s t e n c e !
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ X11_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ X11_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ X11_LDFLAGS } )
if ( NOT APPLE )
# I n S o l a r i s n e e d s e x p l i c i t l i n k i n g f o r f f m p e g w h i c h l i n k s t o / l i b / a m d 6 4 / l i b X 1 1 . s o
if ( SOLARIS )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
X 1 1
" $ { C M A K E _ S Y S R O O T } / u s r / l i b / x o r g / a m d 6 4 / l i b d r m . s o " )
else ( )
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 ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --enable-libdrm )
endif ( )
pkg_check_modules ( LIBVA libva )
if ( LIBVA_FOUND )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ LIBVA_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ LIBVA_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ LIBVA_LDFLAGS } )
# L o g i c a l l y , t h e y c a n o n l y e x i s t i f l i b v a i t s e l f e x i s t s
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 ( )
- - e n a b l e - d 3 d 1 1 v a
- - e n a b l e - d 3 d 1 2 v a
- - e n a b l e - d x v a 2
- - e n a b l e - h w a c c e l = d 3 d 1 1 v a _ h 2 6 4
- - e n a b l e - h w a c c e l = d 3 d 1 1 v a 2 _ h 2 6 4
- - e n a b l e - h w a c c e l = d 3 d 1 2 v a _ h 2 6 4
- - e n a b l e - h w a c c e l = d x v a 2 _ h 2 6 4
- - e n a b l e - h w a c c e l = d 3 d 1 1 v a _ v p 9
- - e n a b l e - h w a c c e l = d 3 d 1 1 v a 2 _ v p 9
- - e n a b l e - h w a c c e l = d 3 d 1 2 v a _ v p 9
- - e n a b l e - h w a c c e l = d x v a 2 _ v p 9 )
elseif ( ANDROID )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - m e d i a c o d e c
- - e n a b l e - j n i
- - e n a b l e - d e c o d e r = h 2 6 4 _ m e d i a c o d e c
- - e n a b l e - d e c o d e r = v p 8 _ m e d i a c o d e c
- - e n a b l e - d e c o d e r = v p 9 _ m e d i a c o d e c )
elseif ( APPLE )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v i d e o t o o l b o x
- - e n a b l e - h w a c c e l = v i d e o t o o l b o x _ h 2 6 4
- - e n a b l e - h w a c c e l = v i d e o t o o l b o x _ v p 9 )
endif ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - h w a c c e l = h 2 6 4 _ v a a p i
- - e n a b l e - h w a c c e l = v p 8 _ v a a p i
- - e n a b l e - h w a c c e l = v p 9 _ v a a p i )
message ( STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found" )
find_package ( X11 )
if ( X11_FOUND )
# I n c l u d e X 1 1 i f p o s s i b l e , V D P A U l i s t s i t a s c o m p l e m e n t a r y
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ X11_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ X11_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ X11_LDFLAGS } )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi )
endif ( )
message ( STATUS "ffmpeg: X11 ${X11_FOUND} ${X11_VERSION}" )
find_package ( PkgConfig )
if ( PkgConfig_FOUND )
pkg_check_modules ( LIBDRM libdrm )
if ( LIBDRM_FOUND )
# S o l a r i s n e e d s e x p l i c i t l i n k i n g f o r f f m p e g w h i c h l i n k s t o / l i b / a m d 6 4 / l i b X 1 1 . s o
if ( SOLARIS )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
X 1 1
" $ { C M A K E _ S Y S R O O T } / u s r / l i b / x o r g / a m d 6 4 / l i b d r m . s o " )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi )
message ( WARNING "ffmpeg: libva-dev not found, disabling Video Acceleration API (VA-API)..." )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ LIBDRM_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ LIBDRM_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ LIBDRM_LDFLAGS } )
endif ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --enable-libdrm )
endif ( )
pkg_check_modules ( LIBVA libva )
if ( LIBVA_FOUND )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ LIBVA_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ LIBVA_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ LIBVA_LDFLAGS } )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v a a p i
- - e n a b l e - h w a c c e l = h 2 6 4 _ v a a p i
- - e n a b l e - h w a c c e l = v p 8 _ v a a p i
- - e n a b l e - h w a c c e l = v p 9 _ v a a p i )
# L o g i c a l l y , t h e y c a n o n l y e x i s t i f l i b v a i t s e l f e x i s t s
pkg_check_modules ( LIBVA-DRM libva-drm )
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 ( )
message ( STATUS "ffmpeg: LIBVA-DRM ${LIBVA-DRM_FOUND} ${LIBVA-DRM_VERSION}" )
pkg_check_modules ( LIBVA-X11 libva-x11 )
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 ( )
message ( STATUS "ffmpeg: LIBVA-X11 ${LIBVA-X11_FOUND} ${LIBVA-X11_VERSION}" )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi )
message ( WARNING "ffmpeg: X11 libraries not found, disabling VA-API..." )
endif ( )
message ( STATUS "ffmpeg: LIBVA ${LIBVA_FOUND} ${LIBVA_VERSION}" )
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 ( VDPAU_FOUND )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v d p a u
- - e n a b l e - h w a c c e l = h 2 6 4 _ v d p a u
- - e n a b l e - h w a c c e l = v p 9 _ v d p a u )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ VDPAU_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ VDPAU_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ VDPAU_LDFLAGS } )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau )
endif ( )
message ( STATUS "ffmpeg: VDPAU ${VDPAU_FOUND} ${VDPAU_VERSION}" )
pkg_check_modules ( FFNVCODEC ffnvcodec )
if ( FFNVCODEC_FOUND )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - c u v i d
@ -141,51 +165,38 @@ elseif (UNIX)
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" )
# f f n v e n c c o u l d l o a d C U D A l i b r a r i e s a t t h e r u n t i m e u s i n g d l o p e n / d l s y m o r L o a d L i b r a r y / G e t P r o c A d d r e s s
# h e r e w e h a n d l e t h e h a r d - l i n k i n g s c e n a r i o w h e r e C U D A i s l i n k e d d u r i n g c o m p i l a t i o n
if ( CUDA_FOUND )
# T h i s l i n e c a u s e s b u i l d e r r o r i f C U D A _ I N C L U D E _ D I R S i s a n y t h i n g b u t a s i n g l e n o n - e m p t y v a l u e
# 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
- - e n a b l e - v d p a u
- - e n a b l e - h w a c c e l = h 2 6 4 _ v d p a u
- - e n a b l e - h w a c c e l = v p 9 _ v d p a u )
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)..." )
find_package ( CUDAToolkit )
if ( CUDAToolkit_FOUND )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ CUDAToolkit_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ CUDAToolkit_INCLUDE_DIRS } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ CUDAToolkit_LDFLAGS } )
endif ( )
message ( STATUS "ffmpeg: CUDAToolkit ${CUDAToolkit_FOUND} ${CUDAToolkit_VERSION}" )
endif ( )
message ( STATUS "ffmpeg: FFNVCODEC ${FFNVCODEC_FOUND} ${FFNVCODEC_VERSION}" )
endif ( )
message ( STATUS "ffmpeg: PkgConfig ${PkgConfig_FOUND} ${PkgConfig_VERSION}" )
if ( VULKAN_FOUND AND NOT APPLE )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v u l k a n
- - e n a b l e - h w a c c e l = h 2 6 4 _ v u l k a n
- - e n a b l e - h w a c c e l = v p 9 _ v u l k a n )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ VULKAN_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INC LUDE_D IRS ${ VULKAN_INCLUDE_DIR S } )
list ( APPEND FFmpeg_HWACCEL_LDFLAGS ${ VULKAN_LDFLAG S } )
message ( STATUS "ffmpeg: vulkan libraries version ${VULKAN_VERSION} found" )
endif ( )
find_package ( Vulkan )
if ( Vulkan_FOUND )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - v u l k a n
- - e n a b l e - h w a c c e l = h 2 6 4 _ v u l k a n
- - e n a b l e - h w a c c e l = v p 9 _ v u l k a n )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES ${ Vulkan_LIBRARIES } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${ Vulkan_INCLUDE_DIRS } )
endif ( )
message ( STATUS "ffmpeg: Vulkan ${Vulkan_FOUND} ${Vulkan_VERSION}" )
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 ( )
find_package ( spirv-headers )
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 } )
endif ( )
message ( STATUS "ffmpeg: spirv-headers ${spirv-headers_FOUND} ${spirv-headers_VERSION}" )
if ( OPENORBIS )
list ( APPEND FFmpeg_CROSS_COMPILE_LIBS
@ -222,43 +233,32 @@ if (YUZU_USE_BUNDLED_FFMPEG)
set ( FFmpeg_INCLUDE_DIR
" $ { F F m p e g _ S O U R C E _ D I R } / i n c l u d e ; $ { F F m p e g _ H W A C C E L _ I N C L U D E _ D I R S } "
P A R E N T _ S C O P E
)
P A R E N T _ S C O P E )
set ( FFmpeg_PATH
" $ { F F m p e g _ S O U R C E _ D I R } "
P A R E N T _ S C O P E
)
P A R E N T _ S C O P E )
set ( FFmpeg_LIBRARY_DIR
" $ { F F m p e g _ S O U R C E _ D I R } / b i n "
P A R E N T _ S C O P E
)
P A R E N T _ S C O P E )
set ( FFmpeg_LIBRARIES
F F m p e g : : F F m p e g
$ { F F m p e g _ H W A C C E L _ L I B R A R I E S }
P A R E N T _ S C O P E
)
P A R E N T _ S C O P E )
set ( FFmpeg_FOUND YES )
else ( )
# B u i l d F F m p e g f r o m e x t e r n a l s
message ( STATUS "Using FFmpeg from externals" )
AddJsonPackage ( ffmpeg )
# F F m p e g h a s s o u r c e t h a t r e q u i r e s o n e o f n a s m o r y a s m t o a s s e m b l e i t .
if ( CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64)" )
# F F m p e g h a s s o u r c e t h a t r e q u i r e s o n e o f n a s m o r y a s m t o a s s e m b l e i t .
# R E Q U I R E D t h r o w s a n e r r o r i f n o t f o u n d h e r e d u r i n g c o n f i g u r a t i o n r a t h e r t h a n d u r i n g c o m p i l a t i o n .
find_program ( ASSEMBLER NAMES nasm yasm )
if ( "${ASSEMBLER}" STREQUAL "ASSEMBLER-NOTFOUND" )
message ( FATAL_ERROR "One of either `nasm` or `yasm` not found but is required." )
endif ( )
endif ( )
find_program ( AUTOCONF autoconf )
if ( "${AUTOCONF}" STREQUAL "AUTOCONF-NOTFOUND" )
message ( FATAL_ERROR "Required program `autoconf` not found." )
find_program ( ASSEMBLER NAMES nasm yasm REQUIRED )
endif ( )
AddJsonPackage ( ffmpeg )
find_program ( AUTOCONF autoconf REQUIRED )
set ( FFmpeg_PREFIX ${ ffmpeg_SOURCE_DIR } )
set ( FFmpeg_BUILD_DIR ${ ffmpeg_BINARY_DIR } )
@ -291,6 +291,7 @@ else()
# ` - - d i s a b l e - v d p a u ` i s n e e d e d t o a v o i d l i n k i n g i s s u e s
set ( FFmpeg_CC ${ CMAKE_C_COMPILER_LAUNCHER } ${ CMAKE_C_COMPILER } )
set ( FFmpeg_CXX ${ CMAKE_CXX_COMPILER_LAUNCHER } ${ CMAKE_CXX_COMPILER } )
set ( FFmpeg_HOST_CC ${ CMAKE_C_HOST_COMPILER } )
if ( FFmpeg_IS_CROSS_COMPILING )
list ( APPEND FFmpeg_CROSS_COMPILE_FLAGS --ld= ${ CMAKE_LINKER } )
endif ( )
@ -306,6 +307,7 @@ else()
- - d i s a b l e - a v f o r m a t
- - d i s a b l e - d o c
- - d i s a b l e - e v e r y t h i n g
- - d i s a b l e - a u t o d e t e c t
- - d i s a b l e - f f m p e g
- - d i s a b l e - f f p r o b e
- - d i s a b l e - n e t w o r k
@ -321,13 +323,14 @@ else()
- - e x t r a - c f l a g s = $ { C M A K E _ C _ F L A G S }
- - e x t r a - c x x f l a g s = $ { C M A K E _ C X X _ F L A G S }
- - e x t r a - l d f l a g s = " $ { F F m p e g _ H W A C C E L _ L D F L A G S } "
- - h o s t - c c = $ { F F m p e g _ H O S T _ C C }
$ { F F m p e g _ H W A C C E L _ F L A G S }
$ { F F m p e g _ C R O S S _ C O M P I L E _ F L A G S }
W O R K I N G _ D I R E C T O R Y
$ { F F m p e g _ B U I L D _ D I R }
)
$ { F F m p e g _ B U I L D _ D I R } )
unset ( FFmpeg_CC )
unset ( FFmpeg_CXX )
unset ( FFmpeg_HOST_CC )
unset ( FFmpeg_LD )
unset ( FFmpeg_HWACCEL_FLAGS )
unset ( FFmpeg_CROSS_COMPILE_FLAGS )
@ -335,26 +338,22 @@ else()
# W o r k a r o u n d f o r U b u n t u 1 8 . 0 4 ' s o l d e r v e r s i o n o f m a k e n o t b e i n g a b l e t o c a l l m a k e a s a c h i l d
# w i t h c o n t e x t o f t h e j o b s e r v e r . A l s o h e l p s n i n j a u s e r s .
cmake_host_system_information ( RESULT SYSTEM_THREADS QUERY NUMBER_OF_LOGICAL_CORES )
set ( FFmpeg_MAKE_ARGS "" )
if ( DEFINED SYSTEM_THREADS )
set ( FFmpeg_MAKE_ARGS -j ${ SYSTEM_THREADS } )
endif ( )
set ( FFmpeg_BUILD_LIBRARIES ${ FFmpeg_LIBRARIES } )
# B S D m a k e o r S o l a r i s m a k e d o n ' t s u p p o r t f f m p e g m a k e - j 8
if ( DEFINED SYSTEM_THREADS AND ( LINUX OR ANDROID OR APPLE OR WIN32 ) )
set ( FFmpeg_MAKE_ARGS -j ${ SYSTEM_THREADS } )
else ( )
set ( FFmpeg_MAKE_ARGS "" )
endif ( )
# M o s t d i s t r o s u s e ' g m a k e ' , A r c h u s e s ' m a k e '
find_program ( MAKE gmake NAMES gmake make REQUIRED )
find_program ( MAKE NAMES gmake make REQUIRED )
add_custom_command (
O U T P U T
$ { F F m p e g _ B U I L D _ L I B R A R I E S }
C O M M A N D
$ { M A K E } $ { F F m p e g _ M A K E _ A R G S }
W O R K I N G _ D I R E C T O R Y
$ { F F m p e g _ B U I L D _ D I R }
)
$ { F F m p e g _ B U I L D _ D I R } )
set ( FFmpeg_INCLUDE_DIR
" $ { F F m p e g _ P R E F I X } ; $ { F F m p e g _ B U I L D _ D I R } ; $ { F F m p e g _ H W A C C E L _ I N C L U D E _ D I R S } "
@ -376,12 +375,10 @@ else()
unset ( FFmpeg_HWACCEL_INCLUDE_DIRS )
unset ( FFmpeg_HWACCEL_LDFLAGS )
unset ( FFmpeg_HWACCEL_LIBRARIES )
if ( FFmpeg_FOUND )
message ( STATUS "Found FFmpeg version ${FFmpeg_VERSION}" )
else ( )
message ( FATAL_ERROR "FFmpeg not found" )
endif ( )
endif ( )
unset ( FFmpeg_COMPONENTS )
if ( NOT FFmpeg_FOUND )
message ( FATAL_ERROR "FFmpeg not found" )
endif ( )
message ( STATUS "Found FFmpeg version ${FFmpeg_VERSION}" )