diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index cb4d6769..89f883f5 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -265,8 +265,8 @@ jobs: sudo apt-get update -y sudo apt-get install -y \ cmake \ - qemu-user-static \ - flatpak + flatpak \ + qemu-user-static sudo su $(whoami) -c "flatpak --user remote-add --if-not-exists flathub \ https://flathub.org/repo/flathub.flatpakrepo" sudo su $(whoami) -c "flatpak --user install -y flathub \ @@ -372,8 +372,6 @@ jobs: - name: Setup Dependencies Linux run: | - sudo add-apt-repository ppa:savoury1/ffmpeg4 -y - # sudo add-apt-repository ppa:savoury1/boost-defaults-1.71 -y sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y sudo apt-get update -y @@ -390,9 +388,12 @@ jobs: libcurl4-openssl-dev \ libdrm-dev \ libevdev-dev \ - libpulse-dev \ + libnuma-dev \ libopus-dev \ + libpulse-dev \ libssl-dev \ + libva-dev \ + libvdpau-dev \ libwayland-dev \ libx11-dev \ libxcb-shm0-dev \ @@ -557,7 +558,7 @@ jobs: - name: Setup Dependencies MacOS run: | # install dependencies using homebrew - brew install boost cmake curl ffmpeg node opus + brew install boost cmake curl node opus # fix openssl header not found ln -sf /usr/local/opt/openssl/include/openssl /usr/local/include/openssl diff --git a/.gitmodules b/.gitmodules index 1b60acde..75dd21c9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,19 @@ [submodule "third-party/TPCircularBuffer"] path = third-party/TPCircularBuffer url = https://github.com/michaeltyson/TPCircularBuffer +[submodule "ffmpeg-windows-x86_64"] + path = third-party/ffmpeg-windows-x86_64 + url = https://github.com/LizardByte/build-deps + branch = ffmpeg-windows-x86_64 +[submodule "ffmpeg-macos-x86_64"] + path = third-party/ffmpeg-macos-x86_64 + url = https://github.com/LizardByte/build-deps + branch = ffmpeg-macos-x86_64 +[submodule "ffmpeg-linux-x86_64"] + path = third-party/ffmpeg-linux-x86_64 + url = https://github.com/LizardByte/build-deps + branch = ffmpeg-linux-x86_64 +[submodule "ffmpeg-linux-aarch64"] + path = third-party/ffmpeg-linux-aarch64 + url = https://github.com/LizardByte/build-deps + branch = ffmpeg-linux-aarch64 diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 586666c2..75ec50a7 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -15,7 +15,6 @@ build: ## apt packages required packages to run cmake on sunshine, note that additional packages are required # apt_packages: # - cmake -# - ffmpeg # - libboost-filesystem-dev # - libboost-log-dev # - libboost-thread-dev diff --git a/CMakeLists.txt b/CMakeLists.txt index bc88b578..6dbd3e1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,24 +75,12 @@ list(APPEND SUNSHINE_COMPILE_OPTIONS -Wall -Wno-missing-braces -Wno-maybe-uninit if(WIN32) enable_language(RC) set(CMAKE_RC_COMPILER windres) - file( - DOWNLOAD "https://github.com/TheElixZammuto/sunshine-prebuilt/releases/download/1.0.0/pre-compiled.zip" "${CMAKE_CURRENT_BINARY_DIR}/pre-compiled.zip" - TIMEOUT 60 - EXPECTED_HASH SHA256=5d59986bd7f619eaaf82b2dd56b5127b747c9cbe8db61e3b898ff6b485298ed6) - - file(ARCHIVE_EXTRACT - INPUT "${CMAKE_CURRENT_BINARY_DIR}/pre-compiled.zip" - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/pre-compiled) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CURL_STATIC_LDFLAGS} ${CURL_STATIC_CFLAGS}") # Restrict Boost WinAPI version to work around 1.80 linker errors ADD_DEFINITIONS(-DBOOST_USE_WINAPI_VERSION=BOOST_WINAPI_VERSION_WIN7) - if(NOT DEFINED SUNSHINE_PREPARED_BINARIES) - set(SUNSHINE_PREPARED_BINARIES "${CMAKE_CURRENT_BINARY_DIR}/pre-compiled/windows") - endif() - add_compile_definitions(SUNSHINE_PLATFORM="windows") add_subdirectory(tools) # This is temporary, only tools for Windows are needed, for now @@ -123,22 +111,6 @@ if(WIN32) libssl.a libcrypto.a) - set(FFMPEG_INCLUDE_DIRS - ${SUNSHINE_PREPARED_BINARIES}/include) - set(FFMPEG_LIBRARIES - ${SUNSHINE_PREPARED_BINARIES}/lib/libavcodec.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libavdevice.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libavfilter.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libavformat.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libavutil.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libpostproc.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libswresample.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libswscale.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libx264.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libx265.a - ${SUNSHINE_PREPARED_BINARIES}/lib/libhdr10plus.a - z lzma bcrypt libiconv.a) - list(PREPEND PLATFORM_LIBRARIES libstdc++.a libwinpthread.a @@ -163,17 +135,18 @@ elseif(APPLE) link_directories(/usr/local/lib) ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK) - find_package(FFmpeg REQUIRED) FIND_LIBRARY(APP_SERVICES_LIBRARY ApplicationServices ) FIND_LIBRARY(AV_FOUNDATION_LIBRARY AVFoundation ) FIND_LIBRARY(CORE_MEDIA_LIBRARY CoreMedia ) FIND_LIBRARY(CORE_VIDEO_LIBRARY CoreVideo ) + FIND_LIBRARY(VIDEO_TOOLBOX_LIBRARY VideoToolbox ) FIND_LIBRARY(FOUNDATION_LIBRARY Foundation ) list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${APP_SERVICES_LIBRARY} ${AV_FOUNDATION_LIBRARY} ${CORE_MEDIA_LIBRARY} ${CORE_VIDEO_LIBRARY} + ${VIDEO_TOOLBOX_LIBRARY} ${FOUNDATION_LIBRARY}) set(PLATFORM_INCLUDE_DIRS @@ -239,8 +212,6 @@ else() set(WAYLAND_FOUND OFF) endif() - find_package(FFMPEG REQUIRED) - if(X11_FOUND) add_compile_definitions(SUNSHINE_BUILD_X11) include_directories(${X11_INCLUDE_DIR}) @@ -333,6 +304,7 @@ else() list(APPEND PLATFORM_LIBRARIES dl evdev + numa pulse pulse-simple ) @@ -400,6 +372,35 @@ set(SUNSHINE_TARGET_FILES set_source_files_properties(src/upnp.cpp PROPERTIES COMPILE_FLAGS -Wno-pedantic) +# Pre-compiled binaries +if(WIN32) + set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-windows-x86_64") + set(FFMPEG_PLATFORM_LIBRARIES mfplat ole32 strmiids mfuuid) +elseif(APPLE) + set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-macos-x86_64") +else() + if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-aarch64") + else() + set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-x86_64") + endif() + set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11) +endif() +set(FFMPEG_INCLUDE_DIRS + ${FFMPEG_PREPARED_BINARIES}/include) +if(EXISTS ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a) + set(HDR10_PLUS_LIBRARY + ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a) +endif() +set(FFMPEG_LIBRARIES + ${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a + ${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a + ${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a + ${FFMPEG_PREPARED_BINARIES}/lib/libx264.a + ${FFMPEG_PREPARED_BINARIES}/lib/libx265.a + ${HDR10_PLUS_LIBRARY} + ${FFMPEG_PLATFORM_LIBRARIES}) + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/third-party @@ -654,8 +655,8 @@ elseif(UNIX) # Dependencies set(CPACK_DEB_COMPONENT_INSTALL ON) - set(CPACK_DEBIAN_PACKAGE_DEPENDS "openssl, libavdevice58, libboost-thread1.67.0 | libboost-thread1.71.0 | libboost-thread1.74.0, libboost-filesystem1.67.0 | libboost-filesystem1.71.0 | libboost-filesystem1.74.0, libboost-log1.67.0 | libboost-log1.71.0 | libboost-log1.74.0, libcurl4, libpulse0, libopus0, libxcb-shm0, libxcb-xfixes0, libxtst6, libevdev2, libdrm2, libcap2") - set(CPACK_RPM_PACKAGE_REQUIRES "openssl >= 1.1, libavdevice >= 4.3, boost-thread >= 1.67.0, boost-filesystem >= 1.67.0, boost-log >= 1.67.0, libcurl >= 7.0, pulseaudio-libs >= 10.0, libopusenc >= 0.2.1, libxcb >= 1.13, libXtst >= 1.2.3, libevdev >= 1.5.6, libdrm >= 2.4.97, libcap >= 2.22") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "openssl, libboost-thread1.67.0 | libboost-thread1.71.0 | libboost-thread1.74.0, libboost-filesystem1.67.0 | libboost-filesystem1.71.0 | libboost-filesystem1.74.0, libboost-log1.67.0 | libboost-log1.71.0 | libboost-log1.74.0, libcurl4, libpulse0, libopus0, libxcb-shm0, libxcb-xfixes0, libxtst6, libevdev2, libdrm2, libcap2") + set(CPACK_RPM_PACKAGE_REQUIRES "openssl >= 1.1, boost-thread >= 1.67.0, boost-filesystem >= 1.67.0, boost-log >= 1.67.0, libcurl >= 7.0, pulseaudio-libs >= 10.0, libopusenc >= 0.2.1, libxcb >= 1.13, libXtst >= 1.2.3, libevdev >= 1.5.6, libdrm >= 2.4.97, libcap >= 2.22") set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS OFF) # This should automatically figure out dependencies, doesn't work with the current config endif() endif() diff --git a/Dockerfile b/Dockerfile index 0aecab50..99c8795f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,9 +17,12 @@ RUN apt-get update -y \ libcurl4-openssl-dev=7.81.0* \ libdrm-dev=2.4.110* \ libevdev-dev=1.12.1* \ - libpulse-dev=1:15.99.1* \ + libnuma-dev=2.0.14* \ libopus-dev=1.3.1* \ + libpulse-dev=1:15.99.1* \ libssl-dev=3.0.2* \ + libva-dev=2.14.0* \ + libvdpau-dev=1.4* \ libwayland-dev=1.20.0* \ libx11-dev=2:1.7.5* \ libxcb-shm0-dev=1.14* \ diff --git a/docs/source/building/linux.rst b/docs/source/building/linux.rst index 1a18403a..177c6ead 100644 --- a/docs/source/building/linux.rst +++ b/docs/source/building/linux.rst @@ -21,9 +21,12 @@ Install Requirements libcap-dev \ # KMS libdrm-dev \ # KMS libevdev-dev \ - libpulse-dev \ + libnuma-dev \ libopus-dev \ + libpulse-dev \ libssl-dev \ + libva-dev \ + libvdpau-dev \ libwayland-dev \ # Wayland libx11-dev \ # X11 libxcb-shm0-dev \ # X11 @@ -35,7 +38,7 @@ Install Requirements nodejs \ npm \ nvidia-cuda-dev \ # Cuda, NvFBC - nvidia-cuda-toolkit \ # Cuda, NvFBC + nvidia-cuda-toolkit # Cuda, NvFBC Fedora 35 ^^^^^^^^^ @@ -55,9 +58,10 @@ Install Requirements boost-devel \ boost-static.x86_64 \ cmake \ - ffmpeg-devel \ gcc-c++ \ libevdev-devel \ + libva-devel \ + libvdpau-devel \ libX11-devel \ # X11 libxcb-devel \ # X11 libXcursor-devel \ # X11 @@ -69,10 +73,11 @@ Install Requirements mesa-libGL-devel \ nodejs \ npm \ + numactl-devel \ openssl-devel \ opus-devel \ pulseaudio-libs-devel \ - rpm-build \ # if you want to build an RPM binary package + rpm-build # if you want to build an RPM binary package Ubuntu 18.04 ^^^^^^^^^^^^ @@ -83,10 +88,7 @@ Install Repositories sudo apt update && sudo apt install \ software-properties-common \ - && add-apt-repository ppa:savoury1/graphics && \ - add-apt-repository ppa:savoury1/multimedia && \ - add-apt-repository ppa:savoury1/ffmpeg4 && \ - add-apt-repository ppa:savoury1/boost-defaults-1.71 && \ + && add-apt-repository ppa:savoury1/boost-defaults-1.71 && \ add-apt-repository ppa:ubuntu-toolchain-r/test && \ Install Requirements @@ -105,9 +107,12 @@ Install Requirements libcap-dev \ # KMS libdrm-dev \ # KMS libevdev-dev \ - libpulse-dev \ + libnuma-dev \ libopus-dev \ + libpulse-dev \ libssl-dev \ + libva-dev \ + libvdpau-dev \ libwayland-dev \ # Wayland libx11-dev \ # X11 libxcb-shm0-dev \ # X11 @@ -118,7 +123,7 @@ Install Requirements libxtst-dev \ # X11 nodejs \ npm \ - wget \ + wget Update gcc alias .. code-block:: bash @@ -158,9 +163,12 @@ Install Requirements libcap-dev \ # KMS libdrm-dev \ # KMS libevdev-dev \ - libpulse-dev \ + libnuma-dev \ libopus-dev \ + libpulse-dev \ libssl-dev \ + libva-dev \ + libvdpau-dev \ libwayland-dev \ # Wayland libx11-dev \ # X11 libxcb-shm0-dev \ # X11 @@ -171,7 +179,7 @@ Install Requirements libxtst-dev \ # X11 nodejs \ npm \ - wget \ + wget Update gcc alias .. code-block:: bash @@ -201,8 +209,9 @@ Install Requirements libcap-dev \ # KMS libdrm-dev \ # KMS libevdev-dev \ - libpulse-dev \ + libnuma-dev \ libopus-dev \ + libpulse-dev \ libssl-dev \ libwayland-dev \ # Wayland libx11-dev \ # X11 @@ -215,7 +224,7 @@ Install Requirements nodejs \ npm \ nvidia-cuda-dev \ # Cuda, NvFBC - nvidia-cuda-toolkit \ # Cuda, NvFBC + nvidia-cuda-toolkit # Cuda, NvFBC npm dependencies ---------------- diff --git a/docs/source/building/macos.rst b/docs/source/building/macos.rst index c79e3d7a..447a0fd6 100644 --- a/docs/source/building/macos.rst +++ b/docs/source/building/macos.rst @@ -12,14 +12,14 @@ MacPorts Install Requirements .. code-block:: bash - sudo port install cmake boost ffmpeg libopus npm9 + sudo port install boost cmake libopus npm9 Homebrew """""""" Install Requirements .. code-block:: bash - brew install boost cmake ffmpeg node opus + brew install boost cmake node opus # if there are issues with an SSL header that is not found: cd /usr/local/include ln -s ../opt/openssl/include/openssl . diff --git a/packaging/linux/aur/PKGBUILD b/packaging/linux/aur/PKGBUILD index 1c5de075..f51a068b 100644 --- a/packaging/linux/aur/PKGBUILD +++ b/packaging/linux/aur/PKGBUILD @@ -9,7 +9,7 @@ arch=('x86_64' 'i686') url=@PROJECT_HOMEPAGE_URL@ license=('GPL3') -depends=('avahi' 'boost-libs' 'curl' 'ffmpeg4.4' 'libevdev' 'libpulse' 'libx11' 'libxcb' 'libxfixes' 'libxrandr' 'libxtst' 'openssl' 'opus' 'udev') +depends=('avahi' 'boost-libs' 'curl' 'libevdev' 'libpulse' 'libva' 'libvdpau' 'libx11' 'libxcb' 'libxfixes' 'libxrandr' 'libxtst' 'numactl' 'openssl' 'opus' 'udev') makedepends=('boost' 'cmake' 'git' 'make' 'nodejs' 'npm') optdepends=('cuda' 'libcap' 'libdrm') @@ -38,17 +38,7 @@ build() { -Wno-dev \ -D CMAKE_INSTALL_PREFIX=/usr \ -D SUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine \ - -D SUNSHINE_ASSETS_DIR="share/sunshine" \ - -D LIBAVCODEC_INCLUDE_DIR=/usr/include/ffmpeg4.4 \ - -D LIBAVCODEC_LIBRARIES=/usr/lib/ffmpeg4.4/libavcodec.so \ - -D LIBAVDEVICE_INCLUDE_DIR=/usr/include/ffmpeg4.4 \ - -D LIBAVDEVICE_LIBRARIES=/usr/lib/ffmpeg4.4/libavdevice.so \ - -D LIBAVFORMAT_INCLUDE_DIR=/usr/include/ffmpeg4.4 \ - -D LIBAVFORMAT_LIBRARIES=/usr/lib/ffmpeg4.4/libavformat.so \ - -D LIBAVUTIL_INCLUDE_DIR=/usr/include/ffmpeg4.4 \ - -D LIBAVUTIL_LIBRARIES=/usr/lib/ffmpeg4.4/libavutil.so \ - -D LIBSWSCALE_INCLUDE_DIR=/usr/include/ffmpeg4.4 \ - -D LIBSWSCALE_LIBRARIES=/usr/lib/ffmpeg4.4/libswscale.so + -D SUNSHINE_ASSETS_DIR="share/sunshine" make -C build } diff --git a/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml b/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml index 5dbc4457..e4f0f665 100644 --- a/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml +++ b/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml @@ -41,69 +41,6 @@ modules: url: http://archive.ubuntu.com/ubuntu/pool/main/b/boost1.74/boost1.74_1.74.0.orig.tar.xz sha256: 2467be4af625b5ae4b3c93fc7af196a09eba39c11a7338cd9e8b356fa44d2f45 - - name: ffmpeg - disabled: false - config-opts: - - --enable-gpl - - --disable-static - - --enable-shared - - --disable-doc - - --disable-programs - - --disable-decoders - - --disable-vdpau - - --disable-audiotoolbox - - --disable-videotoolbox - - --disable-vulkan - - --disable-sdl2 - - --disable-filters - - --disable-avfilter - - --disable-postproc - - --disable-autodetect - - --enable-nvenc - - --enable-ffnvcodec - - --enable-vaapi - - --enable-libx264 - - --enable-libx265 - cleanup: - - /share - sources: - - type: archive - url: http://archive.ubuntu.com/ubuntu/pool/universe/f/ffmpeg/ffmpeg_5.1.1.orig.tar.xz - sha256: 95bf3ff8c496511e71e958fb249e663c8c9c3de583c5bebc0f5a9745abbc0435 - modules: - - name: x264 - config-opts: - - --disable-cli - - --enable-shared - sources: - - type: archive - url: http://archive.ubuntu.com/ubuntu/pool/universe/x/x264/x264_0.164.3095+gitbaee400.orig.tar.gz - sha256: 8b237e94b08c196a1da22f2f25875f10be4cff3648df4eeff21e00da8f683fc2 - - - name: x265 - disabled: false - buildsystem: cmake-ninja - builddir: true - subdir: source - config-opts: - - -DCMAKE_BUILD_TYPE=RelWithDebInfo - - -DENABLE_CLI=OFF - sources: - - type: archive - url: http://archive.ubuntu.com/ubuntu/pool/universe/x/x265/x265_3.5.orig.tar.gz - sha256: e70a3335cacacbba0b3a20ec6fecd6783932288ebc8163ad74bcc9606477cae8 - - - name: nv-codec-headers - no-autogen: true - make-install-args: - - PREFIX=${FLATPAK_DEST} - cleanup: - - '*' - sources: - - type: archive - url: http://archive.ubuntu.com/ubuntu/pool/universe/n/nv-codec-headers/nv-codec-headers_11.1.5.1.orig.tar.gz - sha256: d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c - - name: avahi disabled: false cleanup: @@ -179,6 +116,17 @@ modules: sha256: f2c4a52e06329606c8dfb7c5ea3f4cb4c0b28f9d3fdffeeb734fcc98daf580d8 dest-filename: cuda.run + - name: numactl + buildsystem: autotools + make-args: + - install + sources: + - type: archive + url: http://archive.ubuntu.com/ubuntu/pool/main/n/numactl/numactl_2.0.14.orig.tar.gz + sha256: 1ee27abd07ff6ba140aaf9bc6379b37825e54496e01d6f7343330cf1a4487035 + cleanup: + - "/bin" + - name: sunshine disabled: false buildsystem: cmake diff --git a/packaging/macos/Portfile b/packaging/macos/Portfile index 813f9eef..6cd0f685 100644 --- a/packaging/macos/Portfile +++ b/packaging/macos/Portfile @@ -33,9 +33,9 @@ post-fetch { depends_lib port:avahi \ port:curl \ - port:ffmpeg \ port:libopus \ - port:npm9 + port:npm9 \ + port:pkgconfig boost.version 1.80 diff --git a/third-party/ffmpeg-linux-aarch64 b/third-party/ffmpeg-linux-aarch64 new file mode 160000 index 00000000..294e33f2 --- /dev/null +++ b/third-party/ffmpeg-linux-aarch64 @@ -0,0 +1 @@ +Subproject commit 294e33f209caabba4004a7792bb6d67bc303eb30 diff --git a/third-party/ffmpeg-linux-x86_64 b/third-party/ffmpeg-linux-x86_64 new file mode 160000 index 00000000..3994d18c --- /dev/null +++ b/third-party/ffmpeg-linux-x86_64 @@ -0,0 +1 @@ +Subproject commit 3994d18cd855f43e81cbcc9eb9f7d1880de29a8b diff --git a/third-party/ffmpeg-macos-x86_64 b/third-party/ffmpeg-macos-x86_64 new file mode 160000 index 00000000..5285b18e --- /dev/null +++ b/third-party/ffmpeg-macos-x86_64 @@ -0,0 +1 @@ +Subproject commit 5285b18e0470157ecd11476e4c6e96c5ea6d46a2 diff --git a/third-party/ffmpeg-windows-x86_64 b/third-party/ffmpeg-windows-x86_64 new file mode 160000 index 00000000..a60c72bc --- /dev/null +++ b/third-party/ffmpeg-windows-x86_64 @@ -0,0 +1 @@ +Subproject commit a60c72bc8589011bb38be369a5765e13c60642c8