@ -13,63 +13,98 @@ set(FFmpeg_HWACCEL_FLAGS)
set ( FFmpeg_HWACCEL_INCLUDE_DIRS )
set ( FFmpeg_HWACCEL_LDFLAGS )
if ( UNIX AND NOT ANDROID )
find_package ( PkgConfig REQUIRED )
if ( NOT ANDROID )
pkg_check_modules ( LIBVA libva )
pkg_check_modules ( CUDA cuda )
pkg_check_modules ( FFNVCODEC ffnvcodec )
pkg_check_modules ( VDPAU vdpau )
if ( NOT YUZU_USE_BUNDLED_FFMPEG )
set ( FFmpeg_CROSS_COMPILE_FLAGS "" )
if ( ANDROID )
# 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 )
# 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 ?
if ( NOT DEFINED FFmpeg_CROSS_PREFIX )
message ( ERROR "Please set FFmpeg_CROSS_PREFIX to your cross toolchain prefix, for example: \${CMAKE_STAGING_PREFIX}/bin/${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_SYSTEM_NAME}-" )
endif ( )
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 } "
- - c r o s s - p r e f i x = " $ { F F m p e g _ C R O S S _ P R E F I X } "
)
set ( FFmpeg_IS_CROSS_COMPILING TRUE )
endif ( )
endif ( )
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 ( PLATFORM_SUN )
find_library ( LIBDRM_LIB libdrm PATHS /usr/lib/64 /usr/lib/amd64 /usr/lib )
if ( LIBDRM_LIB )
if ( UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING )
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( LIBVA libva )
pkg_check_modules ( CUDA cuda )
pkg_check_modules ( FFNVCODEC ffnvcodec )
pkg_check_modules ( VDPAU vdpau )
find_package ( X11 )
if ( X11_FOUND )
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 ( PLATFORM_SUN )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
X 1 1
" $ { L I B D R M _ L I B } " )
message ( STATUS "Found libdrm at: ${LIBDRM_LIB}" )
" $ { 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 ( )
message ( WARNING "libdrm not found, disabling libdrm support" )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - d i s a b l e - l i b d r m )
pkg_check_modules ( LIBDRM libdrm REQUIRED )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
$ { L I B D R M _ L I B R A R I E S } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
$ { L I B D R M _ I N C L U D E _ D I R S } )
endif ( )
else ( )
pkg_check_modules ( LIBDRM libdrm REQUIRED )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
$ { L I B D R M _ L I B R A R I E S } )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
$ { L I B D R M _ I N C L U D E _ D I R S } )
list ( APPEND FFmpeg_HWACCEL_FLAGS
- - e n a b l e - l i b d r m )
endif ( )
endif ( )
if ( LIBVA_FOUND )
find_package ( X11 REQUIRED )
pkg_check_modules ( LIBVA-DRM libva-drm REQUIRED )
pkg_check_modules ( LIBVA-X11 libva-x11 REQUIRED )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
$ { X 1 1 _ L I B R A R I E S }
$ { L I B V A - D R M _ L I B R A R I E S }
$ { L I B V A - X 1 1 _ L I B R A R I E S }
$ { L I B V A _ L I B R A R I E S } )
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 )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
$ { X 1 1 _ I N C L U D E _ D I R S }
$ { L I B V A - D R M _ I N C L U D E _ D I R S }
$ { L I B V A - X 1 1 _ I N C L U D E _ D I R S }
$ { L I B V A _ I N C L U D E _ D I R S }
)
message ( STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found" )
if ( LIBVA_FOUND )
pkg_check_modules ( LIBVA-DRM libva-drm REQUIRED )
pkg_check_modules ( LIBVA-X11 libva-x11 REQUIRED )
list ( APPEND FFmpeg_HWACCEL_LIBRARIES
$ { X 1 1 _ L I B R A R I E S }
$ { L I B V A - D R M _ L I B R A R I E S }
$ { L I B V A - X 1 1 _ L I B R A R I E S }
$ { L I B V A _ L I B R A R I E S } )
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 )
list ( APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
$ { X 1 1 _ I N C L U D E _ D I R S }
$ { L I B V A - D R M _ I N C L U D E _ D I R S }
$ { L I B V A - X 1 1 _ I N C L U D E _ D I R S }
$ { L I B V A _ I N C L U D E _ D I R S }
)
message ( STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found" )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi )
message ( WARNING "ffmpeg: libva-dev not found, disabling Video Acceleration API (VA-API)..." )
endif ( )
else ( )
list ( APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi )
message ( WARNING "ffmpeg: libva-dev not found, disabling Video Acceleration API (VA-API) ..." )
message ( WARNING "ffmpeg: X11 libraries not found, disabling VA-API ..." )
endif ( )
if ( FFNVCODEC_FOUND )
@ -193,24 +228,6 @@ else()
find_program ( BASH_PROGRAM bash REQUIRED )
set ( FFmpeg_CROSS_COMPILE_FLAGS "" )
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
- - a r c h = a r m 6 4
# - - c p u = $ { F F m p e g _ C P U }
- - e n a b l e - c r o s s - c o m p i l e
- - 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 "
)
endif ( )
# ` c o n f i g u r e ` p a r a m e t e r s b u i l d s o n l y e x a c t l y w h a t y u z u n e e d s f r o m F F m p e g
# ` - - 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 } )
@ -236,6 +253,7 @@ else()
- - e n a b l e - p i c
- - c c = " $ { F F m p e g _ C C } "
- - c x x = " $ { F F m p e g _ C X X } "
$ { F F m p e g _ C R O S S _ C O M P I L E _ F L A G }
$ { 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