diff --git a/.gitmodules b/.gitmodules index e5d5c9c..2389af1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "nv-codec-headers"] path = nv-codec-headers url = https://git.videolan.org/git/ffmpeg/nv-codec-headers.git +[submodule "SDL2"] + path = SDL2 + url = https://github.com/spurious/SDL-mirror.git diff --git a/Dockerfile.amd64.buster b/Dockerfile.amd64.buster index ab29cbd..d2dcfcc 100644 --- a/Dockerfile.amd64.buster +++ b/Dockerfile.amd64.buster @@ -3,13 +3,14 @@ FROM amd64/debian:buster RUN set -ex && \ export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ - apt-get install -y g++ make devscripts fakeroot debhelper git nasm && \ - apt-get install -y libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev wayland-protocols libopus-dev libva-dev libvdpau-dev libsdl2-dev libsdl2-ttf-dev && \ + apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ + apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev wayland-protocols libopus-dev libva-dev libvdpau-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY FFmpeg /opt/FFmpeg COPY nv-codec-headers /opt/nv-codec-headers +COPY SDL2 /opt/SDL2 COPY scripts/build-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/build-deps.sh diff --git a/Dockerfile.l4t.bionic b/Dockerfile.l4t.bionic index 7467091..7873d80 100644 --- a/Dockerfile.l4t.bionic +++ b/Dockerfile.l4t.bionic @@ -6,12 +6,13 @@ RUN set -ex && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ apt-get update && \ apt-get install -y libnvmpi1.0.0 && \ - apt-get install -y g++ make devscripts debhelper git nasm && \ - apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev wayland-protocols libopus-dev libva-dev libvdpau-dev libsdl2-dev libsdl2-ttf-dev && \ + apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ + apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev libopus-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 COPY scripts/build-deps.sh /opt/scripts/ COPY scripts/build-package.sh /opt/scripts/ diff --git a/Dockerfile.rpi.buster b/Dockerfile.rpi.buster index 8a42e75..327f55a 100644 --- a/Dockerfile.rpi.buster +++ b/Dockerfile.rpi.buster @@ -7,12 +7,13 @@ RUN set -ex && \ echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ apt-get update && \ - apt-get install -y g++ make devscripts fakeroot debhelper git nasm && \ - apt-get install -y --no-install-recommends libraspberrypi-dev libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev wayland-protocols libopus-dev libva-dev libvdpau-dev libsdl2-dev libsdl2-ttf-dev && \ + apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ + apt-get install -y --no-install-recommends libraspberrypi-dev libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev libopus-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 COPY scripts/build-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/build-deps.sh diff --git a/SDL2 b/SDL2 new file mode 160000 index 0000000..b71dec5 --- /dev/null +++ b/SDL2 @@ -0,0 +1 @@ +Subproject commit b71dec57ab6898d319951bba8ed83816b69b3cae diff --git a/debian/control b/debian/control index 5599ef1..50733b7 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Maintainer: Cameron Gutman Section: misc Priority: optional Standards-Version: 4.3.0 -Build-Depends: debhelper (>= 10), libssl-dev, qtbase5-dev, qtquickcontrols2-5-dev, qtdeclarative5-dev, libqt5svg5-dev, libgl1-mesa-dev, libegl1-mesa-dev, libxkbcommon-dev, wayland-protocols, libopus-dev, libva-dev, libvdpau-dev, libsdl2-dev, libsdl2-ttf-dev, libraspberrypi-dev [armhf] | rbp-userland-dev-osmc [armhf] +Build-Depends: debhelper (>= 10), libssl-dev, qtbase5-dev, qtquickcontrols2-5-dev, qtdeclarative5-dev, libqt5svg5-dev, libgl1-mesa-dev, libegl1-mesa-dev, libxkbcommon-dev, libopus-dev, libsdl2-ttf-dev, wayland-protocols [amd64], libva-dev [amd64], libvdpau-dev [amd64], libraspberrypi-dev [armhf] | rbp-userland-dev-osmc [armhf] Package: moonlight Architecture: any diff --git a/scripts/build-deps.sh b/scripts/build-deps.sh index 0351b66..a1ab737 100755 --- a/scripts/build-deps.sh +++ b/scripts/build-deps.sh @@ -1,6 +1,6 @@ set -e -BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-hwaccel=h264_vaapi --enable-hwaccel=hevc_vaapi --enable-hwaccel=h264_vdpau --enable-hwaccel=hevc_vdpau" +BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc" ARCH=`uname -m` echo "Building dependencies for $ARCH" @@ -19,13 +19,24 @@ elif [ "$ARCH" == "x86_64" ]; then cd /opt/nv-codec-headers make install - # Enable NVDEC decoders - EXTRA_FFMPEG_ARGS="--enable-nvdec --enable-hwaccel=h264_nvdec --enable-hwaccel=hevc_nvdec" + # Enable VAAPI, VDPAU, and NVDEC decoders + EXTRA_FFMPEG_ARGS="--enable-nvdec --enable-hwaccel=h264_nvdec --enable-hwaccel=hevc_nvdec --enable-hwaccel=h264_vaapi --enable-hwaccel=hevc_vaapi --enable-hwaccel=h264_vdpau --enable-hwaccel=hevc_vdpau" else echo "Unrecognized architecture: $ARCH" exit 1 fi +# Remove the existing SDL2 library (but not SDL_ttf) +find /usr/include/SDL2 -type f -not -name 'SDL_ttf.h' -delete +rm -fv /usr/lib/*-linux-*/libSDL2-* +rm -fv /usr/lib/*-linux-*/libSDL2.* +rm -fv /usr/lib/*-linux-*/pkgconfig/sdl2.pc + +cd /opt/SDL2 +./configure --enable-static --disable-shared --enable-video-kmsdrm +make -j$(nproc) +make install + cd /opt/FFmpeg ./configure $BASE_FFMPEG_ARGS $EXTRA_FFMPEG_ARGS make -j$(nproc)