mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #4895 from zhaowenlan1779/separate-ffmpeg-options
CMake: separate options for FFmpeg decoder/dumper
This commit is contained in:
		
						commit
						a3fca5b170
					
				
					 10 changed files with 22 additions and 14 deletions
				
			
		|  | @ -87,7 +87,7 @@ cat > /tmp/org.citra.$REPO_NAME.json <<EOF | ||||||
|                 "-DENABLE_QT_TRANSLATION=ON", |                 "-DENABLE_QT_TRANSLATION=ON", | ||||||
|                 "-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON", |                 "-DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON", | ||||||
|                 "-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON", |                 "-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON", | ||||||
|                 "-DENABLE_FFMPEG=ON" |                 "-DENABLE_FFMPEG_VIDEO_DUMPER=ON" | ||||||
|             ], |             ], | ||||||
|             "cleanup": [ |             "cleanup": [ | ||||||
|               "/bin/citra", |               "/bin/citra", | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ cd /citra | ||||||
| echo 'max_size = 3.0G' > "$HOME/.ccache/ccache.conf" | echo 'max_size = 3.0G' > "$HOME/.ccache/ccache.conf" | ||||||
| 
 | 
 | ||||||
| mkdir build && cd build | mkdir build && cd build | ||||||
| cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWCross.cmake" -DUSE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_MF=ON -DENABLE_FFMPEG=ON -DCMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE -DCOMPILE_WITH_DWARF=OFF | cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWCross.cmake" -DUSE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_MF=ON -DENABLE_FFMPEG_VIDEO_DUMPER=ON -DCMAKE_NO_SYSTEM_FROM_IMPORTED=TRUE -DCOMPILE_WITH_DWARF=OFF | ||||||
| ninja | ninja | ||||||
| 
 | 
 | ||||||
| echo "Tests skipped" | echo "Tests skipped" | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| cd /citra | cd /citra | ||||||
| 
 | 
 | ||||||
| mkdir build && cd build | mkdir build && cd build | ||||||
| cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_FFMPEG=ON | cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_FFMPEG_VIDEO_DUMPER=ON | ||||||
| ninja | ninja | ||||||
| 
 | 
 | ||||||
| ctest -VV -C Release | ctest -VV -C Release | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ export PATH="/usr/local/opt/ccache/libexec:$PATH" | ||||||
| 
 | 
 | ||||||
| # TODO: Build using ninja instead of make | # TODO: Build using ninja instead of make | ||||||
| mkdir build && cd build | mkdir build && cd build | ||||||
| cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_FFMPEG=ON | cmake .. -DCMAKE_OSX_ARCHITECTURES="x86_64;x86_64h" -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_FFMPEG_AUDIO_DECODER=ON -DENABLE_FFMPEG_VIDEO_DUMPER=ON | ||||||
| make -j4 | make -j4 | ||||||
| 
 | 
 | ||||||
| ctest -VV -C Release | ctest -VV -C Release | ||||||
|  |  | ||||||
|  | @ -20,7 +20,13 @@ option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) | ||||||
| 
 | 
 | ||||||
| option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) | option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) | ||||||
| 
 | 
 | ||||||
| option(ENABLE_FFMPEG "Enable FFmpeg decoder/encoder" OFF) | option(ENABLE_FFMPEG_AUDIO_DECODER "Enable FFmpeg audio (AAC) decoder" OFF) | ||||||
|  | option(ENABLE_FFMPEG_VIDEO_DUMPER "Enable FFmpeg video dumper" OFF) | ||||||
|  | 
 | ||||||
|  | if (ENABLE_FFMPEG_AUDIO_DECODER OR ENABLE_FFMPEG_VIDEO_DUMPER) | ||||||
|  |     set(ENABLE_FFMPEG ON) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
| CMAKE_DEPENDENT_OPTION(CITRA_USE_BUNDLED_FFMPEG "Download bundled FFmpeg binaries" ON "ENABLE_FFMPEG;MSVC" OFF) | CMAKE_DEPENDENT_OPTION(CITRA_USE_BUNDLED_FFMPEG "Download bundled FFmpeg binaries" ON "ENABLE_FFMPEG;MSVC" OFF) | ||||||
| 
 | 
 | ||||||
| option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF) | option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF) | ||||||
|  | @ -207,8 +213,10 @@ if (ENABLE_FFMPEG) | ||||||
|     if ("${FFmpeg_avcodec_VERSION}" VERSION_LESS "57.48.101") |     if ("${FFmpeg_avcodec_VERSION}" VERSION_LESS "57.48.101") | ||||||
|         message(FATAL_ERROR "Found version for libavcodec is too low. The required version is at least 57.48.101 (included in FFmpeg 3.1 and later).") |         message(FATAL_ERROR "Found version for libavcodec is too low. The required version is at least 57.48.101 (included in FFmpeg 3.1 and later).") | ||||||
|     endif() |     endif() | ||||||
|  | endif() | ||||||
| 
 | 
 | ||||||
|     add_definitions(-DENABLE_FFMPEG) | if (ENABLE_FFMPEG_VIDEO_DUMPER) | ||||||
|  |     add_definitions(-DENABLE_FFMPEG_VIDEO_DUMPER) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| # Platform-specific library requirements | # Platform-specific library requirements | ||||||
|  |  | ||||||
|  | @ -40,9 +40,9 @@ before_build: | ||||||
|         $COMPAT = if ($env:ENABLE_COMPATIBILITY_REPORTING -eq $null) {0} else {$env:ENABLE_COMPATIBILITY_REPORTING} |         $COMPAT = if ($env:ENABLE_COMPATIBILITY_REPORTING -eq $null) {0} else {$env:ENABLE_COMPATIBILITY_REPORTING} | ||||||
|         if ($env:BUILD_TYPE -eq 'msvc') { |         if ($env:BUILD_TYPE -eq 'msvc') { | ||||||
|           # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning |           # redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning | ||||||
|           cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON  -DENABLE_MF=ON -DENABLE_FFMPEG=ON .. 2>&1 && exit 0' |           cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DCITRA_USE_BUNDLED_QT=1 -DCITRA_USE_BUNDLED_SDL2=1 -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON  -DENABLE_MF=ON -DENABLE_FFMPEG_VIDEO_DUMPER=ON .. 2>&1 && exit 0' | ||||||
|         } else { |         } else { | ||||||
|           C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON  -DENABLE_MF=ON -DENABLE_FFMPEG=ON .. 2>&1" |           C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DCMAKE_BUILD_TYPE=Release -DENABLE_QT_TRANSLATION=ON -DCITRA_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON  -DENABLE_MF=ON -DENABLE_FFMPEG_VIDEO_DUMPER=ON .. 2>&1" | ||||||
|         } |         } | ||||||
|   - cd .. |   - cd .. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -47,7 +47,7 @@ if(ENABLE_MF) | ||||||
|     ) |     ) | ||||||
|     target_link_libraries(audio_core PRIVATE mf.lib mfplat.lib mfuuid.lib) |     target_link_libraries(audio_core PRIVATE mf.lib mfplat.lib mfuuid.lib) | ||||||
|     target_compile_definitions(audio_core PUBLIC HAVE_MF) |     target_compile_definitions(audio_core PUBLIC HAVE_MF) | ||||||
| elseif(ENABLE_FFMPEG) | elseif(ENABLE_FFMPEG_AUDIO_DECODER) | ||||||
|     target_sources(audio_core PRIVATE |     target_sources(audio_core PRIVATE | ||||||
|         hle/ffmpeg_decoder.cpp |         hle/ffmpeg_decoder.cpp | ||||||
|         hle/ffmpeg_decoder.h |         hle/ffmpeg_decoder.h | ||||||
|  |  | ||||||
|  | @ -606,7 +606,7 @@ void GMainWindow::ConnectMenuEvents() { | ||||||
|     connect(ui.action_Capture_Screenshot, &QAction::triggered, this, |     connect(ui.action_Capture_Screenshot, &QAction::triggered, this, | ||||||
|             &GMainWindow::OnCaptureScreenshot); |             &GMainWindow::OnCaptureScreenshot); | ||||||
| 
 | 
 | ||||||
| #ifndef ENABLE_FFMPEG | #ifndef ENABLE_FFMPEG_VIDEO_DUMPER | ||||||
|     ui.action_Dump_Video->setEnabled(false); |     ui.action_Dump_Video->setEnabled(false); | ||||||
| #endif | #endif | ||||||
|     connect(ui.action_Dump_Video, &QAction::triggered, [this] { |     connect(ui.action_Dump_Video, &QAction::triggered, [this] { | ||||||
|  |  | ||||||
|  | @ -446,7 +446,7 @@ add_library(core STATIC | ||||||
|     tracer/recorder.h |     tracer/recorder.h | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| if (ENABLE_FFMPEG) | if (ENABLE_FFMPEG_VIDEO_DUMPER) | ||||||
|     target_sources(core PRIVATE |     target_sources(core PRIVATE | ||||||
|         dumping/ffmpeg_backend.cpp |         dumping/ffmpeg_backend.cpp | ||||||
|         dumping/ffmpeg_backend.h |         dumping/ffmpeg_backend.h | ||||||
|  | @ -472,6 +472,6 @@ if (ARCHITECTURE_x86_64) | ||||||
|     target_link_libraries(core PRIVATE dynarmic) |     target_link_libraries(core PRIVATE dynarmic) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| if (ENABLE_FFMPEG) | if (ENABLE_FFMPEG_VIDEO_DUMPER) | ||||||
|     target_link_libraries(core PRIVATE FFmpeg::avcodec FFmpeg::avformat FFmpeg::swscale FFmpeg::swresample FFmpeg::avutil) |     target_link_libraries(core PRIVATE FFmpeg::avcodec FFmpeg::avformat FFmpeg::swscale FFmpeg::swresample FFmpeg::avutil) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
| #include "core/core.h" | #include "core/core.h" | ||||||
| #include "core/core_timing.h" | #include "core/core_timing.h" | ||||||
| #include "core/dumping/backend.h" | #include "core/dumping/backend.h" | ||||||
| #ifdef ENABLE_FFMPEG | #ifdef ENABLE_FFMPEG_VIDEO_DUMPER | ||||||
| #include "core/dumping/ffmpeg_backend.h" | #include "core/dumping/ffmpeg_backend.h" | ||||||
| #endif | #endif | ||||||
| #include "core/gdbstub/gdbstub.h" | #include "core/gdbstub/gdbstub.h" | ||||||
|  | @ -231,7 +231,7 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, u32 system_mo | ||||||
|         return result; |         return result; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| #ifdef ENABLE_FFMPEG | #ifdef ENABLE_FFMPEG_VIDEO_DUMPER | ||||||
|     video_dumper = std::make_unique<VideoDumper::FFmpegBackend>(); |     video_dumper = std::make_unique<VideoDumper::FFmpegBackend>(); | ||||||
| #else | #else | ||||||
|     video_dumper = std::make_unique<VideoDumper::NullBackend>(); |     video_dumper = std::make_unique<VideoDumper::NullBackend>(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue