diff options
| -rwxr-xr-x | .ci/scripts/windows/docker.sh | 5 | ||||
| -rw-r--r-- | .gitmodules | 6 | ||||
| -rw-r--r-- | CMakeLists.txt | 218 | ||||
| -rw-r--r-- | externals/CMakeLists.txt | 5 | ||||
| m--------- | externals/ffmpeg | 0 | ||||
| -rw-r--r-- | externals/ffmpeg/CMakeLists.txt | 209 | ||||
| m--------- | externals/ffmpeg/ffmpeg | 0 | ||||
| -rw-r--r-- | src/video_core/command_classes/codecs/codec.cpp | 6 | 
8 files changed, 222 insertions, 227 deletions
| diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh index 584b9b39f..155d8a5c8 100755 --- a/.ci/scripts/windows/docker.sh +++ b/.ci/scripts/windows/docker.sh @@ -41,11 +41,12 @@ for i in package/*.exe; do  done  pip3 install pefile -python3 .ci/scripts/windows/scan_dll.py package/*.exe package/imageformats/*.dll "package/" +python3 .ci/scripts/windows/scan_dll.py package/*.exe "package/" +python3 .ci/scripts/windows/scan_dll.py package/imageformats/*.dll "package/"  # copy FFmpeg libraries  EXTERNALS_PATH="$(pwd)/build/externals" -FFMPEG_DLL_PATH="$(find "${EXTERNALS_PATH}" -maxdepth 1 -type d | grep 'ffmpeg-')/bin" +FFMPEG_DLL_PATH="$(find ${EXTERNALS_PATH} -maxdepth 1 -type d | grep ffmpeg)/bin"  find ${FFMPEG_DLL_PATH} -type f -regex ".*\.dll" -exec cp -v {} package/ ';'  # copy libraries from yuzu.exe path diff --git a/.gitmodules b/.gitmodules index a9cf9a24a..dc6ed500f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,12 +34,12 @@  [submodule "opus"]  	path = externals/opus/opus  	url = https://github.com/xiph/opus.git +[submodule "ffmpeg"] +	path = externals/ffmpeg +	url = https://git.ffmpeg.org/ffmpeg.git  [submodule "SDL"]  	path = externals/SDL  	url = https://github.com/libsdl-org/SDL.git  [submodule "externals/cpp-httplib"]  	path = externals/cpp-httplib  	url = https://github.com/yhirose/cpp-httplib.git -[submodule "externals/ffmpeg/ffmpeg"] -	path = externals/ffmpeg/ffmpeg -	url = https://git.ffmpeg.org/ffmpeg.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 18d553f4d..a810e11c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -514,7 +514,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")  endif()  if (NOT YUZU_USE_BUNDLED_FFMPEG)      # Use system installed FFmpeg -    find_package(FFmpeg 4.3 QUIET COMPONENTS ${FFmpeg_COMPONENTS}) +    find_package(FFmpeg QUIET COMPONENTS ${FFmpeg_COMPONENTS})      if (FFmpeg_FOUND)          # Overwrite aggregate defines from FFmpeg module to avoid over-linking libraries. @@ -527,11 +527,225 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG)              set(FFmpeg_INCLUDE_DIR ${FFmpeg_INCLUDE_DIR} ${FFmpeg_INCLUDE_${COMPONENT}} CACHE PATH "Path to FFmpeg headers" FORCE)          endforeach()      else() -        message(WARNING "FFmpeg not found or too old, falling back to externals") +        message(WARNING "FFmpeg not found, falling back to externals")          set(YUZU_USE_BUNDLED_FFMPEG ON)      endif()  endif() +if (YUZU_USE_BUNDLED_FFMPEG) +    if (NOT WIN32) +        # TODO(lat9nq): Move this to externals/ffmpeg/CMakeLists.txt (and move externals/ffmpeg to +        # externals/ffmpeg/ffmpeg) + +        # Build FFmpeg from externals +        message(STATUS "Using FFmpeg from externals") + +        # FFmpeg has source that requires one of nasm or yasm to assemble it. +        # REQUIRED throws an error if not found here during configuration rather than during compilation. +        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() + +        find_program(AUTOCONF autoconf) +        if ("${AUTOCONF}" STREQUAL "AUTOCONF-NOTFOUND") +            message(FATAL_ERROR "Required program `autoconf` not found.") +        endif() + +        set(FFmpeg_PREFIX ${PROJECT_SOURCE_DIR}/externals/ffmpeg) +        set(FFmpeg_BUILD_DIR ${PROJECT_BINARY_DIR}/externals/ffmpeg) +        set(FFmpeg_MAKEFILE ${FFmpeg_BUILD_DIR}/Makefile) +        make_directory(${FFmpeg_BUILD_DIR}) + +        # Read version string from external +        file(READ ${FFmpeg_PREFIX}/RELEASE FFmpeg_VERSION) +        set(FFmpeg_FOUND NO) +        if (NOT FFmpeg_VERSION STREQUAL "") +            set(FFmpeg_FOUND YES) +        endif() + +        unset(FFmpeg_LIBRARIES CACHE) +        foreach(COMPONENT ${FFmpeg_COMPONENTS}) +            set(FFmpeg_${COMPONENT}_PREFIX "${FFmpeg_BUILD_DIR}/lib${COMPONENT}") +            set(FFmpeg_${COMPONENT}_LIB_NAME "lib${COMPONENT}.a") +            set(FFmpeg_${COMPONENT}_LIBRARY "${FFmpeg_${COMPONENT}_PREFIX}/${FFmpeg_${COMPONENT}_LIB_NAME}") + +            set(FFmpeg_LIBRARIES +                ${FFmpeg_LIBRARIES} +                ${FFmpeg_${COMPONENT}_LIBRARY} +                CACHE PATH "Paths to FFmpeg libraries" FORCE) +        endforeach() + +        Include(FindPkgConfig REQUIRED) +        pkg_check_modules(LIBVA libva) +        pkg_check_modules(CUDA cuda) +        pkg_check_modules(FFNVCODEC ffnvcodec) +        pkg_check_modules(VDPAU vdpau) + +        set(FFmpeg_HWACCEL_LIBRARIES) +        set(FFmpeg_HWACCEL_FLAGS) +        set(FFmpeg_HWACCEL_INCLUDE_DIRS) +        set(FFmpeg_HWACCEL_LDFLAGS) + +        if(LIBVA_FOUND) +            pkg_check_modules(LIBDRM libdrm REQUIRED) +            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 +                ${LIBDRM_LIBRARIES} +                ${X11_LIBRARIES} +                ${LIBVA-DRM_LIBRARIES} +                ${LIBVA-X11_LIBRARIES} +                ${LIBVA_LIBRARIES}) +            set(FFmpeg_HWACCEL_FLAGS +                --enable-hwaccel=h264_vaapi +                --enable-hwaccel=vp8_vaapi +                --enable-hwaccel=vp9_vaapi +                --enable-libdrm) +            list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS +                ${LIBDRM_INCLUDE_DIRS} +                ${X11_INCLUDE_DIRS} +                ${LIBVA-DRM_INCLUDE_DIRS} +                ${LIBVA-X11_INCLUDE_DIRS} +                ${LIBVA_INCLUDE_DIRS} +            ) +            message(STATUS "VA-API found") +        else() +            set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) +        endif() + +        if (FFNVCODEC_FOUND AND CUDA_FOUND) +            list(APPEND FFmpeg_HWACCEL_FLAGS +                --enable-cuvid +                --enable-ffnvcodec +                --enable-nvdec +                --enable-hwaccel=h264_nvdec +                --enable-hwaccel=vp8_nvdec +                --enable-hwaccel=vp9_nvdec +                --extra-cflags=-I${CUDA_INCLUDE_DIRS} +            ) +            list(APPEND FFmpeg_HWACCEL_LIBRARIES +                ${FFNVCODEC_LIBRARIES} +                ${CUDA_LIBRARIES} +            ) +            list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS +                ${FFNVCODEC_INCLUDE_DIRS} +                ${CUDA_INCLUDE_DIRS} +            ) +            list(APPEND FFmpeg_HWACCEL_LDFLAGS +                ${FFNVCODEC_LDFLAGS} +                ${CUDA_LDFLAGS} +            ) +            message(STATUS "ffnvcodec libraries version ${FFNVCODEC_VERSION} found") +        endif() + +        if (VDPAU_FOUND) +            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 "vdpau libraries version ${VDPAU_VERSION} found") +        else() +            list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) +        endif() + +        # `configure` parameters builds only exactly what yuzu needs from FFmpeg +        # `--disable-vdpau` is needed to avoid linking issues +        add_custom_command( +            OUTPUT +                ${FFmpeg_MAKEFILE} +            COMMAND +                /bin/bash ${FFmpeg_PREFIX}/configure +                    --disable-avdevice +                    --disable-avfilter +                    --disable-avformat +                    --disable-doc +                    --disable-everything +                    --disable-ffmpeg +                    --disable-ffprobe +                    --disable-network +                    --disable-postproc +                    --disable-swresample +                    --enable-decoder=h264 +                    --enable-decoder=vp8 +                    --enable-decoder=vp9 +                    --cc="${CMAKE_C_COMPILER}" +                    --cxx="${CMAKE_CXX_COMPILER}" +                    ${FFmpeg_HWACCEL_FLAGS} +            WORKING_DIRECTORY +                ${FFmpeg_BUILD_DIR} +        ) +        unset(FFmpeg_HWACCEL_FLAGS) + +        # Workaround for Ubuntu 18.04's older version of make not being able to call make as a child +        # with context of the jobserver. Also helps ninja users. +        execute_process( +            COMMAND +                nproc +            OUTPUT_VARIABLE +                SYSTEM_THREADS) + +        set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES}) +        add_custom_command( +            OUTPUT +                ${FFmpeg_BUILD_LIBRARIES} +            COMMAND +                make -j${SYSTEM_THREADS} +            WORKING_DIRECTORY +                ${FFmpeg_BUILD_DIR} +        ) + +        set(FFmpeg_INCLUDE_DIR +            "${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR};${FFmpeg_HWACCEL_INCLUDE_DIRS}" +            CACHE PATH "Path to FFmpeg headers" FORCE) + +        set(FFmpeg_LDFLAGS +            "${FFmpeg_HWACCEL_LDFLAGS}" +            CACHE STRING "FFmpeg linker flags" FORCE) + +        # ALL makes this custom target build every time +        # but it won't actually build if the DEPENDS parameter is up to date +        add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE}) +        add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure) +        link_libraries(${FFmpeg_LIBVA_LIBRARIES}) +        set(FFmpeg_LIBRARIES ${FFmpeg_BUILD_LIBRARIES} ${FFmpeg_HWACCEL_LIBRARIES} +            CACHE PATH "Paths to FFmpeg libraries" FORCE) +        unset(FFmpeg_BUILD_LIBRARIES) +        unset(FFmpeg_HWACCEL_FLAGS) +        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() +    else() # WIN32 +        # Use yuzu FFmpeg binaries +        set(FFmpeg_EXT_NAME "ffmpeg-4.4") +        set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") +        download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") +        set(FFmpeg_FOUND YES) +        set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) +        set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE) +        set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE) +        set(FFmpeg_DLL_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg dll's" FORCE) +        set(FFmpeg_LIBRARIES +            ${FFmpeg_LIBRARY_DIR}/swscale.lib +            ${FFmpeg_LIBRARY_DIR}/avcodec.lib +            ${FFmpeg_LIBRARY_DIR}/avutil.lib +            CACHE PATH "Paths to FFmpeg libraries" FORCE) +    endif() +endif() + +unset(FFmpeg_COMPONENTS) +  # Prefer the -pthread flag on Linux.  set(THREADS_PREFER_PTHREAD_FLAG ON)  find_package(Threads REQUIRED) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index bbbe6667d..64d1e6aec 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -121,8 +121,3 @@ if (NOT opus_FOUND)      message(STATUS "opus 1.3 or newer not found, falling back to externals")      add_subdirectory(opus EXCLUDE_FROM_ALL)  endif() - -# FFMpeg -if (YUZU_USE_BUNDLED_FFMPEG) -    add_subdirectory(ffmpeg) -endif() diff --git a/externals/ffmpeg b/externals/ffmpeg new file mode 160000 +Subproject 79e8d17024e6c6328a40fcee191ffd70798a9c6 diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt deleted file mode 100644 index 7da89d2c5..000000000 --- a/externals/ffmpeg/CMakeLists.txt +++ /dev/null @@ -1,209 +0,0 @@ -if (NOT WIN32) -    # Build FFmpeg from externals -    message(STATUS "Using FFmpeg from externals") - -    if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64)") -        # FFmpeg has source that requires one of nasm or yasm to assemble it. -        # REQUIRED throws an error if not found here during configuration rather than during compilation. -        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.") -    endif() - -    set(FFmpeg_PREFIX ${PROJECT_SOURCE_DIR}/externals/ffmpeg/ffmpeg) -    set(FFmpeg_BUILD_DIR ${PROJECT_BINARY_DIR}/externals/ffmpeg-build) -    set(FFmpeg_MAKEFILE ${FFmpeg_BUILD_DIR}/Makefile) -    make_directory(${FFmpeg_BUILD_DIR}) - -    # Read version string from external -    file(READ ${FFmpeg_PREFIX}/RELEASE FFmpeg_VERSION) -    set(FFmpeg_FOUND NO) -    if (NOT FFmpeg_VERSION STREQUAL "") -        set(FFmpeg_FOUND YES) -    endif() - -    unset(FFmpeg_LIBRARIES CACHE) -    foreach(COMPONENT ${FFmpeg_COMPONENTS}) -        set(FFmpeg_${COMPONENT}_PREFIX "${FFmpeg_BUILD_DIR}/lib${COMPONENT}") -        set(FFmpeg_${COMPONENT}_LIB_NAME "lib${COMPONENT}.a") -        set(FFmpeg_${COMPONENT}_LIBRARY "${FFmpeg_${COMPONENT}_PREFIX}/${FFmpeg_${COMPONENT}_LIB_NAME}") - -        set(FFmpeg_LIBRARIES -            ${FFmpeg_LIBRARIES} -            ${FFmpeg_${COMPONENT}_LIBRARY} -            CACHE PATH "Paths to FFmpeg libraries" FORCE) -    endforeach() - -    Include(FindPkgConfig REQUIRED) -    pkg_check_modules(LIBVA libva) -    pkg_check_modules(CUDA cuda) -    pkg_check_modules(FFNVCODEC ffnvcodec) -    pkg_check_modules(VDPAU vdpau) - -    set(FFmpeg_HWACCEL_LIBRARIES) -    set(FFmpeg_HWACCEL_FLAGS) -    set(FFmpeg_HWACCEL_INCLUDE_DIRS) -    set(FFmpeg_HWACCEL_LDFLAGS) - -    if(LIBVA_FOUND) -        pkg_check_modules(LIBDRM libdrm REQUIRED) -        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 -            ${LIBDRM_LIBRARIES} -            ${X11_LIBRARIES} -            ${LIBVA-DRM_LIBRARIES} -            ${LIBVA-X11_LIBRARIES} -            ${LIBVA_LIBRARIES}) -        set(FFmpeg_HWACCEL_FLAGS -            --enable-hwaccel=h264_vaapi -            --enable-hwaccel=vp8_vaapi -            --enable-hwaccel=vp9_vaapi -            --enable-libdrm) -        list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS -            ${LIBDRM_INCLUDE_DIRS} -            ${X11_INCLUDE_DIRS} -            ${LIBVA-DRM_INCLUDE_DIRS} -            ${LIBVA-X11_INCLUDE_DIRS} -            ${LIBVA_INCLUDE_DIRS} -        ) -        message(STATUS "VA-API found") -    else() -        set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) -    endif() - -    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 "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 senario where CUDA is linked during compilation -        if (CUDA_FOUND) -            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 "CUDA libraries found, hard-linking will be performed") -        endif(CUDA_FOUND) -    endif() - -    if (VDPAU_FOUND) -        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 "vdpau libraries version ${VDPAU_VERSION} found") -    else() -        list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) -    endif() - -    # `configure` parameters builds only exactly what yuzu needs from FFmpeg -    # `--disable-vdpau` is needed to avoid linking issues -    add_custom_command( -        OUTPUT -            ${FFmpeg_MAKEFILE} -        COMMAND -            /bin/bash ${FFmpeg_PREFIX}/configure -                --disable-avdevice -                --disable-avfilter -                --disable-avformat -                --disable-doc -                --disable-everything -                --disable-ffmpeg -                --disable-ffprobe -                --disable-network -                --disable-postproc -                --disable-swresample -                --enable-decoder=h264 -                --enable-decoder=vp8 -                --enable-decoder=vp9 -                --cc="${CMAKE_C_COMPILER}" -                --cxx="${CMAKE_CXX_COMPILER}" -                ${FFmpeg_HWACCEL_FLAGS} -        WORKING_DIRECTORY -            ${FFmpeg_BUILD_DIR} -    ) -    unset(FFmpeg_HWACCEL_FLAGS) - -    # Workaround for Ubuntu 18.04's older version of make not being able to call make as a child -    # with context of the jobserver. Also helps ninja users. -    execute_process( -        COMMAND -            nproc -        OUTPUT_VARIABLE -            SYSTEM_THREADS) - -    set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES}) -    add_custom_command( -        OUTPUT -            ${FFmpeg_BUILD_LIBRARIES} -        COMMAND -            make -j${SYSTEM_THREADS} -        WORKING_DIRECTORY -            ${FFmpeg_BUILD_DIR} -    ) - -    set(FFmpeg_INCLUDE_DIR -        "${FFmpeg_PREFIX};${FFmpeg_BUILD_DIR};${FFmpeg_HWACCEL_INCLUDE_DIRS}" -        CACHE PATH "Path to FFmpeg headers" FORCE) - -    set(FFmpeg_LDFLAGS -        "${FFmpeg_HWACCEL_LDFLAGS}" -        CACHE STRING "FFmpeg linker flags" FORCE) - -    # ALL makes this custom target build every time -    # but it won't actually build if the DEPENDS parameter is up to date -    add_custom_target(ffmpeg-configure ALL DEPENDS ${FFmpeg_MAKEFILE}) -    add_custom_target(ffmpeg-build ALL DEPENDS ${FFmpeg_BUILD_LIBRARIES} ffmpeg-configure) -    link_libraries(${FFmpeg_LIBVA_LIBRARIES}) -    set(FFmpeg_LIBRARIES ${FFmpeg_BUILD_LIBRARIES} ${FFmpeg_HWACCEL_LIBRARIES} -        CACHE PATH "Paths to FFmpeg libraries" FORCE) -    unset(FFmpeg_BUILD_LIBRARIES) -    unset(FFmpeg_HWACCEL_FLAGS) -    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() -else(WIN32) -    # Use yuzu FFmpeg binaries -    set(FFmpeg_EXT_NAME "ffmpeg-4.4") -    set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") -    download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") -    set(FFmpeg_FOUND YES) -    set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) -    set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE) -    set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE) -    set(FFmpeg_DLL_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg dll's" FORCE) -    set(FFmpeg_LIBRARIES -        ${FFmpeg_LIBRARY_DIR}/swscale.lib -        ${FFmpeg_LIBRARY_DIR}/avcodec.lib -        ${FFmpeg_LIBRARY_DIR}/avutil.lib -        CACHE PATH "Paths to FFmpeg libraries" FORCE) -endif(WIN32) - -unset(FFmpeg_COMPONENTS) diff --git a/externals/ffmpeg/ffmpeg b/externals/ffmpeg/ffmpeg deleted file mode 160000 -Subproject dc91b913b6260e85e1304c74ff7bb3c22a8c9fb diff --git a/src/video_core/command_classes/codecs/codec.cpp b/src/video_core/command_classes/codecs/codec.cpp index 868b82f9b..2a532b883 100644 --- a/src/video_core/command_classes/codecs/codec.cpp +++ b/src/video_core/command_classes/codecs/codec.cpp @@ -130,12 +130,6 @@ bool Codec::CreateGpuAvDevice() {              }              if (config->methods & HW_CONFIG_METHOD && config->device_type == type) {                  av_codec_ctx->pix_fmt = config->pix_fmt; -                if (config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX) { -                    // skip zero-copy decoders, we don't currently support them -                    LOG_DEBUG(Service_NVDRV, "Skipping decoder {} with unsupported capability {}.", -                              av_hwdevice_get_type_name(type), config->methods); -                    continue; -                }                  LOG_INFO(Service_NVDRV, "Using {} GPU decoder", av_hwdevice_get_type_name(type));                  return true;              } | 
