From e86c34341001b5b7736d1532c20edf7d5fafa14d Mon Sep 17 00:00:00 2001 From: Samuel Audet Date: Sun, 28 May 2023 20:29:44 +0900 Subject: [PATCH] Fix builds for FFmpeg, HDF5, NVIDIA Video Codec SDK, ONNX Runtime --- .github/actions/deploy-windows/action.yml | 6 +- ffmpeg/cppbuild.sh | 17 ++-- hdf5/LICENSE.txt | 24 ++++++ hdf5/cppbuild.sh | 14 +++- .../java/org/bytedeco/hdf5/presets/hdf5.java | 2 +- .../bytedeco/nvcodec/global/nvencodeapi.java | 4 +- .../bytedeco/nvcodec/presets/nvencodeapi.java | 82 ++++++++++--------- 7 files changed, 90 insertions(+), 59 deletions(-) create mode 100644 hdf5/LICENSE.txt diff --git a/.github/actions/deploy-windows/action.yml b/.github/actions/deploy-windows/action.yml index 375a515a898..976cf3aec0b 100644 --- a/.github/actions/deploy-windows/action.yml +++ b/.github/actions/deploy-windows/action.yml @@ -108,9 +108,9 @@ runs: rem move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\bin\*.dll" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" rem move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\include\*.h" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include" rem move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\lib\x64\*.lib" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64" - move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\bin\*.dll "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin" - move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\include\*.h "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include" - move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\lib\x64\*.lib "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.0\lib\x64" + move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\bin\*.dll "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" + move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\include\*.h "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include" + move cudnn-windows-x86_64-8.9.1.23_cuda12-archive\lib\x64\*.lib "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64" move dll_x64\zlibwapi.dll "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" rem echo Applying hotfix to Visual Studio 2019 for CUDA diff --git a/ffmpeg/cppbuild.sh b/ffmpeg/cppbuild.sh index da93f1db02a..4c88fb6cf27 100755 --- a/ffmpeg/cppbuild.sh +++ b/ffmpeg/cppbuild.sh @@ -32,20 +32,20 @@ SPEEX=speex-1.2.1 OPUS=opus-1.3.1 OPENCORE_AMR=opencore-amr-0.1.6 VO_AMRWBENC=vo-amrwbenc-0.1.3 -OPENSSL=openssl-3.0.8 +OPENSSL=openssl-3.1.0 OPENH264_VERSION=2.3.1 X264=x264-stable X265=3.4 VPX_VERSION=1.13.0 -ALSA_VERSION=1.2.8 +ALSA_VERSION=1.2.9 FREETYPE_VERSION=2.13.0 MFX_VERSION=1.35.1 -NVCODEC_VERSION=11.1.5.2 +NVCODEC_VERSION=12.0.16.0 XML2=libxml2-2.9.12 LIBSRT_VERSION=1.5.1 WEBP_VERSION=1.3.0 -AOMAV1_VERSION=3.6.0 -SVTAV1_VERSION=1.4.1 +AOMAV1_VERSION=3.6.1 +SVTAV1_VERSION=1.5.0 FFMPEG_VERSION=6.0 download https://download.videolan.org/contrib/nasm/nasm-$NASM_VERSION.tar.gz nasm-$NASM_VERSION.tar.gz download http://zlib.net/$ZLIB.tar.gz $ZLIB.tar.gz @@ -67,7 +67,7 @@ download https://github.com/Haivision/srt/archive/refs/tags/v$LIBSRT_VERSION.tar download https://github.com/FFmpeg/nv-codec-headers/archive/n$NVCODEC_VERSION.tar.gz nv-codec-headers-$NVCODEC_VERSION.tar.gz download https://github.com/webmproject/libwebp/archive/refs/tags/v$WEBP_VERSION.tar.gz libwebp-$WEBP_VERSION.tar.gz download https://storage.googleapis.com/aom-releases/libaom-$AOMAV1_VERSION.tar.gz aom-$AOMAV1_VERSION.tar.gz -download https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.4.1/SVT-AV1-v$SVTAV1_VERSION.tar.gz svt-av1-$SVTAV1_VERSION.tar.gz +download https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v$SVTAV1_VERSION/SVT-AV1-v$SVTAV1_VERSION.tar.gz SVT-AV1-$SVTAV1_VERSION.tar.gz download http://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.bz2 ffmpeg-$FFMPEG_VERSION.tar.bz2 mkdir -p $PLATFORM$EXTENSION @@ -93,7 +93,7 @@ tar --totals -xzf ../nv-codec-headers-$NVCODEC_VERSION.tar.gz tar --totals -xzf ../$XML2.tar.gz tar --totals -xzf ../libwebp-$WEBP_VERSION.tar.gz tar --totals -xzf ../aom-$AOMAV1_VERSION.tar.gz -tar --totals -xzf ../svt-av1-$SVTAV1_VERSION.tar.gz +tar --totals -xzf ../SVT-AV1-$SVTAV1_VERSION.tar.gz tar --totals -xjf ../ffmpeg-$FFMPEG_VERSION.tar.bz2 if [[ "${ACLOCAL_PATH:-}" == C:\\msys64\\* ]]; then @@ -113,12 +113,11 @@ export PKG_CONFIG_PATH=$INSTALL_PATH/lib/pkgconfig/ patch -Np1 -d $LAME < ../../lame.patch patch -Np1 -d $OPENSSL < ../../openssl-android.patch -patch -Np1 -d SVT-AV1-v$SVTAV1_VERSION < ../../SVT-AV1.patch -patch -Np1 -d SVT-AV1-v$SVTAV1_VERSION < ../../SVT-AV1-2059.diff patch -Np1 -d ffmpeg-$FFMPEG_VERSION < ../../ffmpeg.patch patch -Np1 -d ffmpeg-$FFMPEG_VERSION < ../../ffmpeg-flv-support-hevc-opus.patch sedinplace 's/bool bEnableavx512/bool bEnableavx512 = false/g' x265-*/source/common/param.h sedinplace 's/detect512()/false/g' x265-*/source/common/quant.cpp +sedinplace 's/defined(__linux__)/defined(__linux__) \&\& !defined(__ANDROID__)/g' SVT-AV1-*/Source/Lib/Common/Codec/EbThreads.h sedinplace '/ANativeWindow_release/d' ffmpeg-*/libavutil/hwcontext_mediacodec.c sedinplace 's/#define MAX_SLICES 32/#define MAX_SLICES 256/g' ffmpeg-*/libavcodec/h264dec.h diff --git a/hdf5/LICENSE.txt b/hdf5/LICENSE.txt new file mode 100644 index 00000000000..3f4751f7ea0 --- /dev/null +++ b/hdf5/LICENSE.txt @@ -0,0 +1,24 @@ +Copyright 2021 Mathis Rosenhauer, Moritz Hanke, Joerg Behrens, Luis Kornblueh +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/hdf5/cppbuild.sh b/hdf5/cppbuild.sh index 63f7bdbe306..2d270434f06 100755 --- a/hdf5/cppbuild.sh +++ b/hdf5/cppbuild.sh @@ -189,10 +189,13 @@ case $PLATFORM in ninja install popd - mkdir -p build + mkdir -p build/bin + cp ../lib/*.lib build/bin pushd build - "$CMAKE" -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DBUILD_TESTING=false -DHDF5_BUILD_EXAMPLES=false -DHDF5_BUILD_TOOLS=false -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" -DZLIB_TGZ_NAME:STRING="$ZLIB.tar.gz" -DTGZPATH:STRING="$INSTALL_PATH/.." -DHDF5_ENABLE_Z_LIB_SUPPORT=ON -DHDF5_ENABLE_SZIP_SUPPORT=ON -DHDF5_ENABLE_SZIP_ENCODING=ON -DUSE_LIBAEC=ON -DSZIP_LIBRARY:FILEPATH="$INSTALL_PATH/lib/szip_static.lib" -DSZIP_INCLUDE_DIR="$INSTALL_PATH/include" -DSZIP_USE_EXTERNAL:BOOL=OFF -DHDF5_BUILD_CPP_LIB=ON -DHDF5_BUILD_JAVA=ON .. + "$CMAKE" -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DBUILD_TESTING=false -DHDF5_BUILD_EXAMPLES=false -DHDF5_BUILD_TOOLS=false -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" -DZLIB_TGZ_NAME:STRING="$ZLIB.tar.gz" -DSZAEC_TGZ_NAME:STRING="libaec-$AEC_VERSION.tar.gz" -DTGZPATH:STRING="$INSTALL_PATH/.." -DHDF5_ENABLE_Z_LIB_SUPPORT=ON -DHDF5_ENABLE_SZIP_SUPPORT=ON -DHDF5_ENABLE_SZIP_ENCODING=ON -DUSE_LIBAEC=ON -DSZIP_LIBRARY:FILEPATH="$INSTALL_PATH/lib/szip_static.lib" -DSZIP_INCLUDE_DIR="$INSTALL_PATH/include" -DSZIP_USE_EXTERNAL:BOOL=OFF -DHDF5_BUILD_CPP_LIB=ON -DHDF5_BUILD_JAVA=ON .. sedinplace 's/Release\\libz.lib/zlibstatic.lib/g' build.ninja + sedinplace 's/Release\\libaec.lib/aec_static.lib/g' build.ninja + sedinplace 's/Release\\libszaec.lib/szip_static.lib/g' build.ninja ninja -j $MAKEJ HDF5_ZLIB ninja -j $MAKEJ ninja install @@ -210,11 +213,14 @@ case $PLATFORM in ninja install popd - mkdir -p build + mkdir -p build/bin + cp ../lib/*.lib build/bin pushd build - "$CMAKE" -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DBUILD_TESTING=false -DHDF5_BUILD_EXAMPLES=false -DHDF5_BUILD_TOOLS=false -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" -DZLIB_TGZ_NAME:STRING="$ZLIB.tar.gz" -DTGZPATH:STRING="$INSTALL_PATH/.." -DHDF5_ENABLE_Z_LIB_SUPPORT=ON -DHDF5_ENABLE_SZIP_SUPPORT=ON -DHDF5_ENABLE_SZIP_ENCODING=ON -DUSE_LIBAEC=ON -DSZIP_LIBRARY:FILEPATH="$INSTALL_PATH/lib/szip_static.lib" -DSZIP_INCLUDE_DIR="$INSTALL_PATH/include" -DSZIP_USE_EXTERNAL:BOOL=OFF -DHDF5_BUILD_CPP_LIB=ON -DHDF5_BUILD_JAVA=ON .. + "$CMAKE" -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DBUILD_TESTING=false -DHDF5_BUILD_EXAMPLES=false -DHDF5_BUILD_TOOLS=false -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" -DZLIB_TGZ_NAME:STRING="$ZLIB.tar.gz" -DSZAEC_TGZ_NAME:STRING="libaec-$AEC_VERSION.tar.gz" -DTGZPATH:STRING="$INSTALL_PATH/.." -DHDF5_ENABLE_Z_LIB_SUPPORT=ON -DHDF5_ENABLE_SZIP_SUPPORT=ON -DHDF5_ENABLE_SZIP_ENCODING=ON -DUSE_LIBAEC=ON -DSZIP_LIBRARY:FILEPATH="$INSTALL_PATH/lib/szip_static.lib" -DSZIP_INCLUDE_DIR="$INSTALL_PATH/include" -DSZIP_USE_EXTERNAL:BOOL=OFF -DHDF5_BUILD_CPP_LIB=ON -DHDF5_BUILD_JAVA=ON .. sedinplace 's/Release\\libz.lib/zlibstatic.lib/g' build.ninja + sedinplace 's/Release\\libaec.lib/aec_static.lib/g' build.ninja + sedinplace 's/Release\\libszaec.lib/szip_static.lib/g' build.ninja ninja -j $MAKEJ HDF5_ZLIB ninja -j $MAKEJ ninja install diff --git a/hdf5/src/main/java/org/bytedeco/hdf5/presets/hdf5.java b/hdf5/src/main/java/org/bytedeco/hdf5/presets/hdf5.java index d453f24af87..2c301d21b05 100644 --- a/hdf5/src/main/java/org/bytedeco/hdf5/presets/hdf5.java +++ b/hdf5/src/main/java/org/bytedeco/hdf5/presets/hdf5.java @@ -51,7 +51,7 @@ "H5FaccProp.h", "H5FcreatProp.h", "H5AtomType.h", "H5PredType.h", "H5EnumType.h", "H5IntType.h", "H5FloatType.h", "H5StrType.h", "H5CompType.h", "H5ArrayType.h", "H5VarLenType.h", "H5DataSet.h", "H5Group.h", "H5File.h", "H5Library.h"}, link = {"hdf5@.310", "hdf5_cpp@.310", "hdf5_hl@.310", "hdf5_hl_cpp@.310"}, resource = {"include", "lib"}), - @Platform(value = "windows", link = {"zlibstatic", "libhdf5", "libhdf5_cpp", "libhdf5_hl", "libhdf5_hl_cpp", "szip_static"}) }) + @Platform(value = "windows", link = {"zlibstatic", "libhdf5", "libhdf5_cpp", "libhdf5_hl", "libhdf5_hl_cpp", "aec_static", "szip_static"}) }) public class hdf5 implements InfoMapper { static { Loader.checkVersion("org.bytedeco", "hdf5"); } diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java index 36e91bb2e0f..3e429a42c06 100644 --- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java +++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java @@ -2565,7 +2565,7 @@ internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncode * ::NV_ENC_ERR_GENERIC \n * */ -public static native @Cast("NVENCSTATUS") int NvEncRestoreEncoderState(Pointer encoder, NV_ENC_RESTORE_ENCODER_STATE_PARAMS restoreState); + // NvLockInputBuffer /** @@ -3208,7 +3208,7 @@ internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncode * ::NV_ENC_ERR_INVALID_PARAM \n * ::NV_ENC_ERR_INVALID_VERSION \n */ -public static native @Cast("NVENCSTATUS") int NvEncLookaheadPicture(Pointer encoder, NV_ENC_LOOKAHEAD_PIC_PARAMS lookaheadParamas); + // Targeting ../nvencodeapi/PNVENCOPENENCODESESSION.java diff --git a/nvcodec/src/main/java/org/bytedeco/nvcodec/presets/nvencodeapi.java b/nvcodec/src/main/java/org/bytedeco/nvcodec/presets/nvencodeapi.java index af22ac1f1f3..b8f05c135a1 100644 --- a/nvcodec/src/main/java/org/bytedeco/nvcodec/presets/nvencodeapi.java +++ b/nvcodec/src/main/java/org/bytedeco/nvcodec/presets/nvencodeapi.java @@ -56,46 +56,48 @@ public class nvencodeapi implements InfoMapper { public void map(InfoMap infoMap) { infoMap.put(new Info("NVENCAPI").cppTypes().annotations()) - .put(new Info("NvEncInvalidateRefFrames").skip()) - .put(new Info("NvEncRegisterAsyncEvent").skip()) - .put(new Info("NvEncCreateBitstreamBuffer").skip()) - .put(new Info("NvEncOpenEncodeSession").skip()) - .put(new Info("NvEncSetIOCudaStreams").skip()) - .put(new Info("NvEncDestroyMVBuffer").skip()) - .put(new Info("NvEncDestroyBitstreamBuffer").skip()) - .put(new Info("NvEncUnregisterResource").skip()) - .put(new Info("NvEncDestroyEncoder").skip()) - .put(new Info("NvEncDestroyInputBuffer").skip()) - .put(new Info("NvEncGetEncodeProfileGUIDCount").skip()) - .put(new Info("NvEncCreateMVBuffer").skip()) - .put(new Info("NvEncGetSequenceParams").skip()) - .put(new Info("NvEncGetSequenceParamEx").skip()) - .put(new Info("NvEncGetEncodePresetCount").skip()) - .put(new Info("NvEncRunMotionEstimationOnly").skip()) - .put(new Info("NvEncGetEncodeGUIDs").skip()) - .put(new Info("NvEncReconfigureEncoder").skip()) - .put(new Info("NvEncGetInputFormats").skip()) - .put(new Info("NvEncOpenEncodeSessionEx").skip()) - .put(new Info("NvEncUnregisterAsyncEvent").skip()) - .put(new Info("NvEncEncodePicture").skip()) - .put(new Info("NvEncMapInputResource").skip()) - .put(new Info("NvEncGetInputFormatCount").skip()) - .put(new Info("NvEncGetEncodeGUIDCount").skip()) - .put(new Info("NvEncGetEncodeStats").skip()) - .put(new Info("NvEncUnlockBitstream").skip()) - .put(new Info("NvEncGetEncodePresetGUIDs").skip()) - .put(new Info("NvEncGetLastErrorString").skip()) - .put(new Info("NvEncGetEncodeCaps").skip()) - .put(new Info("NvEncGetEncodePresetConfig").skip()) - .put(new Info("NvEncUnmapInputResource").skip()) - .put(new Info("NvEncRegisterResource").skip()) - .put(new Info("NvEncLockBitstream").skip()) - .put(new Info("NvEncCreateInputBuffer").skip()) - .put(new Info("NvEncLockInputBuffer").skip()) - .put(new Info("NvEncUnlockInputBuffer").skip()) - .put(new Info("NvEncInitializeEncoder").skip()) - .put(new Info("NvEncGetEncodeProfileGUIDs").skip()) - .put(new Info("NvEncGetEncodePresetConfigEx").skip()) + .put(new Info("NvEncInvalidateRefFrames", + "NvEncRegisterAsyncEvent", + "NvEncCreateBitstreamBuffer", + "NvEncOpenEncodeSession", + "NvEncSetIOCudaStreams", + "NvEncDestroyMVBuffer", + "NvEncDestroyBitstreamBuffer", + "NvEncUnregisterResource", + "NvEncDestroyEncoder", + "NvEncDestroyInputBuffer", + "NvEncGetEncodeProfileGUIDCount", + "NvEncCreateMVBuffer", + "NvEncGetSequenceParams", + "NvEncGetSequenceParamEx", + "NvEncGetEncodePresetCount", + "NvEncRunMotionEstimationOnly", + "NvEncGetEncodeGUIDs", + "NvEncReconfigureEncoder", + "NvEncGetInputFormats", + "NvEncOpenEncodeSessionEx", + "NvEncUnregisterAsyncEvent", + "NvEncEncodePicture", + "NvEncMapInputResource", + "NvEncGetInputFormatCount", + "NvEncGetEncodeGUIDCount", + "NvEncGetEncodeStats", + "NvEncUnlockBitstream", + "NvEncGetEncodePresetGUIDs", + "NvEncGetLastErrorString", + "NvEncGetEncodeCaps", + "NvEncGetEncodePresetConfig", + "NvEncUnmapInputResource", + "NvEncRegisterResource", + "NvEncLockBitstream", + "NvEncCreateInputBuffer", + "NvEncLockInputBuffer", + "NvEncUnlockInputBuffer", + "NvEncInitializeEncoder", + "NvEncGetEncodeProfileGUIDs", + "NvEncGetEncodePresetConfigEx", + "NvEncLookaheadPicture", + "NvEncRestoreEncoderState").skip()) .put(new Info("NV_ENC_H264_SEI_PAYLOAD", "NV_ENC_AV1_OBU_PAYLOAD").cppText("").pointerTypes("NV_ENC_SEI_PAYLOAD")) .put(new Info("nvEncodeAPI.h").linePatterns( " \\* \\\\union _NV_ENC_PIC_PARAMS_H264_EXT", " \\* H264 extension picture parameters",