diff --git a/MSVC/config.h b/MSVC/config.h index f5222f2db..c9469ef60 100644 --- a/MSVC/config.h +++ b/MSVC/config.h @@ -7,6 +7,9 @@ systems. This function is required for `alloca.c' support on those systems. /* Define to 1 if using `alloca.c'. */ /* #undef C_ALLOCA */ +/* Define to 1 if you want hardware acceleration support. */ +#define RING_ACCEL 1 + /* Define to 1 if you have `alloca', as a function or macro. */ #define HAVE_ALLOCA 1 diff --git a/MSVC/ring-daemon.vcxproj b/MSVC/ring-daemon.vcxproj index 89c807d78..eb9501c10 100644 --- a/MSVC/ring-daemon.vcxproj +++ b/MSVC/ring-daemon.vcxproj @@ -767,10 +767,7 @@ - - true - true - + @@ -931,10 +928,7 @@ - - true - true - + @@ -999,6 +993,7 @@ + diff --git a/MSVC/ring-daemon.vcxproj.filters b/MSVC/ring-daemon.vcxproj.filters index 5a0f068fa..4c833a923 100644 --- a/MSVC/ring-daemon.vcxproj.filters +++ b/MSVC/ring-daemon.vcxproj.filters @@ -367,9 +367,6 @@ Source Files\jamidht - - Source Files\media\video - Source Files\security @@ -409,6 +406,9 @@ Source Files\media\video + + Source Files\media\video + @@ -711,9 +711,6 @@ Source Files\media\audio\sound - - Source Files\media\video - Source Files\media\video @@ -840,6 +837,12 @@ Source Files\media\video + + Source Files + + + Source Files\media\video + diff --git a/contrib/src/fetch_all.bat b/contrib/src/fetch_all.bat index f708de0d9..347537c58 100644 --- a/contrib/src/fetch_all.bat +++ b/contrib/src/fetch_all.bat @@ -21,6 +21,7 @@ if "%1"=="uwp" ( :uwpDeps set DEPENDENCIES=( ^ +ffnvcodec, ^ ffmpeg, ^ argon2, ^ zlib ^ @@ -45,6 +46,7 @@ goto fetch :win32Deps set DEPENDENCIES=( ^ +ffnvcodec, ^ ffmpeg, ^ argon2, ^ zlib ^ diff --git a/contrib/src/ffmpeg/fetch_and_patch.bat b/contrib/src/ffmpeg/fetch_and_patch.bat index dd5579621..53213d8ac 100644 --- a/contrib/src/ffmpeg/fetch_and_patch.bat +++ b/contrib/src/ffmpeg/fetch_and_patch.bat @@ -31,5 +31,6 @@ set UNIXPATH=%ROOTPATH%%UNIXPATH:C:/=% bash -c "%PATCH_CMD% %UNIXPATH%ffmpeg/change-RTCP-ratio.patch" git apply --reject --whitespace=fix %SRC%\ffmpeg\windows-configure.patch +git apply --reject --whitespace=fix %SRC%\ffmpeg\windows-configure-ffnvcodec.patch cd %SRC% \ No newline at end of file diff --git a/contrib/src/ffmpeg/windows-configure-ffnvcodec.patch b/contrib/src/ffmpeg/windows-configure-ffnvcodec.patch new file mode 100644 index 000000000..4be2ddf5a --- /dev/null +++ b/contrib/src/ffmpeg/windows-configure-ffnvcodec.patch @@ -0,0 +1,29 @@ +From 63d0edcee2744317fc0befad53000c206eb5ee31 Mon Sep 17 00:00:00 2001 +From: Eden Abitbol +Date: Tue, 9 Jul 2019 10:52:29 -0400 +Subject: [PATCH] Remove ffnvcodec linux style package check for windows + support. + +--- + configure | 7 ------- + 1 file changed, 7 deletions(-) + +--- a/configure ++++ b/configure +@@ -5897,13 +5897,6 @@ check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9" + + check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC" + +-if ! disabled ffnvcodec; then +- check_pkg_config ffnvcodec "ffnvcodec >= 8.1.24.2" \ +- "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" "" || \ +- { test_pkg_config ffnvcodec_tmp "ffnvcodec < 8.1" "" "" && check_pkg_config ffnvcodec "ffnvcodec >= 8.0.14.2" \ +- "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" ""; } +-fi +- + check_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" + + if ! disabled w32threads && ! enabled pthreads; then +-- +2.22.0.windows.1 + diff --git a/contrib/src/ffmpeg/windows-configure-make.sh b/contrib/src/ffmpeg/windows-configure-make.sh index 3070c729b..df50a11a4 100644 --- a/contrib/src/ffmpeg/windows-configure-make.sh +++ b/contrib/src/ffmpeg/windows-configure-make.sh @@ -142,7 +142,7 @@ if [ "$1" == "uwp" ]; then OUTDIR=Output/Windows10/x86 fi elif [ "$1" == "win32" ]; then - EXTRACFLAGS='-MD -D_WINDLL -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/vpx' + EXTRACFLAGS='-MD -D_WINDLL -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/vpx -I../../../../../msvc/include/ffnvcodec' FFMPEGCONF+=' --enable-libvpx --enable-encoder=libvpx_vp8 @@ -152,6 +152,17 @@ elif [ "$1" == "win32" ]; then --enable-indev=dshow --enable-indev=gdigrab --enable-dxva2' + FFMPEGCONF+=' + --enable-ffnvcodec + --enable-cuvid + --enable-nvdec + --enable-nvenc + --enable-hwaccel=h264_nvdec + --enable-hwaccel=hevc_nvdec + --enable-hwaccel=vp8_nvdec + --enable-hwaccel=mjpeg_nvdec + --enable-encoder=h264_nvenc + --enable-encoder=hevc_nvenc' if [ "$2" == "x64" ]; then echo "configure and make ffmpeg for win32-x64..." EXTRALDFLAGS='-APPCONTAINER:NO -MACHINE:x64 Ole32.lib Kernel32.lib Gdi32.lib User32.lib Strmiids.lib OleAut32.lib Shlwapi.lib Vfw32.lib Secur32.lib libopus.lib libx264.lib libvpx.lib -LIBPATH:../../../../../msvc/lib/x64' diff --git a/contrib/src/ffnvcodec/fetch_and_patch.bat b/contrib/src/ffnvcodec/fetch_and_patch.bat new file mode 100644 index 000000000..6c4bcfb9c --- /dev/null +++ b/contrib/src/ffnvcodec/fetch_and_patch.bat @@ -0,0 +1,28 @@ +set BUILD=%SRC%..\build + +mkdir %BUILD% +cd %BUILD% + +set FFNVCODEC_VERSION=5eeca8cc95267d55030e98a051effa47c45f13f3 +set FFNVCODEC_GITURL=https://github.com/FFmpeg/nv-codec-headers/archive/%FFNVCODEC_VERSION%.tar.gz + +if %USE_CACHE%==1 ( + copy %CACHE_DIR%\%FFNVCODEC_VERSION%.tar.gz %cd% +) else ( + wget --no-check-certificate %FFNVCODEC_GITURL% +) + +7z -y x %FFNVCODEC_VERSION%.tar.gz && 7z -y x %FFNVCODEC_VERSION%.tar +del %FFNVCODEC_VERSION%.tar && del %FFNVCODEC_VERSION%.tar.gz && del pax_global_header +rename nv-codec-headers-%FFNVCODEC_VERSION% ffnvcodec + +cd ffnvcodec\include\ffnvcodec + +mkdir ..\..\..\..\msvc\include + +mkdir ..\..\..\..\msvc\include\ffnvcodec + +xcopy /S /Y *.h ..\..\..\..\msvc\include\ffnvcodec + +cd %SRC% +