diff --git a/.github/actions/deploy-centos/action.yml b/.github/actions/deploy-centos/action.yml index 7bfe95605a5..84d48677109 100644 --- a/.github/actions/deploy-centos/action.yml +++ b/.github/actions/deploy-centos/action.yml @@ -117,8 +117,8 @@ runs: if [[ "$CI_DEPLOY_MODULE" == "nvcodec" ]]; then echo Installing NVIDIA Video Codec SDK - python3 -m gdown.cli https://drive.google.com/uc?id=1ner_cjzhKhdlrP2VzHGZvyEnW3UQ4uOy - unzip Video_Codec_SDK_12.0.16.zip -d /usr/local + python3 -m gdown.cli https://drive.google.com/uc?id=13KyYoq8ZOLIA7jugDkdFma34mnyxnz4x + unzip Video_Codec_SDK_12.1.14.zip -d /usr/local ln -sf /usr/local/Video_Codec_SDK_* /usr/local/videocodecsdk fi diff --git a/.github/actions/deploy-ubuntu/action.yml b/.github/actions/deploy-ubuntu/action.yml index 75f5275f961..fc2ca593613 100644 --- a/.github/actions/deploy-ubuntu/action.yml +++ b/.github/actions/deploy-ubuntu/action.yml @@ -146,8 +146,8 @@ runs: if [[ "$CI_DEPLOY_MODULE" == "nvcodec" ]]; then echo Installing NVIDIA Video Codec SDK - python3 -m gdown.cli https://drive.google.com/uc?id=1ner_cjzhKhdlrP2VzHGZvyEnW3UQ4uOy - unzip Video_Codec_SDK_12.0.16.zip -d /usr/local + python3 -m gdown.cli https://drive.google.com/uc?id=13KyYoq8ZOLIA7jugDkdFma34mnyxnz4x + unzip Video_Codec_SDK_12.1.14.zip -d /usr/local ln -sf /usr/local/Video_Codec_SDK_* /usr/local/videocodecsdk fi diff --git a/.github/actions/deploy-windows/action.yml b/.github/actions/deploy-windows/action.yml index 1ad3babc4a0..375a515a898 100644 --- a/.github/actions/deploy-windows/action.yml +++ b/.github/actions/deploy-windows/action.yml @@ -93,7 +93,8 @@ runs: echo Installing CUDA, cuDNN, etc curl -LO https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_522.06_windows.exe curl -LO https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_531.14_windows.exe - curl -LO https://developer.download.nvidia.com/compute/redist/cudnn/v8.8.0/local_installers/12.0/cudnn_8.8.0.121_windows.exe + rem curl -LO https://developer.download.nvidia.com/compute/redist/cudnn/v8.8.0/local_installers/12.0/cudnn_8.8.0.121_windows.exe + python -m gdown.cli https://drive.google.com/uc?id=11XXD0D91vd-SnvdlNOMP5C9S_dWyT8Cv curl -LO http://www.winimage.com/zLibDll/zlib123dllx64.zip cuda_11.8.0_522.06_windows.exe -s bash -c "rm -Rf 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8'" @@ -101,11 +102,15 @@ runs: cuda_12.1.1_531.14_windows.exe -s bash -c "mv 'C:/Program Files/NVIDIA Corporation/NvToolsExt_old' 'C:/Program Files/NVIDIA Corporation/NvToolsExt'" bash -c "ls 'C:/Program Files/NVIDIA Corporation/NvToolsExt'" - cudnn_8.8.0.121_windows.exe -s + rem cudnn_8.8.0.121_windows.exe -s + unzip cudnn-windows-x86_64-8.9.1.23_cuda12-archive.zip unzip zlib123dllx64.zip - move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\bin\*.dll" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" - move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\include\*.h" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include" - move "%ProgramFiles%\NVIDIA\CUDNN\v8.8\lib\x64\*.lib" "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64" + 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 dll_x64\zlibwapi.dll "%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin" rem echo Applying hotfix to Visual Studio 2019 for CUDA @@ -120,9 +125,9 @@ runs: if "%CI_DEPLOY_MODULE%"=="nvcodec" ( echo Installing NVIDIA Video Codec SDK - python -m gdown.cli https://drive.google.com/uc?id=1ner_cjzhKhdlrP2VzHGZvyEnW3UQ4uOy - unzip Video_Codec_SDK_12.0.16.zip - move Video_Codec_SDK_12.0.16 "%ProgramFiles%\NVIDIA GPU Computing Toolkit\VideoCodecSDK" + python -m gdown.cli https://drive.google.com/uc?id=13KyYoq8ZOLIA7jugDkdFma34mnyxnz4x + unzip Video_Codec_SDK_12.1.14.zip + move Video_Codec_SDK_12.1.14 "%ProgramFiles%\NVIDIA GPU Computing Toolkit\VideoCodecSDK" ) if "%CI_DEPLOY_MODULE%"=="tensorrt" ( diff --git a/CHANGELOG.md b/CHANGELOG.md index dc661b33dc2..44624fa0de8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ * Map `c10::impl::GenericDict` as returned by `c10::IValue::toGenericDict()` in presets for PyTorch * Introduce `linux-armhf` and `linux-x86` builds to presets for TensorFlow Lite ([pull #1268](https://github.com/bytedeco/javacpp-presets/pull/1268)) * Add presets for LibRaw 0.21.1 ([pull #1211](https://github.com/bytedeco/javacpp-presets/pull/1211)) - * Upgrade presets for OpenCV 4.7.0, FFmpeg 6.0 ([issue bytedeco/javacv#1693](https://github.com/bytedeco/javacv/issues/1693)), HDF5 1.14.0, Hyperscan 5.4.2 ([issue #1308](https://github.com/bytedeco/javacpp-presets/issues/1308)), Spinnaker 3.0.0.118 ([pull #1313](https://github.com/bytedeco/javacpp-presets/pull/1313)), librealsense2 2.53.1 ([pull #1305](https://github.com/bytedeco/javacpp-presets/pull/1305)), MKL 2023.1, DNNL 3.1, OpenBLAS 0.3.23, ARPACK-NG 3.9.0, CPython 3.11.3, NumPy 1.24.3, SciPy 1.10.1, LLVM 16.0.3, Leptonica 1.83.0, Tesseract 5.3.1, CUDA 12.1.1, cuDNN 8.9.1, NCCL 2.18.1, OpenCL 3.0.14, NVIDIA Video Codec SDK 12.0.16, PyTorch 2.0.1, TensorFlow Lite 2.12.0, TensorRT 8.6.1.6, Triton Inference Server 2.33.0, DepthAI 2.21.2, ONNX 1.14.0, ONNX Runtime 1.15.0, TVM 0.12.0, Bullet Physics SDK 3.25, and their dependencies + * Upgrade presets for OpenCV 4.7.0, FFmpeg 6.0 ([issue bytedeco/javacv#1693](https://github.com/bytedeco/javacv/issues/1693)), HDF5 1.14.1, Hyperscan 5.4.2 ([issue #1308](https://github.com/bytedeco/javacpp-presets/issues/1308)), Spinnaker 3.0.0.118 ([pull #1313](https://github.com/bytedeco/javacpp-presets/pull/1313)), librealsense2 2.53.1 ([pull #1305](https://github.com/bytedeco/javacpp-presets/pull/1305)), MKL 2023.1, DNNL 3.1, OpenBLAS 0.3.23, ARPACK-NG 3.9.0, CPython 3.11.3, NumPy 1.24.3, SciPy 1.10.1, LLVM 16.0.4, Leptonica 1.83.0, Tesseract 5.3.1, CUDA 12.1.1, cuDNN 8.9.1, NCCL 2.18.1, OpenCL 3.0.14, NVIDIA Video Codec SDK 12.1.14, PyTorch 2.0.1, TensorFlow Lite 2.12.0, TensorRT 8.6.1.6, Triton Inference Server 2.33.0, DepthAI 2.21.2, ONNX 1.14.0, ONNX Runtime 1.15.0, TVM 0.12.0, Bullet Physics SDK 3.25, and their dependencies ### November 2, 2022 version 1.5.8 * Fix mapping of `torch::ExpandingArrayWithOptionalElem` in presets for PyTorch ([issue #1250](https://github.com/bytedeco/javacpp-presets/issues/1250)) diff --git a/README.md b/README.md index e754ac30489..65fa08cbeb4 100644 --- a/README.md +++ b/README.md @@ -218,7 +218,7 @@ Each child module in turn relies by default on the included [`cppbuild.sh` scrip * CUDA 12.1.x https://developer.nvidia.com/cuda-downloads * cuDNN 8.9.x https://developer.nvidia.com/cudnn * NCCL 2.18.x https://developer.nvidia.com/nccl - * NVIDIA Video Codec SDK 12.0.x https://developer.nvidia.com/nvidia-video-codec-sdk + * NVIDIA Video Codec SDK 12.1.x https://developer.nvidia.com/nvidia-video-codec-sdk * OpenCL 3.0.x https://github.com/KhronosGroup/OpenCL-ICD-Loader * MXNet 1.9.x https://github.com/apache/incubator-mxnet * PyTorch 2.0.x https://github.com/pytorch/pytorch diff --git a/hdf5/README.md b/hdf5/README.md index 9c2ad95d21a..9700300230c 100644 --- a/hdf5/README.md +++ b/hdf5/README.md @@ -9,7 +9,7 @@ Introduction ------------ This directory contains the JavaCPP Presets module for: - * HDF5 1.14.0 https://support.hdfgroup.org/HDF5/ + * HDF5 1.14.1 https://support.hdfgroup.org/HDF5/ Please refer to the parent README.md file for more detailed information about the JavaCPP Presets. @@ -48,7 +48,7 @@ We can use [Maven 3](http://maven.apache.org/) to download and install automatic org.bytedeco hdf5-platform - 1.14.0-1.5.9-SNAPSHOT + 1.14.1-1.5.9-SNAPSHOT diff --git a/hdf5/cppbuild.sh b/hdf5/cppbuild.sh index 58baf1538bf..63f7bdbe306 100755 --- a/hdf5/cppbuild.sh +++ b/hdf5/cppbuild.sh @@ -8,10 +8,10 @@ if [[ -z "$PLATFORM" ]]; then fi ZLIB=zlib-1.2.13 -HDF5_VERSION=1.14.0 +HDF5_VERSION=1.14.1-2 AEC_VERSION=1.0.6 download "http://zlib.net/$ZLIB.tar.gz" $ZLIB.tar.gz -download "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-$HDF5_VERSION/src/hdf5-$HDF5_VERSION.tar.bz2" hdf5-$HDF5_VERSION.tar.bz2 +download "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.14/hdf5-1.14.1/src/hdf5-$HDF5_VERSION.tar.bz2" hdf5-$HDF5_VERSION.tar.bz2 # Use Github mirror repo rather than Gitlab repo for download speed #download "https://gitlab.dkrz.de/k202009/libaec/uploads/45b10e42123edd26ab7b3ad92bcf7be2/libaec-$AEC_VERSION.tar.gz" libaec-$AEC_VERSION.tar.gz download "https://github.com/MathisRosenhauer/libaec/releases/download/v$AEC_VERSION/libaec-$AEC_VERSION.tar.gz" libaec-$AEC_VERSION.tar.gz diff --git a/hdf5/platform/pom.xml b/hdf5/platform/pom.xml index 4e7a32ba0d8..276e22ea67d 100644 --- a/hdf5/platform/pom.xml +++ b/hdf5/platform/pom.xml @@ -12,7 +12,7 @@ org.bytedeco hdf5-platform - 1.14.0-${project.parent.version} + 1.14.1-${project.parent.version} JavaCPP Presets Platform for HDF5 diff --git a/hdf5/pom.xml b/hdf5/pom.xml index 1d77e5ea3de..d0d7222fbb9 100644 --- a/hdf5/pom.xml +++ b/hdf5/pom.xml @@ -11,7 +11,7 @@ org.bytedeco hdf5 - 1.14.0-${project.parent.version} + 1.14.1-${project.parent.version} JavaCPP Presets for HDF5 diff --git a/hdf5/samples/pom.xml b/hdf5/samples/pom.xml index a084b87ba56..6bc2efa39f2 100644 --- a/hdf5/samples/pom.xml +++ b/hdf5/samples/pom.xml @@ -12,7 +12,7 @@ org.bytedeco hdf5-platform - 1.14.0-1.5.9-SNAPSHOT + 1.14.1-1.5.9-SNAPSHOT diff --git a/hdf5/src/gen/java/org/bytedeco/hdf5/H5AC_cache_config_t.java b/hdf5/src/gen/java/org/bytedeco/hdf5/H5AC_cache_config_t.java index be78b986c94..5f2a3b0395d 100644 --- a/hdf5/src/gen/java/org/bytedeco/hdf5/H5AC_cache_config_t.java +++ b/hdf5/src/gen/java/org/bytedeco/hdf5/H5AC_cache_config_t.java @@ -57,7 +57,7 @@ public class H5AC_cache_config_t extends Pointer { /* general configuration fields: */ /** */ - /** Integer field indicating the the version of the H5AC_cache_config_t + /** Integer field indicating the version of the H5AC_cache_config_t * in use. This field should be set to #H5AC__CURR_CACHE_CONFIG_VERSION * (defined in H5ACpublic.h). */ public native int version(); public native H5AC_cache_config_t version(int setter); diff --git a/hdf5/src/gen/java/org/bytedeco/hdf5/global/hdf5.java b/hdf5/src/gen/java/org/bytedeco/hdf5/global/hdf5.java index 293af085b4b..23589888c7a 100644 --- a/hdf5/src/gen/java/org/bytedeco/hdf5/global/hdf5.java +++ b/hdf5/src/gen/java/org/bytedeco/hdf5/global/hdf5.java @@ -136,7 +136,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { public static final int H5_HAVE_FILTER_DEFLATE = 1; /* Define if support for szip filter is enabled */ -public static final int H5_HAVE_FILTER_SZIP = 1; +/* #undef H5_HAVE_FILTER_SZIP */ /* Determine if __float128 is available */ /* #undef H5_HAVE_FLOAT128 */ @@ -207,7 +207,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { /* #undef H5_HAVE_LIBPTHREAD */ /* Define to 1 if you have the `sz' library (-lsz). */ -public static final int H5_HAVE_LIBSZ = 1; +/* #undef H5_HAVE_LIBSZ */ /* Define to 1 if you have the `ws2_32' library (-lws2_32). */ /* #undef H5_HAVE_LIBWS2_32 */ @@ -221,9 +221,6 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { /* Define if the map API (H5M) should be compiled */ /* #undef H5_HAVE_MAP_API */ -/* Define to 1 if you have the header file. */ -public static final int H5_HAVE_MEMORY_H = 1; - /* Define to 1 if you have the header file. */ /* #undef H5_HAVE_MFU_H */ @@ -303,6 +300,9 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { /* Define to 1 if you have the header file. */ public static final int H5_HAVE_STDINT_H = 1; +/* Define to 1 if you have the header file. */ +public static final int H5_HAVE_STDIO_H = 1; + /* Define to 1 if you have the header file. */ public static final int H5_HAVE_STDLIB_H = 1; @@ -352,7 +352,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { public static final int H5_HAVE_SYS_TYPES_H = 1; /* Define to 1 if you have the header file. */ -public static final int H5_HAVE_SZLIB_H = 1; +/* #undef H5_HAVE_SZLIB_H */ /* Define if we have thread safe support */ /* #undef H5_HAVE_THREADSAFE */ @@ -431,7 +431,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { public static final String H5_PACKAGE_NAME = "HDF5"; /* Define to the full name and version of this package. */ -public static final String H5_PACKAGE_STRING = "HDF5 1.14.0"; +public static final String H5_PACKAGE_STRING = "HDF5 1.14.1-2"; /* Define to the one symbol short name of this package. */ public static final String H5_PACKAGE_TARNAME = "hdf5"; @@ -440,7 +440,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { public static final String H5_PACKAGE_URL = ""; /* Define to the version of this package. */ -public static final String H5_PACKAGE_VERSION = "1.14.0"; +public static final String H5_PACKAGE_VERSION = "1.14.1-2"; /* Determine the maximum decimal precision in C */ /* #undef H5_PAC_C_MAX_REAL_PRECISION */ @@ -571,7 +571,9 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { /* The size of `__float128', as computed by sizeof. */ /* #undef H5_SIZEOF___FLOAT128 */ -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ public static final int H5_STDC_HEADERS = 1; /* Define if strict file format checks are enabled */ @@ -608,7 +610,7 @@ public class hdf5 extends org.bytedeco.hdf5.presets.hdf5 { /* #undef H5_USING_MEMCHECKER */ /* Version number of package */ -public static final String H5_VERSION = "1.14.0"; +public static final String H5_VERSION = "1.14.1-2"; /* Data accuracy is preferred to speed during data conversions */ public static final int H5_WANT_DATA_ACCURACY = 1; @@ -716,15 +718,15 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ /** * For tweaks, bug-fixes, or development */ -public static final int H5_VERS_RELEASE = 0; +public static final int H5_VERS_RELEASE = 1; /** * For pre-releases like \c snap0. Empty string for official releases. */ -public static final String H5_VERS_SUBRELEASE = ""; +public static final String H5_VERS_SUBRELEASE = "2"; /** * Full version string */ -public static final String H5_VERS_INFO = "HDF5 library version: 1.14.0"; +public static final String H5_VERS_INFO = "HDF5 library version: 1.14.1-2"; // #define H5check() H5check_version(H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE) @@ -1035,7 +1037,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * issued. If one finds that an HDF5 library function is failing * inexplicably, H5open() can be called first. It is safe to call * H5open() before an application issues any other function calls to - * the HDF5 library as there are no damaging side effects in calling + * the HDF5 library, as there are no damaging side effects in calling * it more than once. */ public static native @Cast("herr_t") int H5open(); @@ -1048,13 +1050,13 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \details H5atclose() registers a callback that the HDF5 library will invoke * when closing. The full capabilities of the HDF5 library are - * available to callbacks invoked through this mechanism, library + * available to callbacks invoked through this mechanism, and library * shutdown will only begin in earnest when all callbacks have been * invoked and have returned. * * Registered callbacks are invoked in LIFO order, similar to the * Standard C 'atexit' routine. For example, if 'func1' is registered, - * then 'func2', when the library is closing 'func2' will + * then 'func2', when the library is closing 'func2', will * be invoked first, then 'func1'. * * The \p ctx pointer will be passed to \p func when it's invoked. @@ -1088,13 +1090,13 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * function is in situations where the library is dynamically linked * into an application and is un-linked from the application before * exit() gets called. In those situations, a routine installed with - * atexit() would jump to a routine which was no longer in memory, + * atexit() would jump to a routine that was no longer in memory, * causing errors. * * \attention In order to be effective, this routine \Emph{must} be called * before any other HDF5 function calls, and must be called each * time the library is loaded/linked into the application (the first - * time and after it's been un-loaded). + * time and after it's been unloaded). */ public static native @Cast("herr_t") int H5dont_atexit(); /** @@ -1106,7 +1108,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * of the library, freeing any unused memory. * * It is not required that H5garbage_collect() be called at any - * particular time; it is only necessary in certain situations where + * particular time; it is only necessary for certain situations where * the application has performed actions that cause the library to * allocate many objects. The application should call * H5garbage_collect() if it eventually releases those objects and @@ -1296,7 +1298,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * @param mem [in] Buffer to be freed. Can be NULL * @return \herr_t * - * \details H5free_memory() frees memory that has been allocated by the caller + * \details H5free_memory() frees the memory that has been allocated by the caller * with H5allocate_memory() or by the HDF5 library on behalf of the * caller. * @@ -1346,7 +1348,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * initialized. * * This function is intended to have the semantics of malloc() and - * calloc(). However, unlike malloc() and calloc() which allow for a + * calloc(). However, unlike malloc() and calloc(), which allow for a * "special" pointer to be returned instead of NULL, this function * always returns NULL on failure or when size is set to 0 (zero). * @@ -1358,7 +1360,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * the same library that initially allocated it. In most cases, the * HDF5 API uses resources that are allocated and freed either * entirely by the user or entirely by the library, so this is not a - * problem. In rare cases, however, HDF5 API calls will free memory + * problem. In rare cases, however, HDF5 API calls will free the memory * that the user allocated. This function allows the user to safely * allocate this memory.\n * It is particularly important to use this function to allocate @@ -1774,7 +1776,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \brief Retrieves a name of an object based on the object identifier * * \obj_id{id} - * @param name [out] A buffer for thename associated with the identifier + * @param name [out] A buffer for the name associated with the identifier * @param size [in] The size of the \p name buffer; usually the size of * the name in bytes plus 1 for a NULL terminator * @@ -1880,7 +1882,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * with H5Iinc_ref(). When an object identifier’s reference count * reaches zero, the object will be closed. Calling an object * identifier’s \c close function decrements the reference count for - * the identifier which normally closes the object, but if the + * the identifier, which normally closes the object, but if the * reference count for the identifier has been incremented with * H5Iinc_ref(), the object will only be closed when the reference * count reaches zero with further calls to this function or the @@ -1889,15 +1891,15 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * If the object ID was created by a collective parallel call (such as * H5Dcreate(), H5Gopen(), etc.), the reference count should be * modified by all the processes which have copies of the ID. - * Generally this means that group, dataset, attribute, file and named + * Generally, this means that group, dataset, attribute, file and named * datatype IDs should be modified by all the processes and that all * other types of IDs are safe to modify by individual processes. * - * This function is of particular value when an application is - * maintaining multiple copies of an object ID. The object ID can be + * This function is of particular value when an application + * maintains multiple copies of an object ID. The object ID can be * incremented when a copy is made. Each copy of the ID can then be * safely closed or decremented and the HDF5 object will be closed - * when the reference count for that that object drops to zero. + * when the reference count for that object drops to zero. * * @since 1.6.2 * @@ -2186,7 +2188,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \details Valid identifiers are those that have been obtained by an * application and can still be used to access the original target. * Examples of invalid identifiers include: - * \li Out of range values: negative, for example + * \li Out-of-range values: negative, for example * \li Previously-valid identifiers that have been released: * for example, a dataset identifier for which the dataset has * been closed @@ -2194,7 +2196,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * H5Iis_valid() can be used with any type of identifier: object * identifier, property list identifier, attribute identifier, error * message identifier, etc. When necessary, a call to H5Iget_type() - * can determine the type of the object that \p id identifies. + * can determine the type of object that the \p id identifies. * * @since 1.8.3 * @@ -3462,7 +3464,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * dataset's datatype. * * The returned datatype identifier should be released with H5Tclose() - * to prevent resource leak. + * to prevent resource leaks. * */ public static native @Cast("hid_t") long H5Tcopy(@Cast("hid_t") long type_id); @@ -3552,7 +3554,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \p loc_id may be a file identifier, or a group identifier within * that file. \p name may be either an absolute path in the file or - * a relative path from \p loc_id naming the newly-commited datatype. + * a relative path from \p loc_id naming the newly-committed datatype. * * The link creation property list, \p lcpl_id, governs creation of * the link(s) by which the new committed datatype is accessed and @@ -3634,7 +3636,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ /** * \ingroup H5T * - * \brief Commits a transient datatype to a file, creating a new named + * \brief Commits a transient datatype to a file, creating a newly named * datatype, but does not link it into the file structure * * \fg_loc_id @@ -3764,7 +3766,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ /** * \ingroup H5T * - * \brief Decodes a binary object description of datatype and return a new + * \brief Decodes a binary object description of datatype and returns a new * object handle * * @param buf [in] Buffer for the datatype object to be decoded @@ -3836,7 +3838,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * contents from disk. * * This function essentially closes the datatype, evicts all - * metadata associated with it from the cache, and then re-opens the + * metadata associated with it from the cache, and then reopens the * datatype. The reopened datatype is automatically re-registered * with the same identifier. * @@ -4675,7 +4677,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \details H5Tget_native_type() returns the equivalent native datatype * identifier for the datatype specified by \p type_id. * - * H5Tget_native_type() is designed primarily to facilitate use of + * H5Tget_native_type() is designed primarily to facilitate the use of * the H5Dread() function, for which users otherwise must undertake a * multi-step process to determine the native datatype of a dataset * prior to reading it into memory. This function can be used for @@ -4733,7 +4735,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \note Please note that a datatype is actually an object * identifier or handle returned from opening the datatype. It - * is not persistent and its value can be different from one HDF5 + * is not persistent, and its value can be different from one HDF5 * session to the next. * * \note H5Tequal() can be used to compare datatypes. @@ -4754,14 +4756,14 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \brief Sets size for a datatype. * * \type_id - * @param size [in] New datatype size is bytes or #H5T_VARIABLE + * @param size [in] New datatype size in bytes or #H5T_VARIABLE * * @return \herr_t * * \details H5Tset_size() sets the total size, \p size, in bytes, for a * datatype. * - * \p size must have a positive value, unless it is passed in as + * \p size must have a positive value unless it is passed in as * #H5T_VARIABLE and the datatype is a string datatype. * * \li Numeric datatypes: If the datatype is atomic and the size @@ -4773,7 +4775,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \li String or character datatypes: The size set for a string * datatype should include space for the null-terminator character, - * otherwise it will not be stored on (or retrieved from) + * otherwise it will not be stored on (or retrieved from) the * disk. Adjusting the size of a string automatically sets the * precision to \p 8*size. * @@ -5367,7 +5369,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * H5Lcopy() retains the creation time and the target of the original * link. However, since the link may be renamed, the character - * encoding is that specified in \p lcpl_id rather than that of the + * encoding is specified in \p lcpl_id rather than in that of the * original link. Other link creation properties are ignored. * * If the link is a soft link, also known as a symbolic link, its @@ -5500,7 +5502,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * For instance, if target_path is \c ./foo, \p link_loc_id specifies * \c ./x/y/bar, and the name of the new link is \c new_link, then a - * subsequent request for \c ./x/y/bar/new_link will return same the + * subsequent request for \c ./x/y/bar/new_link will return the same * object as would be found at \c ./foo. * * \note H5Lcreate_soft() is for use only if the target object is in the @@ -5651,7 +5653,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * @return \herr_t * - * \details H5Lget_val() returns the value of link \p name. For smbolic links, + * \details H5Lget_val() returns the value of link \p name. For symbolic links, * this is the path to which the link points, including the null * terminator. For external and user-defined links, it is the link * buffer. @@ -5782,7 +5784,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * the link \c datasetD in the \c group group1/group2/softlink_to_group3/, * where \c group1 is a member of the group specified by \c loc_id: * - * 1. First use H5Lexists() to verify that \c group1 exists. + * 1. First, use H5Lexists() to verify that the \c group1 exists. * 2. If \c group1 exists, use H5Lexists() again, this time with name * set to \c group1/group2, to verify that \c group2 exists. * 3. If \c group2 exists, use H5Lexists() with name set to @@ -5799,7 +5801,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \c /group1/group2/softlink_to_group3, the first call to H5Lexists() * would have name set to \c /group1. * - * Note that this is an outline and does not include all necessary + * Note that this is an outline and does not include all the necessary * details. Depending on circumstances, for example, you may need to * verify that an intermediate link points to a group and that a soft * link points to an existing target. @@ -5890,7 +5892,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * There will be additional valid values if user-defined links have * been registered. * - * \p corder specifies the link’s creation order position while + * \p corder specifies the link’s creation order position, while * \p corder_valid indicates whether the value in corder is valid. * * If \p corder_valid is \c TRUE, the value in \p corder is known to @@ -5909,7 +5911,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * This value is set with #H5Pset_char_encoding. * * \c token is the location that a hard link points to, and - * \c val_size is the size of a soft link or user defined link value. + * \c val_size is the size of a soft link or user-defined link value. * H5O_token_t is used in the VOL layer. It is defined in H5public.h * as: * \snippet H5public.h H5O_token_t_snip @@ -6079,10 +6081,12 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * not been indexed by the index type, they will first be sorted by * that index then the iteration will begin; if the links have been * so indexed, the sorting step will be unnecessary, so the iteration - * may begin more quickly. + * may begin more quickly. Valid values include the following: + * \indexes * * \p order specifies the order in which objects are to be inspected - * along the index \p idx_type. + * along the index \p idx_type. Valid values include the following: + * \orders * * \p idx_p tracks the iteration and allows an iteration to be * resumed if it was stopped before all members were processed. It is @@ -6343,7 +6347,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * (with an absolute name based in the file’s root group) or a group * relative to \p loc_id. If \p loc_id fully specifies the group that * is to serve as the root of the iteration, group_name should be '.' - * (a dot). (Note that when \p loc_id fully specifies the the group + * (a dot). (Note that when \p loc_id fully specifies the group * that is to serve as the root of the iteration, the user may wish to * consider using H5Lvisit2() instead of H5Lvisit_by_name2().) * @@ -6598,7 +6602,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * If that target file does not exist, the new \p file_name after * stripping will be \c A.h5. * - For Windows, there are 6 cases: - * -# \p file_name is an absolute drive with absolute pathname. + * -# \p file_name is an absolute drive with an absolute pathname. * For example, consider a \p file_name of \c /tmp/A.h5. If that * target file does not exist, the new \p file_name after * stripping will be \c A.h5. @@ -6606,16 +6610,16 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * name. For example, consider a \p file_name of \c /tmp/A.h5. * If that target file does not exist, the new \p file_name after * stripping will be \c A.h5. - * -# \p file_name is an absolute drive with relative pathname. + * -# \p file_name is an absolute drive with a relative pathname. * For example, consider a \p file_name of \c /tmp/A.h5. If that * target file does not exist, the new \p file_name after * stripping will be \c tmp\A.h5. * -# \p file_name is in UNC (Uniform Naming Convention) format with - * server name, share name, and pathname. For example, consider + * a server name, share name, and pathname. For example, consider * a \p file_name of \c /tmp/A.h5. If that target file does not * exist, the new \p file_name after stripping will be \c A.h5. * -# \p file_name is in Long UNC (Uniform Naming Convention) format - * with server name, share name, and pathname. For example, + * with a server name, share name, and pathname. For example, * consider a \p file_name of \c /tmp/A.h5. If that target file * does not exist, the new \p file_name after stripping will be * \c A.h5. @@ -6625,7 +6629,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * does not exist, the new \p file_name after stripping will be * \c A.h5. * - * The library opens target file \p file_name with the file access + * The library opens the target file \p file_name with the file access * property list that is set via H5Pset_elink_fapl() when the external * link link_name is accessed. If no such property list is set, the * library uses the file access property list associated with the file @@ -6893,7 +6897,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * H5Oopen() cannot be used to open a dataspace, attribute, property list, or file. * - * Once an object of unknown type has been opened with H5Oopen(), + * Once an object of an unknown type has been opened with H5Oopen(), * the type of that object can be determined by means of an H5Iget_type() call. * * \p loc_id may be a file, group, dataset, named datatype, or attribute. @@ -7036,7 +7040,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * the \p loc_id and \p name combination exists. * @return Returns 0 if the object pointed to by * the \p loc_id and \p name combination does not exist. - * @return Returns a negatvie value when the function fails. + * @return Returns a negative value when the function fails. * * \details H5Oexists_by_name() allows an application to determine whether * the link \p name in the group or file specified with \p loc_id @@ -7060,22 +7064,22 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * where \c group1 is a member of the group specified by \c loc_id: * * \par - * - First use H5Lexists() to verify that a link named \c group1 exists. + * - First, use H5Lexists() to verify that a link named \c group1 exists. * - If \c group1 exists, use H5Oexists_by_name() to verify that the * link \c group1 resolves to an object. - * - If \c group1 exists, use H5Lexists() again, this time with name + * - If \c group1 exists, use H5Lexists() again, this time with the name * set to \c group1/group2, to verify that the link \c group2 exists * in \c group1. * - If the \c group2 link exists, use H5Oexists_by_name() to verify * that \c group1/group2 resolves to an object. - * - If \c group2 exists, use H5Lexists() again, this time with name + * - If \c group2 exists, use H5Lexists() again, this time with the name * set to \c group1/group2/softlink_to_group3, to verify that the * link \c softlink_to_group3 exists in \c group2. * - If the \c softlink_to_group3 link exists, use H5Oexists_by_name() * to verify that \c group1/group2/softlink_to_group3 resolves to * an object. * - If \c softlink_to_group3 exists, you can now safely use H5Lexists - * with name set to \c group1/group2/softlink_to_group3/datasetD to + * with the name set to \c group1/group2/softlink_to_group3/datasetD to * verify that the target link, \c datasetD, exists. * - And finally, if the link \c datasetD exists, use H5Oexists_by_name * to verify that \c group1/group2/softlink_to_group3/datasetD @@ -7089,12 +7093,12 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * H5Lexists() would have name set to \c /group1. * * \par - * Note that this is an outline and does not include all necessary + * Note that this is an outline and does not include all the necessary * details. Depending on circumstances, for example, an application * may need to verify the type of an object also. * * \warning \Bold{Failure Modes:} - * \warning If \p loc_id and \p name both exist but the combination does not + * \warning If \p loc_id and \p name both exist, but the combination does not * resolve to an object, the function will return 0 (zero); * the function does not fail in this case. * \warning If either the location or the link specified by the \p loc_id @@ -7145,7 +7149,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \note If you are iterating through a lot of different objects to * retrieve information via the H5Oget_info() family of routines, * you may see memory building up. This can be due to memory - * allocation for metadata such as object headers and messages + * allocation for metadata, such as object headers and messages, * when the iterated objects are put into the metadata cache. * \note * If the memory buildup is not desirable, you can configure a @@ -7386,7 +7390,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \details H5Olink() creates a new hard link to an object in an HDF5 file. * \p new_loc_id and \p \p new_link_name specify the location and name of the - * new link while \p object_id identifies the object that the link + * new link, while \p object_id identifies the object that the link * points to. * * H5Olink() is designed for two purposes: @@ -7457,7 +7461,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * An object’s reference count is the number of hard links in the * file that point to that object. See the “Programming Model” * section of the HDF5 Groups chapter in the -- \ref UG - * for a more complete discussion of reference counts. + * for a complete discussion of reference counts. * * If a user application needs to determine an object’s reference * count, an H5Oget_info() call is required; the reference count @@ -7633,7 +7637,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * is overwritten. * * The target object is specified by an identifier, \p obj_id. - * If \p comment is the empty string or a null pointer, any existing + * If \p comment is an empty string or a null pointer, any existing * comment message is removed from the object. * * Comments should be relatively short, null-terminated, ASCII strings. @@ -7679,7 +7683,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * - An absolute name of the object, starting from \c /, the file’s root group * - A dot (\c .), if \p loc_id fully specifies the object * - * If \p comment is the empty string or a null pointer, any existing + * If \p comment is an empty string or a null pointer, any existing * comment message is removed from the object. * * Comments should be relatively short, null-terminated, ASCII strings. @@ -7734,7 +7738,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * only \p bufsize bytes of the comment, without a \c NULL terminator, * are returned in \p comment. * - * If an object does not have a comment, the empty string is + * If an object does not have a comment, an empty string is * returned in \p comment. * * @version 1.8.11 Fortran subroutine introduced in this release. @@ -7784,7 +7788,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * only \p bufsize bytes of the comment, without a \c NULL terminator, * are returned in \p comment. * - * If an object does not have a comment, the empty string is + * If an object does not have a comment, an empty string is * returned in \p comment. * * \p lapl_id contains a link access property list identifier. A @@ -7941,7 +7945,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * a file or an object in a file; if \p loc_id is an attribute identifier, * the object where the attribute is attached will be used. * \p obj_name specifies either an object in the file (with an absolute - * name based in the file’s root group) or an object name relative + * name based on the file’s root group) or an object name relative * to \p loc_id. If \p loc_id fully specifies the object that is to serve * as the root of the iteration, \p obj_name should be '\c .' (a dot). * (Note that when \p loc_id fully specifies the object that is to serve @@ -8060,7 +8064,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * flushed to disk without removing the data from the cache. * * The object associated with \p object_id can be any named object in an - * HDF5 file including a dataset, a group, or a committed datatype. + * HDF5 file, including a dataset, a group, or a committed datatype. * * \warning H5Oflush doesn't work correctly with parallel. It causes an assertion * failure in metadata cache during H5Fclose(). @@ -8392,10 +8396,6 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* Programmer: Robb Matzke - * Thursday, April 16, 1998 - */ - // #ifndef H5Zpublic_H // #define H5Zpublic_H @@ -8651,7 +8651,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \details H5Zget_filter_info() retrieves information about a filter. At * present, this means that the function retrieves a filter's * configuration flags, indicating whether the filter is configured to - * decode data, to encode data, neither, or both. + * decode data, encode data, neither, or both. * * If \p filter_config_flags is not set to NULL prior to the function * call, the returned parameter contains a bit field specifying the @@ -8688,8 +8688,8 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * to read an existing file encoded with that filter. * * This function should be called, and the returned \p - * filter_config_flags analyzed, before calling any other function, - * such as H5Pset_szip() , that might require a particular filter + * filter_config_flags should be analyzed, before calling any other function, + * such as H5Pset_szip(), that might require a particular filter * configuration. * * @since 1.6.3 @@ -8807,7 +8807,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * The attribute identifier returned by this function must be released * with H5Aclose() resource leaks will develop. * - * \note If \p loc_id is a file identifier, the attribute will be attached + * \note If \p loc_id is a file identifier, the attribute will be attached to * that file’s root group. * * \par Example @@ -8933,8 +8933,8 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * @param obj_name [in] Name of object, relative to location, from which * attribute is to be removed * @param idx_type [in] Type of index - * @param order [in] Order in which to iterate over index - * @param n [in] Offset within index + * @param order [in] Order in which to iterate over the index + * @param n [in] Offset within the index * \lapl_id * * @return \herr_t @@ -8951,7 +8951,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * The order in which the index is to be traversed is specified by * \p order. For example, if \p idx_type, \p order, * and \p n are set to #H5_INDEX_NAME, #H5_ITER_INC, and 5, - * respectively, the fifth attribute in lexicographic order of + * respectively, the fifth attribute in the lexicographic order of * attribute names will be removed. * * The link access property list, \p lapl_id, may provide @@ -9046,7 +9046,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \p loc_id specifies a location in the file containing the object. * \p obj_name is the name of the object to which the attribute is * attached and can be a relative name, relative to \p loc_id, - * or an absolute name, based in the root group of the file. + * or an absolute name, based on the root group of the file. * * The link access property list, \p lapl_id, may provide * information regarding the properties of links required to access @@ -9086,6 +9086,9 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * creation property list associated with the attribute specified * by \p attr_id. * + * The creation property list identifier should be released with + * H5Pclose() to prevent resource leaks. + * * @since 1.8.0 * */ @@ -9094,7 +9097,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ /** * \ingroup H5A * - * \brief Retrieves attribute information, by attribute identifier + * \brief Retrieves attribute information by attribute identifier * * \attr_id * @param ainfo [out] Attribute information struct @@ -9129,7 +9132,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \details H5Aget_info_by_idx() retrieves information for an attribute * that is attached to an object, which is specified by its * location and name, \p loc_id and \p obj_name, respectively. - * The attribute is located by its index position and the attribute + * The attribute is located by its index position, and the attribute * information is returned in the \p ainfo struct. * * The attribute is located by means of an index type, an index @@ -9151,7 +9154,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ /** * \ingroup H5A * - * \brief Retrieves attribute information, by attribute name + * \brief Retrieves attribute information by attribute name * * \fgdt_loc_id * @param obj_name [in] Name of the object to which an attribute is attached, @@ -9189,7 +9192,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * @param buf [out] Buffer to store name in * * @return Returns the length of the attribute's name, which may be longer - * than \p buf_size, if successful. Otherwise returns a negative + * than \p buf_size, if successful. Otherwise, returns a negative * value. * * \details H5Aget_name() retrieves the name of an attribute specified by @@ -9226,7 +9229,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \lapl_id * * @return Returns attribute name size, in bytes, if successful; - * otherwise returns a negative value. + * otherwise, returns a negative value. * * \details H5Aget_name_by_idx() retrieves the name of an attribute that is * attached to an object, which is specified by its location and @@ -9296,7 +9299,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \attr_id * * @return Returns the amount of storage size allocated for the attribute; - * otherwise returns 0 (zero). + * otherwise, returns 0 (zero). * * \details H5Aget_storage_size() returns the amount of storage that is * required for the specified attribute, \p attr_id. @@ -9403,7 +9406,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * @return \herr_t * Further note that this function returns the return value of - * the last operator if it was non-zero, which can be a negative + * the last operator if it is non-zero, which can be a negative * value, zero if all attributes were processed, or a positive value * indicating short-circuit success. * @@ -10482,7 +10485,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \p loc_id may specify a file, group, dataset, named datatype, * or attribute. If an attribute, dataset, or named datatype is - * specified then the dataset will be created at the location + * specified, then the dataset will be created at the location * where the attribute, dataset, or named datatype is attached. * * \p name may be either an absolute path in the file or a relative @@ -10493,7 +10496,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * file location where the dataset will be created, the datatype * is copied and converted to a transient type. * - * The link creation property list, \p lcpl_id, governs creation + * The link creation property list, \p lcpl_id, governs the creation * of the link(s) by which the new dataset is accessed and the * creation of any intermediate groups that may be missing. * @@ -10554,12 +10557,12 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \p loc_id may specify a file, group, dataset, named datatype, * or attribute. If an attribute, dataset, or named datatype is - * specified then the dataset will be created at the location + * specified, then the dataset will be created at the location * where the attribute, dataset, or named datatype is attached. * * The dataset’s datatype and dataspace are specified by * \p type_id and \p space_id, respectively. These are the - * datatype and dataspace of the dataset as it will exist in + * datatype and dataspace of the dataset as they will exist in * the file, which may differ from the datatype and dataspace * in application memory. * @@ -10670,6 +10673,20 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \details H5Dget_space_status() determines whether space has been allocated * for the dataset \p dset_id. * + * \note \Bold{BUG:} Prior to the HDF5 1.14.0, 1.12.2 and 1.10.9 releases, + * H5Dget_space_status() may return incorrect space allocation status + * values for datasets with filters applied to them. + * H5Dget_space_status() calculated the space allocation status by + * comparing the sum of the sizes of all the allocated chunks in the + * dataset against the total data size of the dataset, as calculated by + * the number of elements in the dataset's dataspace multiplied by the + * dataset's datatype size. If the dataset had any compression filters + * applied to it and the dataset chunks were successfully compressed, + * the sum of the sizes of the allocated dataset chunks would generally + * always be less than the total data size of the dataset, and + * H5Dget_space_status() wouldn't ever return + * {@code H5D_SPACE_STATUS_ALLOCATED}. + * * @since 1.6.0 * */ @@ -10712,6 +10729,9 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * a copy of the dataset creation property list associated with * the dataset specified by \p dset_id. * + * The creation property list identifier should be released with + * H5Pclose() to prevent resource leaks. + * */ public static native @Cast("hid_t") long H5Dget_create_plist(@Cast("hid_t") long dset_id); @@ -10908,7 +10928,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * context \p op_data. * * \par Example - * For each chunk, print the allocated chunk size (0 for un-allocated chunks). + * For each chunk, print the allocated chunk size (0 for unallocated chunks). * \snippet H5D_examples.c H5Dchunk_iter_cb * Iterate over all chunked datasets and chunks in a file. * \snippet H5D_examples.c H5Ovisit_cb @@ -10945,17 +10965,17 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * \p chk_idx is the chunk index in the selection. The index value * may have a value of 0 up to the number of chunks stored in - * the file that have a nonempty intersection with the file - * dataspace selection + * the file that has a nonempty intersection with the file + * dataspace selection. * * \note As of 1.10.5, the dataspace intersection is not yet - * supported, hence, the index is of all the written chunks. + * supported. Hence, the index is of all the written chunks. * * \p fspace_id specifies the file dataspace selection. It is - * intended to take #H5S_ALL for specifying the current selection. + * intended to take #H5S_ALL to specify the current selection. * * \note Please be aware that this function currently does not - * support non-trivial selections, thus \p fspace_id has no + * support non-trivial selections; thus \p fspace_id has no * effect. Also, the implementation does not handle the #H5S_ALL * macro correctly. As a workaround, an application can get * the dataspace for the dataset using H5Dget_space() and pass that @@ -11113,7 +11133,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * * This function will produce the same results as \p count calls to * H5Dread(). Information listed in that function about the specifics - * of its behaviour also apply to H5Dread_multi(). By calling + * of its behavior also applies to H5Dread_multi(). By calling * H5Dread_multi() instead of multiple calls to H5Dread(), however, the * library can in some cases pass information about the entire I/O * operation to the file driver, which can improve performance. @@ -11422,7 +11442,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * the file. Only one chunk can be written with this function. * * \p filters is a mask providing a record of which filters are - * used with the the chunk. The default value of the mask is + * used with the chunk. The default value of the mask is * zero (0), indicating that all enabled filters are applied. A * filter is skipped if the bit corresponding to the filter’s * position in the pipeline (0 ≤ position < 32) is turned on. @@ -11776,7 +11796,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * \p op and scatters it to the supplied buffer \p dst_buf in a * manner similar to data being written to a dataset. * - * \p dst_space_id is a dataspace which defines the extent of \p + * \p dst_space_id is a dataspace that defines the extent of \p * dst_buf and the selection within it to scatter the data to. * * \p type_id is the datatype of the data to be scattered in both @@ -11833,7 +11853,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * enough to hold all the data if the callback function \p op is * not provided. * - * \p op is a callback function which handles the gathered data. + * \p op is a callback function that handles the gathered data. * It is optional if \p dst_buf is large enough to hold all of the * gathered data; required otherwise. * @@ -12067,7 +12087,7 @@ significant byte first (like Motorola and SPARC, unlike Intel). */ * @param cls_name [in] Name of the error class * @param lib_name [in] Name of the client library or application to which the error class belongs * @param version [in] Version of the client library or application to which the - error class belongs. Can be \c NULL. + error class belongs. It can be \c NULL. * @return Returns a class identifier on success; otherwise returns H5I_INVALID_ID. * * \details H5Eregister_class() registers a client library or application @@ -12207,12 +12227,12 @@ error class belongs. Can be \c NULL. * * @param class_id [in] Error class identifier * @param name [out] Buffer for the error class name - * @param size [in] The maximum number of characters the class name to be returned - * by this function in\p name. + * @param size [in] The maximum number of characters of the class name to be returned + * by this function in \p name. * @return Returns non-negative value as on success; otherwise returns negative value. * * \details H5Eget_class_name() retrieves the name of the error class specified - * by the class identifier. If non-NULL pointer is passed in for \p + * by the class identifier. If a non-NULL pointer is passed in for \p * name and \p size is greater than zero, the class name of \p size * long is returned. The length of the error class name is also * returned. If NULL is passed in as \p name, only the length of class @@ -12964,7 +12984,7 @@ error class belongs. Can be \c NULL. * opened. * * The \p fapl_id parameter specifies the file access property list. - * Use of #H5P_DEFAULT specifies that default I/O access properties + * The use of #H5P_DEFAULT specifies that default I/O access properties * are to be used. * * The \p flags parameter specifies whether the file will be opened in @@ -13099,7 +13119,7 @@ error class belongs. Can be \c NULL. * \snippet H5F_examples.c flush * * \attention HDF5 does not possess full control over buffering. H5Fflush() - * flushes the internal HDF5 buffers then asks the operating system + * flushes the internal HDF5 buffers and then asks the operating system * (the OS) to flush the system buffers for the open files. After * that, the OS is responsible for ensuring that the data is * actually flushed to disk. @@ -13138,7 +13158,7 @@ error class belongs. Can be \c NULL. * \snippet H5F_examples.c minimal * * \note \Bold{Delayed close:} Note the following deviation from the - * above-described behavior. If H5Fclose() is called for a file but one + * above-described behavior. If H5Fclose() is called for a file, but one * or more objects within the file remain open, those objects will remain * accessible until they are individually closed. Thus, if the dataset * \c data_sample is open when H5Fclose() is called for the file @@ -13147,7 +13167,7 @@ error class belongs. Can be \c NULL. * automatically closed once all objects in the file have been closed.\n * Be warned, however, that there are circumstances where it is not * possible to delay closing a file. For example, an MPI-IO file close is - * a collective call; all of the processes that opened the file must + * a collective call; all of the processes that open the file must * close it collectively. The file cannot be closed at some time in the * future by each process in an independent fashion. Another example is * that an application using an AFS token-based file access privilege may @@ -13951,7 +13971,7 @@ error class belongs. Can be \c NULL. * \snippet this H5F_sect_info_t_snip * * This routine retrieves free-space section information for \p nsects - * sections or at most the maximum number of sections in the specified + * sections or, at most, the maximum number of sections in the specified * free-space manager. If the number of sections is not known, a * preliminary H5Fget_free_sections() call can be made by setting \p * sect_info to NULL and the total number of free-space sections for @@ -14260,7 +14280,7 @@ error class belongs. Can be \c NULL. * file_id. This setting is used to inform the library to create * minimized dataset object headers when \c TRUE. * - * The setting's value is returned in the boolean pointer minimize. + * The setting's value is returned in the boolean pointer minimized. * * @since 1.10.5 * @@ -14342,10 +14362,6 @@ error class belongs. Can be \c NULL. * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* - * Programmer: Robb Matzke - * Monday, July 26, 1999 - */ // #ifndef H5FDpublic_H // #define H5FDpublic_H @@ -14814,7 +14830,7 @@ error class belongs. Can be \c NULL. * * @since 1.8.0 * - * @see H5Gopen2(), H5Gclose() + * @see H5Gopen2() * */ public static native @Cast("hid_t") long H5Gcreate2(@Cast("hid_t") long loc_id, @Cast("const char*") BytePointer name, @Cast("hid_t") long lcpl_id, @Cast("hid_t") long gcpl_id, @Cast("hid_t") long gapl_id); @@ -14907,7 +14923,7 @@ error class belongs. Can be \c NULL. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() + * @see H5Gcreate2() * */ public static native @Cast("hid_t") long H5Gopen2(@Cast("hid_t") long loc_id, @Cast("const char*") BytePointer name, @Cast("hid_t") long gapl_id); @@ -14940,12 +14956,10 @@ error class belongs. Can be \c NULL. * property list associated with the group specified by \p group_id. * * The creation property list identifier should be released with - * H5Gclose() to prevent resource leaks. + * H5Pclose() to prevent resource leaks. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("hid_t") long H5Gget_create_plist(@Cast("hid_t") long group_id); @@ -14972,8 +14986,6 @@ error class belongs. Can be \c NULL. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("herr_t") int H5Gget_info(@Cast("hid_t") long loc_id, H5G_info_t ginfo); @@ -15019,8 +15031,6 @@ error class belongs. Can be \c NULL. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("herr_t") int H5Gget_info_by_name(@Cast("hid_t") long loc_id, @Cast("const char*") BytePointer name, H5G_info_t ginfo, @Cast("hid_t") long lapl_id); public static native @Cast("herr_t") int H5Gget_info_by_name(@Cast("hid_t") long loc_id, String name, H5G_info_t ginfo, @Cast("hid_t") long lapl_id); @@ -15082,8 +15092,6 @@ error class belongs. Can be \c NULL. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("herr_t") int H5Gget_info_by_idx(@Cast("hid_t") long loc_id, @Cast("const char*") BytePointer group_name, @Cast("H5_index_t") int idx_type, @Cast("H5_iter_order_t") int order, @Cast("hsize_t") long n, H5G_info_t ginfo, @Cast("hid_t") long lapl_id); @@ -15118,7 +15126,7 @@ error class belongs. Can be \c NULL. * @return \herr_t * * \details H5Gflush() causes all buffers associated with a group to be - * immediately flushed to disk without removing the data from + * immediately flushed to the disk without removing the data from * the cache. * * \attention @@ -15126,12 +15134,10 @@ error class belongs. Can be \c NULL. * flushes the internal HDF5 buffers and then asks the operating * system (the OS) to flush the system buffers for the open * files. After that, the OS is responsible for ensuring that - * the data is actually flushed to disk. + * the data is actually flushed to the disk. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("herr_t") int H5Gflush(@Cast("hid_t") long group_id); @@ -15149,14 +15155,12 @@ error class belongs. Can be \c NULL. * cleared and immediately re-loaded with updated contents from disk. * * This function essentially closes the group, evicts all - * metadata associated with it from the cache, and then re-opens + * metadata associated with it from the cache, and then reopens * the group. The reopened group is automatically re-registered * with the same identifier. * * @since 1.8.0 * - * @see H5Gcreate2(), H5Gclose() - * */ public static native @Cast("herr_t") int H5Grefresh(@Cast("hid_t") long group_id); @@ -15170,7 +15174,7 @@ error class belongs. Can be \c NULL. * * @return \herr_t * - * \details H5Gclose() releases resources used by a group which was + * \details H5Gclose() releases resources used by a group that was * opened by H5Gcreate() or H5Gopen(). After closing a group, * \p group_id cannot be used again until another H5Gcreate() * or H5Gopen() is called on it. @@ -15492,7 +15496,6 @@ error class belongs. Can be \c NULL. /** HDF5 performed one the chunk collective optimization schemes and some chunks were accessed independently, some collectively. */ H5D_MPIO_CHUNK_MIXED = 0x1 | 0x2, - /** \internal The contiguous case is separate from the bit field. */ /** Collective I/O was performed on a contiguous dataset */ H5D_MPIO_CONTIGUOUS_COLLECTIVE = 0x4; @@ -15511,7 +15514,8 @@ error class belongs. Can be \c NULL. /** Collective I/O was not performed because independent I/O was requested */ H5D_MPIO_SET_INDEPENDENT = 0x01, -/** Collective I/O was not performed because datatype conversions were required */ +/** Collective I/O was not performed because datatype conversions were required and selection I/O was not + possible (see below) */ H5D_MPIO_DATATYPE_CONVERSION = 0x02, /** Collective I/O was not performed because data transforms needed to be applied */ @@ -15532,10 +15536,85 @@ error class belongs. Can be \c NULL. /** Error */ H5D_MPIO_ERROR_WHILE_CHECKING_COLLECTIVE_POSSIBLE = 0x80, +/** Collective I/O would be supported by selection or vector I/O but that feature was disabled + (see causes via H5Pget_no_selection_io_cause()) */ + H5D_MPIO_NO_SELECTION_IO = 0x100, + /** Sentinel */ - H5D_MPIO_NO_COLLECTIVE_MAX_CAUSE = 0x100; + H5D_MPIO_NO_COLLECTIVE_MAX_CAUSE = 0x200; /**

+/** + * Causes for H5Pget_no_selection_io_cause() property + */ +/** Selection I/O was not performed because \ + the feature was disabled by the API */ +public static final int H5D_SEL_IO_DISABLE_BY_API = + (0x0001); +/** Selection I/O was not performed because the \ + dataset was neither contiguous nor chunked */ +public static final int H5D_SEL_IO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET = + (0x0002); +/** Selection I/O was not performed because of \ + sieve buffer for contiguous dataset */ +public static final int H5D_SEL_IO_CONTIGUOUS_SIEVE_BUFFER = + (0x0004); +/** Selection I/O was not performed because the VFD \ + does not have vector or selection I/O callback */ +public static final int H5D_SEL_IO_NO_VECTOR_OR_SELECTION_IO_CB = + (0x0008); +/** Selection I/O was not performed because of \ + page buffer */ +public static final int H5D_SEL_IO_PAGE_BUFFER = + (0x0010); +/** Selection I/O was not performed because of \ + dataset filters */ +public static final int H5D_SEL_IO_DATASET_FILTER = + (0x0020); +/** Selection I/O was not performed because of \ + chunk cache */ +public static final int H5D_SEL_IO_CHUNK_CACHE = + (0x0040); +/** Selection I/O was not performed because the \ + type conversion buffer is too small */ +public static final int H5D_SEL_IO_TCONV_BUF_TOO_SMALL = + (0x0080); +/** Selection I/O was not performed because the \ + type conversion background buffer is too small */ +public static final int H5D_SEL_IO_BKG_BUF_TOO_SMALL = + (0x0100); +/** Selection I/O was not performed because the \ + selection I/O mode is DEFAULT and the library \ + chose it to be off for this case */ +public static final int H5D_SEL_IO_DEFAULT_OFF = + (0x0200); + +/* Causes for H5D_MPIO_NO_SELECTION_IO */ +public static final int H5D_MPIO_NO_SELECTION_IO_CAUSES = + (H5D_SEL_IO_DISABLE_BY_API | H5D_SEL_IO_TCONV_BUF_TOO_SMALL | H5D_SEL_IO_BKG_BUF_TOO_SMALL | + H5D_SEL_IO_DATASET_FILTER | H5D_SEL_IO_CHUNK_CACHE); + +/** +/** + * Selection I/O mode property + * + * \details The default value, #H5D_SELECTION_IO_MODE_DEFAULT, + * indicates selection I/O can be ON or OFF as + * determined by library internal. + */ +/** enum H5D_selection_io_mode_t */ +public static final int + +/** Default selection I/O mode. */ + H5D_SELECTION_IO_MODE_DEFAULT = 0, + +/** Selection I/O is off. */ + H5D_SELECTION_IO_MODE_OFF = 1, + +/** Selection I/O is on. */ + H5D_SELECTION_IO_MODE_ON = 2; +/** +

/********************/ /* Public Variables */ /********************/ @@ -17535,10 +17614,13 @@ error class belongs. Can be \c NULL. * (#H5Z_FILTER_DEFLATE) and the Fletcher32 error detection filter * (#H5Z_FILTER_FLETCHER32). * - * The array \p c_values contains \p cd_nelmts integers which are - * auxiliary data for the filter. The integer values will be - * stored in the dataset object header as part of the filter - * information. + * The array \p cd_values contains \p cd_nelmts unsigned integers + * which are auxiliary data for the filter. The values are typically + * used as parameters to control the filter. In a filter's + * \p set_local method (called from \p H5Dcreate), the values are + * interpreted and possibly modified before they are used to control + * the filter. These, possibly modified values, are then stored in + * the dataset object header as auxiliary data for the filter. * * The \p flags argument is a bit vector with the following * fields specifying certain general properties of the filter: @@ -17630,7 +17712,7 @@ error class belongs. Can be \c NULL. * format. The filters will come into play only when dense storage * is used (see H5Pset_link_phase_change()) and will be applied to * the group’s fractal heap. The fractal heap will contain most of - * the the group’s link metadata, including link names. + * the group’s link metadata, including link names. * * \note When working with group creation property lists, if you are * adding a filter that is not in HDF5’s set of predefined filters, @@ -18515,7 +18597,7 @@ error class belongs. Can be \c NULL. * after the call to H5Pset_fapl_core(). It is an error to use this * function with any other VFD. * - * \note This function only applies to the backing store write operation + * \note This function only applies to the backing store write operation, * which typically occurs when the file is flushed or closed. This * function has no relationship to the increment parameter passed * to H5Pset_fapl_core(). @@ -18563,7 +18645,7 @@ error class belongs. Can be \c NULL. * * Direct * #H5FD_DIRECT - * This is the #H5FD_SEC2 driver except data is written to or + * This is the #H5FD_SEC2 driver, except data is written to or * read from the file synchronously without being cached by the * system. * H5Pset_fapl_direct() @@ -18614,7 +18696,7 @@ error class belongs. Can be \c NULL. * Multi * #H5FD_MULTI * With this driver, data can be stored in multiple files - * according to the type of the data. I/O might work better if + * according to the type of data. I/O might work better if * data is stored in separate files based on the type of data. * The Split driver is a special case of this driver. * H5Pset_fapl_multi() @@ -19224,7 +19306,7 @@ error class belongs. Can be \c NULL. * for more information. * * The type of data returned in \p type will be one of those - * listed in the discussion of the \p type parameter in the the + * listed in the discussion of the \p type parameter in the * description of the function H5Pset_multi_type(). * * Use of this function is only appropriate for an HDF5 file @@ -19304,7 +19386,7 @@ error class belongs. Can be \c NULL. * \brief Returns maximum data sieve buffer size * * \fapl_id{fapl_id} - * @param size [in] Maximum size, in bytes, of data sieve buffer + * @param size [out] Maximum size, in bytes, of data sieve buffer * * @return \herr_t * @@ -19395,7 +19477,7 @@ error class belongs. Can be \c NULL. * \details H5Pset_alignment() sets the alignment properties of a * file access property list so that any file object greater * than or equal in size to \p threshold bytes will be aligned - * on an address which is a multiple of \p alignment. The + * on an address that is a multiple of \p alignment. The * addresses are relative to the end of the user block; the * alignment is calculated by subtracting the user block size * from the absolute file address and then adjusting the address @@ -19405,7 +19487,7 @@ error class belongs. Can be \c NULL. * implying no alignment. Generally the default values will * result in the best performance for single-process access to * the file. For MPI IO and other parallel systems, choose an - * alignment which is a multiple of the disk block size. + * alignment that is a multiple of the disk block size. * * If the file space handling strategy is set to * #H5F_FSPACE_STRATEGY_PAGE, then the alignment set via this @@ -19443,7 +19525,7 @@ error class belongs. Can be \c NULL. * penalized when determining which chunks to flush * from cache. A value of 0 means fully read or * written chunks are treated no differently than - * other chunks (the preemption is strictly LRU) + * other chunks (the preemption is strictly LRU), * while a value of 1 means fully read or written * chunks are always preempted before other chunks. * If your application only reads or writes data once, @@ -19465,7 +19547,7 @@ error class belongs. Can be \c NULL. * computing a hash value using the address of a chunk and then by * using that hash value as the chunk’s index into the table of * cached chunks. In other words, the size of this hash table and the - * number of possible hash values is determined by the \p rdcc_nslots + * number of possible hash values are determined by the \p rdcc_nslots * parameter. If a different chunk in the cache has the same hash value, * a collision will occur, which will reduce efficiency. If inserting * the chunk into the cache would cause the cache to be too big, then @@ -21844,7 +21926,7 @@ error class belongs. Can be \c NULL. * Specifically, a dataset with a datatype that is 8-, 16-, 32-, or * 64-bit signed or unsigned integer; char; or 32- or 64-bit float * can be compressed with SZIP. See Note, below, for further - * discussion of the the SZIP \p bits_per_pixel setting. + * discussion of the SZIP \p bits_per_pixel setting. * * SZIP options are passed in an options mask, \p options_mask, * as follows. @@ -23261,6 +23343,196 @@ error class belongs. Can be \c NULL. @Cast("const hsize_t*") long[] start, @Cast("const hsize_t*") long[] stride, @Cast("const hsize_t*") long[] count, @Cast("const hsize_t*") long... block); +/** + * + * \ingroup DXPL + * + * \brief Sets the selection I/O mode + * + * \dxpl_id{plist_id} + * @param selection_io_mode [in] The selection I/O mode to be set + * + * @return \herr_t + * + * \details H5Pset_selection_io() sets the selection I/O mode + * \p selection_io_mode in the dataset transfer property + * list \p plist_id. + * + * This can be used to enable collective I/O with type conversion, or + * with custom VFDs that support vector or selection I/O. + * + * Values that can be set in \p selection_io_mode: + * \snippet this H5D_selection_io_mode_t_snip + * \click4more + * + * \note The library may not perform selection I/O as it asks for if the + * layout callback determines that it is not feasible to do so. Please + * refer to H5Pget_no_selection_io_cause() for details. + * + * When used with type conversion, selection I/O requires the type + * conversion buffer (and the background buffer if applicable) be large + * enough to hold the entirety of the data involved in the I/O. For + * read operations, the library will use the application's read buffer + * as the type conversion buffer if the memory type is not smaller than + * the file type, eliminating the need for a separate type conversion + * buffer (a background buffer may still be required). For write + * operations, the library will similarly use the write buffer as a + * type conversion buffer, but only if H5Pset_modify_write_buf() is + * used to allow the library to modify the contents of the write + * buffer. + * + * @since 1.14.1 + * + */ +public static native @Cast("herr_t") int H5Pset_selection_io(@Cast("hid_t") long plist_id, @Cast("H5D_selection_io_mode_t") int selection_io_mode); + +/** + * + * \ingroup DXPL + * + * \brief Retrieves the selection I/O mode + * + * \dxpl_id{plist_id} + * @param selection_io_mode [out] The selection I/O mode + * + * @return \herr_t + * + * \details H5Pget_selection_io() queries the selection I/O mode set in + * in the dataset transfer property list \p plist_id. + * + * Values returned in \p selection_io_mode: + * \snippet this H5D_selection_io_mode_t_snip + * \click4more + * + * \note The library may not perform selection I/O as it asks for if the + * layout callback determines that it is not feasible to do so. Please + * refer to H5Pget_no_selection_io_cause() for details. + * + * @since 1.14.1 + * + */ +public static native @Cast("herr_t") int H5Pget_selection_io(@Cast("hid_t") long plist_id, @Cast("H5D_selection_io_mode_t*") IntPointer selection_io_mode); +public static native @Cast("herr_t") int H5Pget_selection_io(@Cast("hid_t") long plist_id, @Cast("H5D_selection_io_mode_t*") IntBuffer selection_io_mode); +public static native @Cast("herr_t") int H5Pget_selection_io(@Cast("hid_t") long plist_id, @Cast("H5D_selection_io_mode_t*") int[] selection_io_mode); + +/** + * \ingroup DXPL + * + * \brief Retrieves the cause for not performing selection or vector I/O on the + * last parallel I/O call + * + * \dxpl_id{plist_id} + * @param no_selection_io_cause [out] A bitwise set value indicating the relevant + * causes that prevented selection I/O from + * being performed + * @return \herr_t + * + * \par Motivation: + * A user can request selection I/O to be performed via a data transfer + * property list (DXPL). This can be used to enable collective I/O with + * type conversion, or with custom VFDs that support vector or selection + * I/O. However, there are conditions that can cause HDF5 to forgo + * selection or vector I/O and perform legacy (scalar) I/O instead. + * + * \details H5Pget_no_selection_io_cause() can be used to determine whether + * selection or vector I/O was applied for the last preceding I/O call. + * If selection or vector I/O was not used, this function retrieves the + * cause(s) that prevent selection or vector I/O to be performed on + * that I/O call. The properties retrieved by this function are set + * before I/O takes place and are retained even when I/O fails. + * + * If a selection I/O request falls back to vector I/O, that is not + * considered "breaking" selection I/O by this function, since vector + * I/O still passes all information to the file driver in a single + * callback. + * + * Valid values returned in \p no_selection_io_cause are listed + * as follows. If there are multiple causes, it is a bitwise OR of + * the relevant causes. + * + * - #H5D_SEL_IO_DISABLE_BY_API + * Selection I/O was not performed because the feature was disabled by the API + * - #H5D_SEL_IO_NOT_CONTIGUOUS_OR_CHUNKED_DATASET + * Selection I/O was not performed because the dataset was neither contiguous nor chunked + * - #H5D_SEL_IO_CONTIGUOUS_SIEVE_BUFFER + * Selection I/O was not performed because of sieve buffer for contiguous dataset + * - #H5D_SEL_IO_NO_VECTOR_OR_SELECTION_IO_CB + * Selection I/O was not performed because the VFD does not have vector or selection I/O callback + * - #H5D_SEL_IO_PAGE_BUFFER + * Selection I/O was not performed because of page buffer + * - #H5D_SEL_IO_DATASET_FILTER + * Selection I/O was not performed because of dataset filters + * - #H5D_SEL_IO_CHUNK_CACHE + * Selection I/O was not performed because of chunk cache + * - #H5D_SEL_IO_TCONV_BUF_TOO_SMALL + * Selection I/O was not performed because the type conversion buffer is too small + * - #H5D_SEL_IO_BKG_BUF_TOO_SMALL + * Selection I/O was not performed because the type conversion background buffer is too small + * - #H5D_SEL_IO_DEFAULT_OFF + * Selection I/O was not performed because the selection I/O mode is DEFAULT and the library chose it + * to be off for this case + * + * @since 1.14.1 + * + */ +public static native @Cast("herr_t") int H5Pget_no_selection_io_cause(@Cast("hid_t") long plist_id, @Cast("uint32_t*") IntPointer no_selection_io_cause); +public static native @Cast("herr_t") int H5Pget_no_selection_io_cause(@Cast("hid_t") long plist_id, @Cast("uint32_t*") IntBuffer no_selection_io_cause); +public static native @Cast("herr_t") int H5Pget_no_selection_io_cause(@Cast("hid_t") long plist_id, @Cast("uint32_t*") int[] no_selection_io_cause); + +/** + * + * \ingroup DXPL + * + * \brief Allows the library to modify the contents of the write buffer + * + * \dxpl_id{plist_id} + * @param modify_write_buf [in] Whether the library can modify the contents of the write buffer + * + * @return \herr_t + * + * \details H5Pset_modify_write_buf() sets whether the library is allowed to + * modify the contents of write buffers passed to HDF5 API routines + * that are passed the dataset transfer property list \p plist_id. The + * default value for modify_write_buf is FALSE. + * + * This function can be used to allow the library to perform in-place + * type conversion on write operations to save memory space. This is + * currently only used for selection I/O operations, which are used for + * collective I/O with type conversion. After making an API call with + * this parameter set to TRUE, the contents of the write buffer are + * undefined. + * + * \note When modify_write_buf is set to TRUE the library may violate the + * const qualifier on the API parameter for the write buffer. + * + * @since 1.14.1 + * + */ +public static native @Cast("herr_t") int H5Pset_modify_write_buf(@Cast("hid_t") long plist_id, @Cast("hbool_t") boolean modify_write_buf); + +/** + * + * \ingroup DXPL + * + * \brief Retrieves the "modify write buffer" property + * + * \dxpl_id{plist_id} + * @param modify_write_buf [out] Whether the library can modify the contents of the write buffer + * + * @return \herr_t + * + * \details H5Pget_modify_write_buf() gets the "modify write buffer" property + * from the dataset transfer property list \p plist_id. This property + * determines whether the library is allowed to modify the contents of + * write buffers passed to HDF5 API routines that are passed + * \p plist_id. The default value for modify_write_buf is FALSE. + * + * @since 1.14.1 + * + */ +public static native @Cast("herr_t") int H5Pget_modify_write_buf(@Cast("hid_t") long plist_id, @Cast("hbool_t*") BoolPointer modify_write_buf); +public static native @Cast("herr_t") int H5Pget_modify_write_buf(@Cast("hid_t") long plist_id, @Cast("hbool_t*") boolean[] modify_write_buf); + /** * \ingroup LCPL * @@ -24606,9 +24878,9 @@ error class belongs. Can be \c NULL. * \brief Queries the loadability of dynamic plugin types * * @param plugin_control_mask [out] List of dynamic plugin types that are enabled or disabled.\n - * A plugin bit set to 0 (zero) indicates that that the dynamic plugin type is + * A plugin bit set to 0 (zero) indicates that the dynamic plugin type is * disabled.\n - * A plugin bit set to 1 (one) indicates that that the dynamic plugin type is + * A plugin bit set to 1 (one) indicates that the dynamic plugin type is * enabled.\n * If the value of \p plugin_control_mask is negative, all dynamic plugin * types are enabled.\n @@ -24616,7 +24888,7 @@ error class belongs. Can be \c NULL. * are disabled. * @return \herr_t * - * \details H5PLget_loading_state() retrieves the bitmask that controls whether a certain type of plugins + * \details H5PLget_loading_state() retrieves the bitmask that controls whether a certain type of plugin * (e.g.: filters, VOL drivers) will be loaded by the HDF5 library. * * Bit positions allocated to date are specified in \ref H5PL_type_t as follows: @@ -24999,7 +25271,7 @@ error class belongs. Can be \c NULL. * \snippet this H5R_type_t_snip * * Note that #H5R_OBJECT1 and #H5R_DATASET_REGION1 can never be - * associated to an \ref H5R_ref_t reference and can therefore never be + * associated with an \ref H5R_ref_t reference and can, therefore, never be * returned through that function. * * \ref H5R_ref_t is defined in H5Rpublic.h as: @@ -25042,7 +25314,7 @@ error class belongs. Can be \c NULL. * @return \herr_t * * \details H5Rcopy() creates a copy of an existing reference. - * \p src_ref_ptr points to the reference to copy and \p dst_ref_ptr is the + * \p src_ref_ptr points to the reference to copy, and \p dst_ref_ptr is the * pointer to the destination reference. * */ @@ -25076,7 +25348,7 @@ error class belongs. Can be \c NULL. * * The object opened with this function should be closed when it * is no longer needed so that resource leaks will not develop. Use - * the appropriate close function such as H5Oclose() or H5Dclose() + * the appropriate close function, such as H5Oclose() or H5Dclose() * for datasets. * */ @@ -25476,7 +25748,7 @@ error class belongs. Can be \c NULL. * * The object opened with this function should be closed when it is no * longer needed so that resource leaks will not develop. Use the - * appropriate close function such as H5Oclose() or H5Dclose() for + * appropriate close function, such as H5Oclose() or H5Dclose() for * datasets. * * @since 1.10.0 @@ -26497,9 +26769,9 @@ error class belongs. Can be \c NULL. * * \space_id{sel_iter_id} * @param maxseq [in] Maximum number of sequences to retrieve - * @param maxbytes [in] Maximum number of bytes to retrieve in sequences + * @param maxelmts [in] Maximum number of elements to retrieve in sequences * @param nseq [out] Number of sequences retrieved - * @param nbytes [out] Number of bytes retrieved, in all sequences + * @param nelmts [out] Number of elements retrieved, in all sequences * @param off [out] Array of sequence offsets * @param len [out] Array of sequence lengths * @@ -26516,9 +26788,9 @@ error class belongs. Can be \c NULL. * #H5S_SEL_ITER_GET_SEQ_LIST_SORTED flag is passed to * H5Ssel_iter_create() for a point selection. * - * \p maxseq and \p maxbytes specify the most sequences or bytes + * \p maxseq and \p maxelmts specify the most sequences or elements * possible to place into the \p off and \p len arrays. \p nseq and - * \p nbytes return the actual number of sequences and bytes put + * \p nelmts return the actual number of sequences and elements put * into the arrays. * * Each call to H5Ssel_iter_get_seq_list() will retrieve the next @@ -26530,17 +26802,17 @@ error class belongs. Can be \c NULL. * the iterator was created from (which can be retrieved with * H5Sget_select_npoints(). When there are no further sequences of * elements to retrieve, calls to this routine will set \p nseq - * and \p nbytes to zero. + * and \p nelmts to zero. * * @since 1.12.0 * */ -public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxbytes, @Cast("size_t*") SizeTPointer nseq, - @Cast("size_t*") SizeTPointer nbytes, @Cast("hsize_t*") LongPointer off, @Cast("size_t*") SizeTPointer len); -public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxbytes, @Cast("size_t*") SizeTPointer nseq, - @Cast("size_t*") SizeTPointer nbytes, @Cast("hsize_t*") LongBuffer off, @Cast("size_t*") SizeTPointer len); -public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxbytes, @Cast("size_t*") SizeTPointer nseq, - @Cast("size_t*") SizeTPointer nbytes, @Cast("hsize_t*") long[] off, @Cast("size_t*") SizeTPointer len); +public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxelmts, @Cast("size_t*") SizeTPointer nseq, + @Cast("size_t*") SizeTPointer nelmts, @Cast("hsize_t*") LongPointer off, @Cast("size_t*") SizeTPointer len); +public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxelmts, @Cast("size_t*") SizeTPointer nseq, + @Cast("size_t*") SizeTPointer nelmts, @Cast("hsize_t*") LongBuffer off, @Cast("size_t*") SizeTPointer len); +public static native @Cast("herr_t") int H5Ssel_iter_get_seq_list(@Cast("hid_t") long sel_iter_id, @Cast("size_t") long maxseq, @Cast("size_t") long maxelmts, @Cast("size_t*") SizeTPointer nseq, + @Cast("size_t*") SizeTPointer nelmts, @Cast("hsize_t*") long[] off, @Cast("size_t*") SizeTPointer len); /** * \ingroup H5S * @@ -26645,7 +26917,7 @@ error class belongs. Can be \c NULL. * The \p coord parameter is a pointer to a buffer containing a * serialized 2-dimensional array of size \p num_elements by the * rank of the dataspace. The array lists dataset elements in the - * point selection; that is, it’s a list of of zero-based values + * point selection; that is, it’s a list of zero-based values * specifying the coordinates in the dataset of the selected * elements. The order of the element coordinates in the \p coord * array specifies the order in which the array elements are @@ -26687,7 +26959,7 @@ error class belongs. Can be \c NULL. * * In the 1D case, we will be selecting five points and a 1D * dataspace has rank 1, so the selection will be described in a - * 5-by-1 array. To select the 1st, 14th, 17th, 23rd, 8th elements + * 5-by-1 array. To select the 1st, 14th, 17th, 23rd and 8th elements * of the dataset, the selection array would be as follows * (remembering that point coordinates are zero-based): * \n 0 @@ -26967,9 +27239,9 @@ error class belongs. Can be \c NULL. * \details H5Sset_extent_simple() sets or resets the size of an existing * dataspace. * - * \p dims is an array of size \p rank which contains the new size + * \p dims is an array of size \p rank that contains the new size * of each dimension in the dataspace. \p max is an array of size - * \p rank which contains the maximum size of each dimension in + * \p rank that contains the maximum size of each dimension in * the dataspace. * * Any previous extent is removed from the dataspace, the dataspace @@ -27011,9 +27283,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Robb Matzke - * Monday, August 2, 1999 - * * Purpose: The public header file for the core driver. */ // #ifndef H5FDcore_H @@ -27112,9 +27381,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Raymond Lu - * Wednesday, 20 September 2006 - * * Purpose: The public header file for the direct driver. */ // #ifndef H5FDdirect_H @@ -27148,9 +27414,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Robb Matzke - * Monday, August 4, 1999 - * * Purpose: The public header file for the family driver. */ // #ifndef H5FDfamily_H @@ -27240,9 +27503,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Quincey Koziol - * Monday, April 17, 2000 - * * Purpose: The public header file for the log driver. */ // #ifndef H5FDlog_H @@ -27722,9 +27982,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Quincey Koziol - * Friday, January 30, 2004 - * * Purpose: The public header file for common items for all MPI VFL drivers */ // #ifndef H5FDmpi_H @@ -27788,9 +28045,6 @@ error class belongs. Can be \c NULL. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Programmer: Robb Matzke - * Monday, August 2, 1999 - * * Purpose: The public header file for the "multi" driver. */ // #ifndef H5FDmulti_H @@ -28021,17 +28275,17 @@ error class belongs. Can be \c NULL. * * \par Example: *

{@code
- * // Example 1: Both metadata and rawdata files are in the same
+ * // Example 1: Both metadata and raw data files are in the same
  * //            directory. Use Station1-m.h5 and Station1-r.h5 as
- * //            the metadata and rawdata files.
+ * //            the metadata and raw data files.
  * hid_t fapl, fid;
  * fapl = H5Pcreate(H5P_FILE_ACCESS);
  * H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "-r.h5", H5P_DEFAULT);
  * fid=H5Fcreate("Station1",H5F_ACC_TRUNC,H5P_DEFAULT,fapl);
  *
- * // Example 2: metadata and rawdata files are in different
+ * // Example 2: metadata and raw data files are in different
  * //            directories.  Use PointA-m.h5 and /pfs/PointA-r.h5 as
- * //            the metadata and rawdata files.
+ * //            the metadata and raw data files.
  * hid_t fapl, fid;
  * fapl = H5Pcreate(H5P_FILE_ACCESS);
  * H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "/pfs/%s-r.h5", H5P_DEFAULT);
@@ -28066,10 +28320,7 @@ error class belongs. Can be \c NULL.
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 /*
- * Programmer:  Robb Matzke
- *              Monday, August  2, 1999
- *
- * Purpose:	The public header file for the sec2 driver.
+ * Purpose:	The public header file for the sec2 driver
  */
 // #ifndef H5FDsec2_H
 // #define H5FDsec2_H
@@ -28105,10 +28356,7 @@ error class belongs. Can be \c NULL.
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 /*
- * Programmer:  Robb Matzke
- *              Monday, August  2, 1999
- *
- * Purpose:	The public header file for the sec2 driver.
+ * Purpose:	The public header file for the C stdio driver
  */
 // #ifndef H5FDstdio_H
 // #define H5FDstdio_H
@@ -33113,6 +33361,16 @@ error class belongs. Can be \c NULL.
  * \brief Current version of the H5L_class_t struct
  */
 public static final int H5L_LINK_CLASS_T_VERS = 1;
+
+/**
+ * \brief Version of external link format
+ */
+public static final int H5L_EXT_VERSION = 0;
+
+/**
+ * \brief Valid flags for external links
+ */
+public static final int H5L_EXT_FLAGS_ALL = 0;
 // Targeting ../H5L_create_func_t.java
 
 
@@ -33724,12 +33982,12 @@ error class belongs. Can be \c NULL.
  *          descriptive name for the filter, and may be the null pointer.
  *
  *          \c can_apply, described in detail below, is a user-defined callback
- *          function which determines whether the combination of the dataset
+ *          function that determines whether the combination of the dataset
  *          creation property list values, the datatype, and the dataspace
  *          represent a valid combination to apply this filter to.
  *
  *          \c set_local, described in detail below, is a user-defined callback
- *          function which sets any parameters that are specific to this
+ *          function that sets any parameters that are specific to this
  *          dataset, based on the combination of the dataset creation property
  *          list values, the datatype, and the dataspace.
  *
@@ -33739,9 +33997,9 @@ error class belongs. Can be \c NULL.
  *          The statistics associated with a filter are not reset by this
  *          function; they accumulate over the life of the library.
  *
- *          #H5Z_class_t is a macro which maps to either H5Z_class1_t or
+ *          #H5Z_class_t is a macro that maps to either H5Z_class1_t or
  *          H5Z_class2_t, depending on the needs of the application. To affect
- *          only this macro, H5Z_class_t_vers may be defined to either 1 or 2.
+ *          only this macro, H5Z_class_t_vers may be defined as either 1 or 2.
  *          Otherwise, it will behave in the same manner as other API
  *          compatibility macros. See API Compatibility Macros in HDF5 for more
  *          information. H5Z_class1_t matches the #H5Z_class_t structure that is
@@ -33758,15 +34016,15 @@ error class belongs. Can be \c NULL.
  *          defined as described in the HDF5 library header file H5Zpublic.h.
  *
  *          When a filter is applied to the fractal heap for a group (e.g.,
- *          when compressing group metadata) and if the can apply and set local
- *          callback functions have been defined for that filter, HDF5 passes
+ *          when compressing group metadata) and if they can apply and set local
+ *          callback functions that have been defined for that filter, HDF5 passes
  *          the value -1 for all parameters for those callback functions. This
  *          is done to ensure that the filter will not be applied to groups if
  *          it relies on these parameters, as they are not applicable to group
  *          fractal heaps; to operate on group fractal heaps, a filter must be
  *          capable of operating on an opaque block of binary data.
  *
- *          The \Emph{can apply} callback function must return a positive value
+ *          The \Emph{can-apply} callback function must return a positive value
  *          for a valid combination, zero for an invalid combination, and a
  *          negative value for an error.
  *          \snippet this H5Z_can_apply_func_t_snip
@@ -33799,9 +34057,9 @@ error class belongs. Can be \c NULL.
  *          \Emph{set local} callback functions for any filters used in the
  *          dataset creation property list are called. These callbacks receive
  *          \c dcpl_id, the dataset's private copy of the dataset creation
- *          property list passed in to H5Dcreate() (i.e. not the actual
- *          property list passed in to H5Dcreate()); \c type_id, the datatype
- *          identifier passed in to H5Dcreate(), which is not copied and should
+ *          property list passed into H5Dcreate() (i.e. not the actual
+ *          property list passed into H5Dcreate()); \c type_id, the datatype
+ *          identifier passed into H5Dcreate(), which is not copied and should
  *          not be modified; and \c space_id, a dataspace describing the chunk
  *          (for chunked dataset storage), which should also not be modified.
  *
@@ -33842,13 +34100,13 @@ error class belongs. Can be \c NULL.
  *          will work in many cases, but if there is a mismatch between the
  *          memory allocators used in the library and any filter that
  *          reallocates a buffer, there could be problems. This is most often
- *          the case with Windows and/or when debug memory allocators are being
+ *          the case with Windows and/or when debugging memory allocators are being
  *          used. In both cases, the "state" of the memory allocator lies in
  *          different libraries and will get corrupted if you allocate in one
  *          library and free in another. Windows adds the C standard library
- *          via dlls that can vary with Visual Studio version and debug vs
+ *          via dlls that can vary with Visual Studio version and debug vs.
  *          release builds. Static links to the MSVC CRT can also introduce
- *          new memory allocator state.
+ *          a new memory allocator state.
  *
  *          The library does provide H5allocate_memory() and H5free_memory()
  *          functions that will use the library's allocation and free functions,
@@ -33895,7 +34153,7 @@ error class belongs. Can be \c NULL.
  *          sure that all cached data that may use this filter are written out.
  *
  *          If the application is a parallel program, all processes that
- *          participate in collective data write should call this function to
+ *          participate in collective data writing should call this function to
  *          ensure that all data is flushed.
  *
  *          After a call to H5Zunregister(), the filter specified in filter
diff --git a/llvm/README.md b/llvm/README.md
index 4d96b6502f1..46e1b3a8423 100644
--- a/llvm/README.md
+++ b/llvm/README.md
@@ -9,7 +9,7 @@ Introduction
 ------------
 This directory contains the JavaCPP Presets module for:
 
- * LLVM 16.0.3  http://llvm.org/
+ * LLVM 16.0.4  http://llvm.org/
 
 Please refer to the parent README.md file for more detailed information about the JavaCPP Presets.
 
@@ -50,7 +50,7 @@ We can use [Maven 3](http://maven.apache.org/) to download and install automatic
         
             org.bytedeco
             llvm-platform
-            16.0.3-1.5.9-SNAPSHOT
+            16.0.4-1.5.9-SNAPSHOT
         
     
     
diff --git a/llvm/cppbuild.sh b/llvm/cppbuild.sh
index 3d7fb0497d8..225ccbf4611 100755
--- a/llvm/cppbuild.sh
+++ b/llvm/cppbuild.sh
@@ -7,7 +7,7 @@ if [[ -z "$PLATFORM" ]]; then
     exit
 fi
 
-LLVM_VERSION=16.0.3
+LLVM_VERSION=16.0.4
 download https://github.com/llvm/llvm-project/releases/download/llvmorg-$LLVM_VERSION/llvm-project-$LLVM_VERSION.src.tar.xz llvm-project-$LLVM_VERSION.src.tar.xz
 
 mkdir -p $PLATFORM
diff --git a/llvm/platform/pom.xml b/llvm/platform/pom.xml
index 7f67cbbabbf..b7cf46d1f89 100644
--- a/llvm/platform/pom.xml
+++ b/llvm/platform/pom.xml
@@ -12,7 +12,7 @@
 
   org.bytedeco
   llvm-platform
-  16.0.3-${project.parent.version}
+  16.0.4-${project.parent.version}
   JavaCPP Presets Platform for LLVM
 
   
diff --git a/llvm/pom.xml b/llvm/pom.xml
index 19ebb77d3a1..e92fe0cd834 100644
--- a/llvm/pom.xml
+++ b/llvm/pom.xml
@@ -11,7 +11,7 @@
 
   org.bytedeco
   llvm
-  16.0.3-${project.parent.version}
+  16.0.4-${project.parent.version}
   JavaCPP Presets for LLVM
 
   
diff --git a/llvm/samples/clang/pom.xml b/llvm/samples/clang/pom.xml
index 32b2a7a68c2..5493324d7ce 100644
--- a/llvm/samples/clang/pom.xml
+++ b/llvm/samples/clang/pom.xml
@@ -12,7 +12,7 @@
         
             org.bytedeco
             llvm-platform
-            16.0.3-1.5.9-SNAPSHOT
+            16.0.4-1.5.9-SNAPSHOT
         
     
     
diff --git a/llvm/samples/llvm/pom.xml b/llvm/samples/llvm/pom.xml
index bd336c79dc8..ec3592106f5 100644
--- a/llvm/samples/llvm/pom.xml
+++ b/llvm/samples/llvm/pom.xml
@@ -12,7 +12,7 @@
         
             org.bytedeco
             llvm-platform
-            16.0.3-1.5.9-SNAPSHOT
+            16.0.4-1.5.9-SNAPSHOT
         
         
             org.bytedeco
diff --git a/llvm/samples/polly/pom.xml b/llvm/samples/polly/pom.xml
index a411c9a1605..ce97dc2a218 100644
--- a/llvm/samples/polly/pom.xml
+++ b/llvm/samples/polly/pom.xml
@@ -13,7 +13,7 @@
         
             org.bytedeco
             llvm-platform
-            16.0.3-1.5.9-SNAPSHOT
+            16.0.4-1.5.9-SNAPSHOT
         
         
             org.bytedeco
diff --git a/nvcodec/README.md b/nvcodec/README.md
index 28c896ec39b..cd7c1d0f81f 100644
--- a/nvcodec/README.md
+++ b/nvcodec/README.md
@@ -17,7 +17,7 @@ Introduction
 ------------
 This directory contains the JavaCPP Presets module for:
 
- * NVIDIA Video Codec SDK 12.0.16  https://developer.nvidia.com/nvidia-video-codec-sdk
+ * NVIDIA Video Codec SDK 12.1.14  https://developer.nvidia.com/nvidia-video-codec-sdk
 
 Please refer to the parent README.md file for more detailed information about the JavaCPP Presets.
 
@@ -31,7 +31,7 @@ Java API documentation is available here:
 
 Sample Usage
 ------------
-Here is a simple example ported to Java from C code based on `Samples/AppEncode/AppEncCuda` and `Samples/AppDecode/AppDec` included in `Video_Codec_SDK_12.0.16.zip` available at:
+Here is a simple example ported to Java from C code based on `Samples/AppEncode/AppEncCuda` and `Samples/AppDecode/AppDec` included in `Video_Codec_SDK_12.1.14.zip` available at:
 
  * https://developer.nvidia.com/nvidia-video-codec-sdk/download
 
@@ -55,7 +55,7 @@ You can find more encoder and decoder samples in the [`samples`](samples) subdir
         
             org.bytedeco
             nvcodec-platform
-            12.0.16-1.5.9-SNAPSHOT
+            12.1.14-1.5.9-SNAPSHOT
         
 
         
diff --git a/nvcodec/platform/pom.xml b/nvcodec/platform/pom.xml
index 7b72e66cd96..44e96865238 100644
--- a/nvcodec/platform/pom.xml
+++ b/nvcodec/platform/pom.xml
@@ -12,7 +12,7 @@
 
   org.bytedeco
   nvcodec-platform
-  12.0.16-${project.parent.version}
+  12.1.14-${project.parent.version}
   JavaCPP Presets Platform for NVIDIA Video Codec SDK
 
   
diff --git a/nvcodec/pom.xml b/nvcodec/pom.xml
index 0ef8073ac48..4f520efad8d 100644
--- a/nvcodec/pom.xml
+++ b/nvcodec/pom.xml
@@ -11,7 +11,7 @@
 
   org.bytedeco
   nvcodec
-  12.0.16-${project.parent.version}
+  12.1.14-${project.parent.version}
   JavaCPP Presets for NVIDIA Video Codec SDK
 
   
diff --git a/nvcodec/samples/pom.xml b/nvcodec/samples/pom.xml
index ed99c4778a8..ca09d7a2d4c 100644
--- a/nvcodec/samples/pom.xml
+++ b/nvcodec/samples/pom.xml
@@ -16,7 +16,7 @@
         
             org.bytedeco
             nvcodec-platform
-            12.0.16-1.5.9-SNAPSHOT
+            12.1.14-1.5.9-SNAPSHOT
         
 
         
diff --git a/nvcodec/samples/simple/pom.xml b/nvcodec/samples/simple/pom.xml
index de6c9c9dd0a..fc4e039d7ad 100644
--- a/nvcodec/samples/simple/pom.xml
+++ b/nvcodec/samples/simple/pom.xml
@@ -12,7 +12,7 @@
         
             org.bytedeco
             nvcodec-platform
-            12.0.16-1.5.9-SNAPSHOT
+            12.1.14-1.5.9-SNAPSHOT
         
 
         
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvcuvid.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvcuvid.java
index a1fe2945505..580e07a9994 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvcuvid.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvcuvid.java
@@ -20,7 +20,7 @@ public class nvcuvid extends org.bytedeco.nvcodec.presets.nvcuvid {
 /*
  * This copyright notice applies to this header file only:
  *
- * Copyright (c) 2010-2022 NVIDIA Corporation
+ * Copyright (c) 2010-2023 NVIDIA Corporation
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -424,7 +424,7 @@ public class nvcuvid extends org.bytedeco.nvcodec.presets.nvcuvid {
 /*
  * This copyright notice applies to this header file only:
  *
- * Copyright (c) 2010-2022 NVIDIA Corporation
+ * Copyright (c) 2010-2023 NVIDIA Corporation
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
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 5e46bff88e6..36e91bb2e0f 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/global/nvencodeapi.java
@@ -22,7 +22,7 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 /*
  * This copyright notice applies to this header file only:
  *
- * Copyright (c) 2010-2022 NVIDIA Corporation
+ * Copyright (c) 2010-2023 NVIDIA Corporation
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -106,7 +106,7 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 
 
 public static final int NVENCAPI_MAJOR_VERSION = 12;
-public static final int NVENCAPI_MINOR_VERSION = 0;
+public static final int NVENCAPI_MINOR_VERSION = 1;
 
 public static final int NVENCAPI_VERSION = (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24));
 
@@ -185,33 +185,6 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 // =========================================================================================
 // *   Preset GUIDS supported by the NvEncodeAPI interface.
 // =========================================================================================
-// {B2DFB705-4EBD-4C49-9B5F-24A777D3E587}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_DEFAULT_GUID();
-
-// {60E4C59F-E846-4484-A56D-CD45BE9FDDF6}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_HP_GUID();
-
-// {34DBA71D-A77B-4B8F-9C3E-B6D5DA24C012}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_HQ_GUID();
-
-// {82E3E450-BDBB-4e40-989C-82A90DF9EF32}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_BD_GUID();
-
-// {49DF21C5-6DFA-4feb-9787-6ACC9EFFB726}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID();
-
-// {C5F733B9-EA97-4cf9-BEC2-BF78A74FD105}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_LOW_LATENCY_HQ_GUID();
-
-// {67082A44-4BAD-48FA-98EA-93056D150A58}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_LOW_LATENCY_HP_GUID();
-
-// {D5BFB716-C604-44e7-9BB8-DEA5510FC3AC}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID();
-
-// {149998E7-2364-411d-82EF-179888093409}
-@MemberGetter public static native @Const @Deprecated @ByRef GUID NV_ENC_PRESET_LOSSLESS_HP_GUID();
-
 // Performance degrades and quality improves as we move from P1 to P7. Presets P3 to P7 for H264 and Presets P2 to P7 for HEVC have B frames enabled by default
 // for HIGH_QUALITY and LOSSLESS tuning info, and will not work with Weighted Prediction enabled. In case Weighted Prediction is required, disable B frames by
 // setting frameIntervalP = 1
@@ -263,14 +236,7 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
     /** Variable bitrate mode */
     NV_ENC_PARAMS_RC_VBR                    = 0x1,
     /** Constant bitrate mode */
-    NV_ENC_PARAMS_RC_CBR                    = 0x2,
-    /** Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION +
-                                                              lowDelayKeyFrameScale=1 */
-    NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ        = 0x8,
-    /** Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */
-    NV_ENC_PARAMS_RC_CBR_HQ                 = 0x10,
-    /** Deprecated, use NV_ENC_PARAMS_RC_VBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */
-    NV_ENC_PARAMS_RC_VBR_HQ                 = 0x20;
+    NV_ENC_PARAMS_RC_CBR                    = 0x2;
 
 /**
  * Multi Pass encoding
@@ -284,6 +250,26 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
     /** Two Pass encoding is enabled where first Pass is full resolution */
     NV_ENC_TWO_PASS_FULL_RESOLUTION         = 0x2;
 
+/**
+ * Restore Encoder state
+ */
+/** enum NV_ENC_STATE_RESTORE_TYPE */
+public static final int
+    /** Restore full encoder state */
+    NV_ENC_STATE_RESTORE_FULL               = 0x01,
+    /** Restore only rate control state */
+    NV_ENC_STATE_RESTORE_RATE_CONTROL       = 0x02,
+    /** Restore full encoder state except for rate control state */
+    NV_ENC_STATE_RESTORE_ENCODE             = 0x03;
+
+/** enum NV_ENC_OUTPUT_STATS_LEVEL */
+public static final int
+    NV_ENC_OUTPUT_STATS_NONE          = 0,             /** No output stats */
+    NV_ENC_OUTPUT_STATS_BLOCK_LEVEL   = 1,             /** Output stats for every block. 
+                                                           Block represents a CTB for HEVC, macroblock for H.264, super block for AV1 */
+    NV_ENC_OUTPUT_STATS_ROW_LEVEL     = 2;             /** Output stats for every row. 
+                                                           Row represents a CTB row for HEVC, macroblock row for H.264, super block row for AV1 */
+
 /**
  * Emphasis Levels
  */
@@ -316,7 +302,6 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
     /** Currently This is not supported. Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as QP value.   */
     NV_ENC_QP_MAP                        = 0x3;
 
-
 /**
  * Input picture structure
  */
@@ -680,7 +665,17 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
      * This indicates that the client is attempting to unmap a resource
      * that has not been successfully mapped.
      */
-    NV_ENC_ERR_RESOURCE_NOT_MAPPED = 25;
+    NV_ENC_ERR_RESOURCE_NOT_MAPPED = 25,
+    
+    /**
+     * This indicates encode driver requires more output buffers to write an output
+     * bitstream. If this error is returned from ::NvEncRestoreEncoderState() API, this
+     * is not a fatal error. If the client is encoding with B frames then,
+     * ::NvEncRestoreEncoderState() API might be requiring the extra output buffer for accomodating overlay frame output in a separate buffer, for AV1 codec.
+     * In this case, client must call NvEncRestoreEncoderState() API again with NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream as input along with 
+     * the parameters in the previous call. When operating in asynchronous mode of encoding, client must also specify NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent.
+     */
+    NV_ENC_ERR_NEED_MORE_OUTPUT = 26;
 
 /**
  * Encode Picture encode flags.
@@ -696,7 +691,11 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
     /** Write the sequence and picture header in encoded bitstream of the current picture */
     NV_ENC_PIC_FLAG_OUTPUT_SPSPPS      = 0x4,
     /** Indicates end of the input stream */
-    NV_ENC_PIC_FLAG_EOS                = 0x8;
+    NV_ENC_PIC_FLAG_EOS                = 0x8,
+    /** Do not advance encoder state during encode */
+    NV_ENC_PIC_FLAG_DISABLE_ENC_STATE_ADVANCE = 0x10, 
+    /** Write reconstructed frame */
+    NV_ENC_PIC_FLAG_OUTPUT_RECON_FRAME        = 0x20;
 
 /**
  * Memory heap to allocate input and output buffers.
@@ -821,7 +820,9 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
                                                          This buffer usage type is not supported for HEVC ME only mode. */
     NV_ENC_OUTPUT_MOTION_VECTOR     = 0x1,
     /** Registered surface will be used for output bitstream in encoding */
-    NV_ENC_OUTPUT_BITSTREAM         = 0x2;
+    NV_ENC_OUTPUT_BITSTREAM         = 0x2,
+    /** Registered surface will be used for output reconstructed frame in encoding */
+    NV_ENC_OUTPUT_RECON             = 0x4;
 
 /**
  *  Encoder Device type
@@ -1210,10 +1211,30 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
      */
     NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH = 50,
 
+    /**
+     * Indicates encoding without advancing the state support.
+     */
+    NV_ENC_CAPS_DISABLE_ENC_STATE_ADVANCE = 51,
+
+    /**
+     * Indicates reconstructed output support.
+     */
+    NV_ENC_CAPS_OUTPUT_RECON_SURFACE = 52,
+
+    /**
+     * Indicates encoded frame output stats support for every block. Block represents a CTB for HEVC, macroblock for H.264 and super block for AV1.
+     */
+    NV_ENC_CAPS_OUTPUT_BLOCK_STATS = 53,
+
+    /**
+     * Indicates encoded frame output stats support for every row. Row represents a CTB row for HEVC, macroblock row for H.264 and super block row for AV1.
+     */
+    NV_ENC_CAPS_OUTPUT_ROW_STATS = 54,
+
      /**
      * Reserved - Not to be used by clients.
      */
-    NV_ENC_CAPS_EXPOSED_COUNT = 51;
+    NV_ENC_CAPS_EXPOSED_COUNT = 55;
 
 /**
  *  HEVC CU SIZE
@@ -1310,6 +1331,27 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 /** NV_ENC_CAPS_PARAM struct version. */
 public static native @MemberGetter int NV_ENC_CAPS_PARAM_VER();
 public static final int NV_ENC_CAPS_PARAM_VER = NV_ENC_CAPS_PARAM_VER();
+// Targeting ../nvencodeapi/NV_ENC_RESTORE_ENCODER_STATE_PARAMS.java
+
+
+
+/** NV_ENC_RESTORE_ENCODER_STATE_PARAMS struct version. */
+public static native @MemberGetter int NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER();
+public static final int NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER = NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER();
+// Targeting ../nvencodeapi/NV_ENC_OUTPUT_STATS_BLOCK.java
+
+
+
+/** NV_ENC_OUTPUT_STATS_BLOCK struct version. */
+public static native @MemberGetter int NV_ENC_OUTPUT_STATS_BLOCK_VER();
+public static final int NV_ENC_OUTPUT_STATS_BLOCK_VER = NV_ENC_OUTPUT_STATS_BLOCK_VER();
+// Targeting ../nvencodeapi/NV_ENC_OUTPUT_STATS_ROW.java
+
+
+
+/** NV_ENC_OUTPUT_STATS_ROW struct version. */
+public static native @MemberGetter int NV_ENC_OUTPUT_STATS_ROW_VER();
+public static final int NV_ENC_OUTPUT_STATS_ROW_VER = NV_ENC_OUTPUT_STATS_ROW_VER();
 // Targeting ../nvencodeapi/NV_ENC_ENCODE_OUT_PARAMS.java
 
 
@@ -1317,6 +1359,13 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 /** NV_ENC_ENCODE_OUT_PARAMS struct version. */
 public static native @MemberGetter int NV_ENC_ENCODE_OUT_PARAMS_VER();
 public static final int NV_ENC_ENCODE_OUT_PARAMS_VER = NV_ENC_ENCODE_OUT_PARAMS_VER();
+// Targeting ../nvencodeapi/NV_ENC_LOOKAHEAD_PIC_PARAMS.java
+
+
+
+/** NV_ENC_LOOKAHEAD_PIC_PARAMS struct version. */
+public static native @MemberGetter int NV_ENC_LOOKAHEAD_PIC_PARAMS_VER();
+public static final int NV_ENC_LOOKAHEAD_PIC_PARAMS_VER = NV_ENC_LOOKAHEAD_PIC_PARAMS_VER();
 // Targeting ../nvencodeapi/NV_ENC_CREATE_INPUT_BUFFER.java
 
 
@@ -1426,6 +1475,22 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
     NV_ENC_TUNING_INFO_LOSSLESS          = 4,
     /** Count number of tuningInfos. Invalid value. */
     NV_ENC_TUNING_INFO_COUNT = 5;
+
+/**
+ * Split Encoding Modes (Split Encoding is not applicable to H264).
+ */
+/** enum NV_ENC_SPLIT_ENCODE_MODE */
+public static final int
+    /** Default value, split frame forced mode disabled, split frame auto mode enabled */
+    NV_ENC_SPLIT_AUTO_MODE               = 0,
+    /** Split frame forced mode enabled with number of strips automatically selected by driver to best fit configuration */
+    NV_ENC_SPLIT_AUTO_FORCED_MODE        = 1,
+    /** Forced 2-strip split frame encoding (if NVENC number > 1, 1-strip encode otherwise) */
+    NV_ENC_SPLIT_TWO_FORCED_MODE         = 2,
+    /** Forced 3-strip split frame encoding (if NVENC number > 2, NVENC number of strips otherwise) */
+    NV_ENC_SPLIT_THREE_FORCED_MODE       = 3,
+    /** Both split frame auto mode and forced mode are disabled  */
+    NV_ENC_SPLIT_DISABLE_MODE            = 15;
 // Targeting ../nvencodeapi/NV_ENC_INITIALIZE_PARAMS.java
 
 
@@ -1494,7 +1559,6 @@ public class nvencodeapi extends org.bytedeco.nvcodec.presets.nvencodeapi {
 
 
 
-/** Macro for constructing the version field of ::_NV_ENC_LOCK_BITSTREAM */
 public static native @MemberGetter int NV_ENC_LOCK_BITSTREAM_VER();
 public static final int NV_ENC_LOCK_BITSTREAM_VER = NV_ENC_LOCK_BITSTREAM_VER();
 // Targeting ../nvencodeapi/NV_ENC_LOCK_INPUT_BUFFER.java
@@ -2474,6 +2538,34 @@ internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncode
  */
 
 
+// NvEncRestoreEncoderState
+/**
+ * \brief Restore state of encoder
+ *
+ * This function is used to restore the state of encoder with state saved internally in
+ * state buffer corresponding to index equal to 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::bfrIndex'. 
+ * Client can specify the state type to be updated by specifying appropriate value in
+ * 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::state'. The client must call this 
+ * function after all previous encodes have finished.
+ *
+ * @param encoder [in]
+ *   Pointer to the NvEncodeAPI interface.
+ * @param restoreState [in]
+ *   Pointer to the ::_NV_ENC_RESTORE_ENCODER_STATE_PARAMS structure
+ *
+ * @return
+ * ::NV_ENC_SUCCESS \n
+ * ::NV_ENC_ERR_INVALID_PTR \n
+ * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
+ * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
+ * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
+ * ::NV_ENC_ERR_OUT_OF_MEMORY \n
+ * ::NV_ENC_ERR_INVALID_PARAM \n
+ * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
+ * ::NV_ENC_ERR_GENERIC \n
+ *
+ */
+public static native @Cast("NVENCSTATUS") int NvEncRestoreEncoderState(Pointer encoder, NV_ENC_RESTORE_ENCODER_STATE_PARAMS restoreState);
 
 // NvLockInputBuffer
 /**
@@ -3090,6 +3182,33 @@ internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncode
  *   Pointer to buffer containing the details of the last error encountered by the API.
  */
 
+
+// NvEncLookaheadPicture
+/**
+ * \brief Submit an input picture for lookahead.
+ *
+ * This function can be used by clients to submit input frame for lookahead. Client could call this function 
+ * NV_ENC_INITIALIZE_PARAMS::lookaheadDepth plus one number of frames, before calling NvEncEncodePicture() for the first frame.
+ *
+ * @param encoder [in]
+ *   Pointer to the NvEncodeAPI interface.
+ * @param lookaheadParams [in]
+ *   Pointer to the ::_NV_ENC_LOOKAHEAD_PIC_PARAMS structure.
+ *
+ * @return
+ * ::NV_ENC_SUCCESS \n
+ * ::NV_ENC_NEED_MORE_INPUT \n  should we return this error is lookahead queue is not full? 
+ * ::NV_ENC_ERR_INVALID_PTR \n
+ * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n
+ * ::NV_ENC_ERR_GENERIC \n
+ * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n
+ * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n
+ * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n
+ * ::NV_ENC_ERR_OUT_OF_MEMORY \n
+ * ::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
 
 
@@ -3210,6 +3329,12 @@ internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncode
 // Targeting ../nvencodeapi/PNVENCGETSEQUENCEPARAMEX.java
 
 
+// Targeting ../nvencodeapi/PNVENCRESTOREENCODERSTATE.java
+
+
+// Targeting ../nvencodeapi/PNVENCLOOKAHEADPICTURE.java
+
+
 // Targeting ../nvencodeapi/NV_ENCODE_API_FUNCTION_LIST.java
 
 
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENCODE_API_FUNCTION_LIST.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENCODE_API_FUNCTION_LIST.java
index b76c5c4f015..7e02c62d120 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENCODE_API_FUNCTION_LIST.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENCODE_API_FUNCTION_LIST.java
@@ -128,6 +128,10 @@ public class NV_ENCODE_API_FUNCTION_LIST extends Pointer {
     public native PNVENCGETENCODEPRESETCONFIGEX nvEncGetEncodePresetConfigEx(); public native NV_ENCODE_API_FUNCTION_LIST nvEncGetEncodePresetConfigEx(PNVENCGETENCODEPRESETCONFIGEX setter);
     /** [out]: Client should access ::NvEncGetSequenceParamEx() API through this pointer.       */
     public native PNVENCGETSEQUENCEPARAMEX nvEncGetSequenceParamEx(); public native NV_ENCODE_API_FUNCTION_LIST nvEncGetSequenceParamEx(PNVENCGETSEQUENCEPARAMEX setter);
+    /** [out]: Client should access ::NvEncRestoreEncoderState() API through this pointer.      */
+    public native PNVENCRESTOREENCODERSTATE nvEncRestoreEncoderState(); public native NV_ENCODE_API_FUNCTION_LIST nvEncRestoreEncoderState(PNVENCRESTOREENCODERSTATE setter);
+    /** [out]: Client should access ::NvEncLookaheadPicture() API through this pointer.         */
+    public native PNVENCLOOKAHEADPICTURE nvEncLookaheadPicture(); public native NV_ENCODE_API_FUNCTION_LIST nvEncLookaheadPicture(PNVENCLOOKAHEADPICTURE setter);
     /** [in]:  Reserved and must be set to NULL                                                 */
     public native Pointer reserved2(int i); public native NV_ENCODE_API_FUNCTION_LIST reserved2(int i, Pointer setter);
     @MemberGetter public native @Cast("void**") PointerPointer reserved2();
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_H264.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_H264.java
index 1af0ff62c68..fd4ab9cf669 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_H264.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_H264.java
@@ -82,9 +82,7 @@ public class NV_ENC_CONFIG_H264 extends Pointer {
     /** [in]: Set 1 to enable constrained intra prediction. */
     public native @Cast("uint32_t") @NoOffset int useConstrainedIntraPred(); public native NV_ENC_CONFIG_H264 useConstrainedIntraPred(int setter);
     /** [in]: Set to 1 to enable insertion of filler data in the bitstream.
-                                                                                   This flag will take effect only when one of the CBR rate
-                                                                                   control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ,
-                                                                                   NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both
+                                                                                   This flag will take effect only when CBR rate control mode is in use and both
                                                                                    NV_ENC_INITIALIZE_PARAMS::frameRateNum and
                                                                                    NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero
                                                                                    values. Setting this field when
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_HEVC.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_HEVC.java
index 1fa021e1c52..f3b185e0a54 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_HEVC.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_CONFIG_HEVC.java
@@ -74,9 +74,7 @@ public class NV_ENC_CONFIG_HEVC extends Pointer {
     /** [in]: Specifies pixel bit depth minus 8. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/
     public native @Cast("uint32_t") @NoOffset int pixelBitDepthMinus8(); public native NV_ENC_CONFIG_HEVC pixelBitDepthMinus8(int setter);
     /** [in]: Set to 1 to enable insertion of filler data in the bitstream.
-                                                                                   This flag will take effect only when one of the CBR rate
-                                                                                   control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ,
-                                                                                   NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both
+                                                                                   This flag will take effect only when CBR rate control mode is in use and both
                                                                                    NV_ENC_INITIALIZE_PARAMS::frameRateNum and
                                                                                    NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero
                                                                                    values. Setting this field when
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_ENCODE_OUT_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_ENCODE_OUT_PARAMS.java
index 8c9ab2ee872..1f05298a7c9 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_ENCODE_OUT_PARAMS.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_ENCODE_OUT_PARAMS.java
@@ -15,7 +15,6 @@
 import static org.bytedeco.nvcodec.global.nvencodeapi.*;
 
 
-
 /**
  * Encoder Output parameters
  */
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_INITIALIZE_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_INITIALIZE_PARAMS.java
index 852179d0797..8726bf7e37a 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_INITIALIZE_PARAMS.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_INITIALIZE_PARAMS.java
@@ -74,8 +74,19 @@ public class NV_ENC_INITIALIZE_PARAMS extends Pointer {
     /** [in]: Set this to 1 to enable weighted prediction. Not supported if encode session is configured for B-Frames (i.e. NV_ENC_CONFIG::frameIntervalP > 1 or preset >=P3 when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or
                                                                                                tuningInfo = ::NV_ENC_TUNING_INFO_LOSSLESS. This is because preset >=p3 internally enables B frames when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or ::NV_ENC_TUNING_INFO_LOSSLESS). */
     public native @Cast("uint32_t") @NoOffset int enableWeightedPrediction(); public native NV_ENC_INITIALIZE_PARAMS enableWeightedPrediction(int setter);
+    /** [in]: Split Encoding mode in NVENC (Split Encoding is not applicable to H264).
+                                                                                               Not supported if any of the following features: weighted prediction, alpha layer encoding,
+                                                                                               subframe mode, output into video memory buffer, picture timing/buffering period SEI message
+                                                                                               insertion with DX12 interface are enabled in case of HEVC.
+                                                                                               For AV1, split encoding is not supported when output into video memory buffer is enabled. */
+    public native @Cast("uint32_t") @NoOffset int splitEncodeMode(); public native NV_ENC_INITIALIZE_PARAMS splitEncodeMode(int setter);
     /** [in]: Set this to 1 to enable output of NVENC in video memory buffer created by application. This feature is not supported for HEVC ME only mode. */
     public native @Cast("uint32_t") @NoOffset int enableOutputInVidmem(); public native NV_ENC_INITIALIZE_PARAMS enableOutputInVidmem(int setter);
+    /** [in]: Set this to 1 to enable reconstructed frame output. */
+    public native @Cast("uint32_t") @NoOffset int enableReconFrameOutput(); public native NV_ENC_INITIALIZE_PARAMS enableReconFrameOutput(int setter);
+    /** [in]: Set this to 1 to enable encoded frame output stats. Client must allocate buffer of size equal to number of blocks multiplied by the size of
+                                                                                               NV_ENC_OUTPUT_STATS_BLOCK struct in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats.*/
+    public native @Cast("uint32_t") @NoOffset int enableOutputStats(); public native NV_ENC_INITIALIZE_PARAMS enableOutputStats(int setter);
     /** [in]: Reserved bitfields and must be set to 0 */
     public native @Cast("uint32_t") @NoOffset int reservedBitFields(); public native NV_ENC_INITIALIZE_PARAMS reservedBitFields(int setter);
     /** [in]: Reserved private data buffer size and must be set to 0 */
@@ -83,8 +94,8 @@ public class NV_ENC_INITIALIZE_PARAMS extends Pointer {
     /** [in]: Reserved private data buffer and must be set to NULL */
     public native Pointer privData(); public native NV_ENC_INITIALIZE_PARAMS privData(Pointer setter);
     /** [in]: Specifies the advanced codec specific structure. If client has sent a valid codec config structure, it will override parameters set by the NV_ENC_INITIALIZE_PARAMS::presetGUID parameter. If set to NULL the NvEncodeAPI interface will use the NV_ENC_INITIALIZE_PARAMS::presetGUID to set the codec specific parameters.
-                                                                                               Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfig() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS.
-                                                                                               Even in this case client is recommended to pass the same preset guid it has used in ::NvEncGetEncodePresetConfig() API to query the config structure; as NV_ENC_INITIALIZE_PARAMS::presetGUID. This will not override the custom config structure but will be used to determine other Encoder HW specific parameters not exposed in the API. */
+                                                                                               Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfigEx() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS.
+                                                                                               Even in this case client is recommended to pass the same preset guid it has used in ::NvEncGetEncodePresetConfigEx() API to query the config structure; as NV_ENC_INITIALIZE_PARAMS::presetGUID. This will not override the custom config structure but will be used to determine other Encoder HW specific parameters not exposed in the API. */
     public native NV_ENC_CONFIG encodeConfig(); public native NV_ENC_INITIALIZE_PARAMS encodeConfig(NV_ENC_CONFIG setter);
     /** [in]: Maximum encode width to be used for current Encode session.
                                                                                                Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encoder will not allow dynamic resolution change. */
@@ -101,6 +112,14 @@ public class NV_ENC_INITIALIZE_PARAMS extends Pointer {
     public native @Cast("NV_ENC_TUNING_INFO") int tuningInfo(); public native NV_ENC_INITIALIZE_PARAMS tuningInfo(int setter);
     /** [in]: Input buffer format. Used only when DX12 interface type is used */
     public native @Cast("NV_ENC_BUFFER_FORMAT") int bufferFormat(); public native NV_ENC_INITIALIZE_PARAMS bufferFormat(int setter);
+    /** [in]: Number of state buffers to allocate to save encoder state. Set this to value greater than zero to enable encoding without advancing the encoder state. */
+    public native @Cast("uint32_t") int numStateBuffers(); public native NV_ENC_INITIALIZE_PARAMS numStateBuffers(int setter);
+    /** [in]: Specifies the level for encoded frame output stats, when NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1.
+                                                                                               Client should allocate buffer of size equal to number of blocks multiplied by the size of NV_ENC_OUTPUT_STATS_BLOCK struct
+                                                                                               if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of 
+                                                                                               NV_ENC_OUTPUT_STATS_ROW struct if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_ROW
+                                                                                               in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats. */
+    public native @Cast("NV_ENC_OUTPUT_STATS_LEVEL") int outputStatsLevel(); public native NV_ENC_INITIALIZE_PARAMS outputStatsLevel(int setter);
     /** [in]: Reserved and must be set to 0 */
     public native @Cast("uint32_t") int reserved(int i); public native NV_ENC_INITIALIZE_PARAMS reserved(int i, int setter);
     @MemberGetter public native @Cast("uint32_t*") IntPointer reserved();
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOCK_BITSTREAM.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOCK_BITSTREAM.java
index 6e551c7bd96..58e95945231 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOCK_BITSTREAM.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOCK_BITSTREAM.java
@@ -84,9 +84,6 @@ public class NV_ENC_LOCK_BITSTREAM extends Pointer {
     public native @Cast("uint32_t") int ltrFrameBitmap(); public native NV_ENC_LOCK_BITSTREAM ltrFrameBitmap(int setter);
     /** [out]: TemporalId value of the frame when using temporalSVC encoding */
     public native @Cast("uint32_t") int temporalId(); public native NV_ENC_LOCK_BITSTREAM temporalId(int setter);
-    /** [in]: Reserved and must be set to 0 */
-    public native @Cast("uint32_t") int reserved(int i); public native NV_ENC_LOCK_BITSTREAM reserved(int i, int setter);
-    @MemberGetter public native @Cast("uint32_t*") IntPointer reserved();
     /** [out]: For H264, Number of Intra MBs in the encoded frame. For HEVC, Number of Intra CTBs in the encoded frame. For AV1, Number of Intra SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */
     public native @Cast("uint32_t") int intraMBCount(); public native NV_ENC_LOCK_BITSTREAM intraMBCount(int setter);
     /** [out]: For H264, Number of Inter MBs in the encoded frame, includes skip MBs. For HEVC, Number of Inter CTBs in the encoded frame. For AV1, Number of Inter SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */
@@ -97,11 +94,19 @@ public class NV_ENC_LOCK_BITSTREAM extends Pointer {
     public native @Cast("int32_t") int averageMVY(); public native NV_ENC_LOCK_BITSTREAM averageMVY(int setter);
     /** [out]: Number of bytes generated for the alpha layer in the encoded output. Applicable only when HEVC with alpha encoding is enabled. */
     public native @Cast("uint32_t") int alphaLayerSizeInBytes(); public native NV_ENC_LOCK_BITSTREAM alphaLayerSizeInBytes(int setter);
-
+    /** [in]: Size of the buffer pointed by NV_ENC_LOCK_BITSTREAM::outputStatsPtr. */
+    public native @Cast("uint32_t") int outputStatsPtrSize(); public native NV_ENC_LOCK_BITSTREAM outputStatsPtrSize(int setter);
+    /** [in, out]: Buffer which receives the encoded frame output stats, if NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1. */
+    public native Pointer outputStatsPtr(); public native NV_ENC_LOCK_BITSTREAM outputStatsPtr(Pointer setter);
+    /** [out]: Frame index in display order */
+    public native @Cast("uint32_t") int frameIdxDisplay(); public native NV_ENC_LOCK_BITSTREAM frameIdxDisplay(int setter);
     /** [in]: Reserved and must be set to 0 */
     public native @Cast("uint32_t") int reserved1(int i); public native NV_ENC_LOCK_BITSTREAM reserved1(int i, int setter);
     @MemberGetter public native @Cast("uint32_t*") IntPointer reserved1();
     /** [in]: Reserved and must be set to NULL */
     public native Pointer reserved2(int i); public native NV_ENC_LOCK_BITSTREAM reserved2(int i, Pointer setter);
     @MemberGetter public native @Cast("void**") PointerPointer reserved2();
+    /** [in]: Reserved and must be set to 0 */
+    public native @Cast("uint32_t") int reservedInternal(int i); public native NV_ENC_LOCK_BITSTREAM reservedInternal(int i, int setter);
+    @MemberGetter public native @Cast("uint32_t*") IntPointer reservedInternal();
 }
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOOKAHEAD_PIC_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOOKAHEAD_PIC_PARAMS.java
new file mode 100644
index 00000000000..8125a2d6657
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_LOOKAHEAD_PIC_PARAMS.java
@@ -0,0 +1,51 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+
+/**
+ * Lookahead picture parameters
+ */
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class NV_ENC_LOOKAHEAD_PIC_PARAMS extends Pointer {
+    static { Loader.load(); }
+    /** Default native constructor. */
+    public NV_ENC_LOOKAHEAD_PIC_PARAMS() { super((Pointer)null); allocate(); }
+    /** Native array allocator. Access with {@link Pointer#position(long)}. */
+    public NV_ENC_LOOKAHEAD_PIC_PARAMS(long size) { super((Pointer)null); allocateArray(size); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public NV_ENC_LOOKAHEAD_PIC_PARAMS(Pointer p) { super(p); }
+    private native void allocate();
+    private native void allocateArray(long size);
+    @Override public NV_ENC_LOOKAHEAD_PIC_PARAMS position(long position) {
+        return (NV_ENC_LOOKAHEAD_PIC_PARAMS)super.position(position);
+    }
+    @Override public NV_ENC_LOOKAHEAD_PIC_PARAMS getPointer(long i) {
+        return new NV_ENC_LOOKAHEAD_PIC_PARAMS((Pointer)this).offsetAddress(i);
+    }
+
+    /** [in]: Struct version. */
+    public native @Cast("uint32_t") int version(); public native NV_ENC_LOOKAHEAD_PIC_PARAMS version(int setter);
+    /** [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/
+    public native NV_ENC_INPUT_PTR inputBuffer(); public native NV_ENC_LOOKAHEAD_PIC_PARAMS inputBuffer(NV_ENC_INPUT_PTR setter);
+    /** [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */
+    public native @Cast("NV_ENC_PIC_TYPE") int pictureType(); public native NV_ENC_LOOKAHEAD_PIC_PARAMS pictureType(int setter);
+    /** [in]: Reserved and must be set to 0 */
+    public native @Cast("uint32_t") int reserved(int i); public native NV_ENC_LOOKAHEAD_PIC_PARAMS reserved(int i, int setter);
+    @MemberGetter public native @Cast("uint32_t*") IntPointer reserved();
+    /** [in]: Reserved and must be set to NULL */
+    public native Pointer reserved1(int i); public native NV_ENC_LOOKAHEAD_PIC_PARAMS reserved1(int i, Pointer setter);
+    @MemberGetter public native @Cast("void**") PointerPointer reserved1();
+}
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_BLOCK.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_BLOCK.java
new file mode 100644
index 00000000000..56469a2b765
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_BLOCK.java
@@ -0,0 +1,51 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+
+/**
+ * Encoded frame information parameters for every block.
+ */
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class NV_ENC_OUTPUT_STATS_BLOCK extends Pointer {
+    static { Loader.load(); }
+    /** Default native constructor. */
+    public NV_ENC_OUTPUT_STATS_BLOCK() { super((Pointer)null); allocate(); }
+    /** Native array allocator. Access with {@link Pointer#position(long)}. */
+    public NV_ENC_OUTPUT_STATS_BLOCK(long size) { super((Pointer)null); allocateArray(size); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public NV_ENC_OUTPUT_STATS_BLOCK(Pointer p) { super(p); }
+    private native void allocate();
+    private native void allocateArray(long size);
+    @Override public NV_ENC_OUTPUT_STATS_BLOCK position(long position) {
+        return (NV_ENC_OUTPUT_STATS_BLOCK)super.position(position);
+    }
+    @Override public NV_ENC_OUTPUT_STATS_BLOCK getPointer(long i) {
+        return new NV_ENC_OUTPUT_STATS_BLOCK((Pointer)this).offsetAddress(i);
+    }
+
+   /** [in]: Struct version */
+   public native @Cast("uint32_t") int version(); public native NV_ENC_OUTPUT_STATS_BLOCK version(int setter);
+   /** [out]: QP of the block */
+   public native @Cast("uint8_t") byte QP(); public native NV_ENC_OUTPUT_STATS_BLOCK QP(byte setter);
+   /** [in]: Reserved and must be set to 0 */
+   public native @Cast("uint8_t") byte reserved(int i); public native NV_ENC_OUTPUT_STATS_BLOCK reserved(int i, byte setter);
+   @MemberGetter public native @Cast("uint8_t*") BytePointer reserved();
+   /** [out]: Bitcount of the block */
+   public native @Cast("uint32_t") int bitcount(); public native NV_ENC_OUTPUT_STATS_BLOCK bitcount(int setter);
+   /** [in]: Reserved and must be set to 0 */
+   public native @Cast("uint32_t") int reserved1(int i); public native NV_ENC_OUTPUT_STATS_BLOCK reserved1(int i, int setter);
+   @MemberGetter public native @Cast("uint32_t*") IntPointer reserved1();
+}
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_ROW.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_ROW.java
new file mode 100644
index 00000000000..870873164c6
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_OUTPUT_STATS_ROW.java
@@ -0,0 +1,51 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+
+/**
+ * Encoded frame information parameters for every row.
+ */
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class NV_ENC_OUTPUT_STATS_ROW extends Pointer {
+    static { Loader.load(); }
+    /** Default native constructor. */
+    public NV_ENC_OUTPUT_STATS_ROW() { super((Pointer)null); allocate(); }
+    /** Native array allocator. Access with {@link Pointer#position(long)}. */
+    public NV_ENC_OUTPUT_STATS_ROW(long size) { super((Pointer)null); allocateArray(size); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public NV_ENC_OUTPUT_STATS_ROW(Pointer p) { super(p); }
+    private native void allocate();
+    private native void allocateArray(long size);
+    @Override public NV_ENC_OUTPUT_STATS_ROW position(long position) {
+        return (NV_ENC_OUTPUT_STATS_ROW)super.position(position);
+    }
+    @Override public NV_ENC_OUTPUT_STATS_ROW getPointer(long i) {
+        return new NV_ENC_OUTPUT_STATS_ROW((Pointer)this).offsetAddress(i);
+    }
+
+   /** [in]: Struct version */
+   public native @Cast("uint32_t") int version(); public native NV_ENC_OUTPUT_STATS_ROW version(int setter);
+   /** [out]: QP of the row */
+   public native @Cast("uint8_t") byte QP(); public native NV_ENC_OUTPUT_STATS_ROW QP(byte setter);
+   /** [in]: Reserved and must be set to 0 */
+   public native @Cast("uint8_t") byte reserved(int i); public native NV_ENC_OUTPUT_STATS_ROW reserved(int i, byte setter);
+   @MemberGetter public native @Cast("uint8_t*") BytePointer reserved();
+   /** [out]: Bitcount of the row */
+   public native @Cast("uint32_t") int bitcount(); public native NV_ENC_OUTPUT_STATS_ROW bitcount(int setter);
+   /** [in]: Reserved and must be set to 0 */
+   public native @Cast("uint32_t") int reserved1(int i); public native NV_ENC_OUTPUT_STATS_ROW reserved1(int i, int setter);
+   @MemberGetter public native @Cast("uint32_t*") IntPointer reserved1();
+}
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_PIC_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_PIC_PARAMS.java
index a7fb697b44d..981b87ffc2b 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_PIC_PARAMS.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_PIC_PARAMS.java
@@ -115,9 +115,19 @@ public class NV_ENC_PIC_PARAMS extends Pointer {
                                                                                                 NV_ENC_PIC_PARAMS::meSbHintsCount must never exceed the total number of SBs in frame * the max number of candidates per SB provided during encoder initialization.
                                                                                                 The max number of candidates per SB is maxMeHintCountsPerBlock[0].numCandsPerSb + maxMeHintCountsPerBlock[1].numCandsPerSb */
     public native @Cast("uint32_t") int meSbHintsCount(); public native NV_ENC_PIC_PARAMS meSbHintsCount(int setter);
+    /** [in]: Specifies the buffer index in which the encoder state will be saved for current frame encode. It must be in the 
+                                                                                                range 0 to NV_ENC_INITIALIZE_PARAMS::numStateBuffers - 1. */
+    public native @Cast("uint32_t") int stateBufferIdx(); public native NV_ENC_PIC_PARAMS stateBufferIdx(int setter);
+    /** [in]: Specifies the reconstructed frame buffer pointer to output reconstructed frame, if enabled by setting NV_ENC_INITIALIZE_PARAMS::enableReconFrameOutput.
+                                                                                                Client must allocate buffers for writing the reconstructed frames and register them with the Nvidia Video Encoder Interface with NV_ENC_REGISTER_RESOURCE::bufferUsage
+                                                                                                set to NV_ENC_OUTPUT_RECON. 
+                                                                                                Client must use the pointer obtained from ::NvEncMapInputResource() API and assign it to NV_ENC_PIC_PARAMS::outputReconBuffer.
+                                                                                                Reconstructed output will be in NV_ENC_BUFFER_FORMAT_NV12 format when chromaFormatIDC is set to 1.
+                                                                                                chromaFormatIDC = 3 is not supported. */
+    public native NV_ENC_OUTPUT_PTR outputReconBuffer(); public native NV_ENC_PIC_PARAMS outputReconBuffer(NV_ENC_OUTPUT_PTR setter);
     /** [in]: Reserved and must be set to 0 */
     public native @Cast("uint32_t") int reserved3(int i); public native NV_ENC_PIC_PARAMS reserved3(int i, int setter);
-    @MemberGetter public native @Cast("uint32_t*") IntPointer reserved3();
+    @MemberGetter public native @Cast("uint32_t*") IntPointer reserved3();    
     /** [in]: Reserved and must be set to NULL */
     public native Pointer reserved4(int i); public native NV_ENC_PIC_PARAMS reserved4(int i, Pointer setter);
     @MemberGetter public native @Cast("void**") PointerPointer reserved4();
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RC_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RC_PARAMS.java
index 1a6bf798814..cf7cd8fe129 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RC_PARAMS.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RC_PARAMS.java
@@ -76,13 +76,18 @@ public class NV_ENC_RC_PARAMS extends Pointer {
     /** [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive).
                                                                                                 If not set, strength is auto selected by driver. */
     public native @Cast("uint32_t") @NoOffset int aqStrength(); public native NV_ENC_RC_PARAMS aqStrength(int setter);
+    /** [in]: Set this to 1 to enable lookahead externally. 
+                                                                                                Application must call NvEncLookahead() for NV_ENC_RC_PARAMS::lookaheadDepth number of frames,
+                                                                                                before calling NvEncEncodePicture() for the first frame */
+    public native @Cast("uint32_t") @NoOffset int enableExtLookahead(); public native NV_ENC_RC_PARAMS enableExtLookahead(int setter);
     /** [in]: Reserved bitfields and must be set to 0 */
     public native @Cast("uint32_t") @NoOffset int reservedBitFields(); public native NV_ENC_RC_PARAMS reservedBitFields(int setter);
     /** [in]: Specifies the minimum QP used for rate control. Client must set NV_ENC_CONFIG::enableMinQP to 1. */
     public native @ByRef NV_ENC_QP minQP(); public native NV_ENC_RC_PARAMS minQP(NV_ENC_QP setter);
     /** [in]: Specifies the maximum QP used for rate control. Client must set NV_ENC_CONFIG::enableMaxQP to 1. */
     public native @ByRef NV_ENC_QP maxQP(); public native NV_ENC_RC_PARAMS maxQP(NV_ENC_QP setter);
-    /** [in]: Specifies the initial QP used for rate control. Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */
+    /** [in]: Specifies the initial QP hint used for rate control. The parameter is just used as hint to influence the QP difference between I,P and B frames.
+                                                                                                Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */
     public native @ByRef NV_ENC_QP initialRCQP(); public native NV_ENC_RC_PARAMS initialRCQP(NV_ENC_QP setter);
     /** [in]: Specifies the temporal layers (as a bitmask) whose QPs have changed. Valid max bitmask is [2^NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS - 1].
                                                                                                 Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_REGISTER_RESOURCE.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_REGISTER_RESOURCE.java
index 5f62598ca8b..c3a3f62b13c 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_REGISTER_RESOURCE.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_REGISTER_RESOURCE.java
@@ -80,6 +80,12 @@ width of the allocation in bytes (i.e.
                                                                                The fence NV_ENC_FENCE_POINT_D3D12::pFence and NV_ENC_FENCE_POINT_D3D12::signalValue will be used to do GPU signal
                                                                                when GPU operation finishes, if NV_ENC_FENCE_POINT_D3D12::bSignal is set. */
     public native NV_ENC_FENCE_POINT_D3D12 pInputFencePoint(); public native NV_ENC_REGISTER_RESOURCE pInputFencePoint(NV_ENC_FENCE_POINT_D3D12 setter);
+    /** [out]: Chroma offset for the reconstructed output buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set 
+                                                                               to NV_ENC_OUTPUT_RECON and D3D11 interface is used. 
+                                                                               When chroma components are interleaved, 'chromaOffset[0]' will contain chroma offset. 
+                                                                               chromaOffset[1] is reserved for future use. */
+    public native @Cast("uint32_t") int chromaOffset(int i); public native NV_ENC_REGISTER_RESOURCE chromaOffset(int i, int setter);
+    @MemberGetter public native @Cast("uint32_t*") IntPointer chromaOffset();
     /** [in]: Reserved and must be set to 0. */
     public native @Cast("uint32_t") int reserved1(int i); public native NV_ENC_REGISTER_RESOURCE reserved1(int i, int setter);
     @MemberGetter public native @Cast("uint32_t*") IntPointer reserved1();
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RESTORE_ENCODER_STATE_PARAMS.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RESTORE_ENCODER_STATE_PARAMS.java
new file mode 100644
index 00000000000..419fc1341d1
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/NV_ENC_RESTORE_ENCODER_STATE_PARAMS.java
@@ -0,0 +1,58 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+
+
+/**
+ * Restore encoder state parameters
+ */
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class NV_ENC_RESTORE_ENCODER_STATE_PARAMS extends Pointer {
+    static { Loader.load(); }
+    /** Default native constructor. */
+    public NV_ENC_RESTORE_ENCODER_STATE_PARAMS() { super((Pointer)null); allocate(); }
+    /** Native array allocator. Access with {@link Pointer#position(long)}. */
+    public NV_ENC_RESTORE_ENCODER_STATE_PARAMS(long size) { super((Pointer)null); allocateArray(size); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public NV_ENC_RESTORE_ENCODER_STATE_PARAMS(Pointer p) { super(p); }
+    private native void allocate();
+    private native void allocateArray(long size);
+    @Override public NV_ENC_RESTORE_ENCODER_STATE_PARAMS position(long position) {
+        return (NV_ENC_RESTORE_ENCODER_STATE_PARAMS)super.position(position);
+    }
+    @Override public NV_ENC_RESTORE_ENCODER_STATE_PARAMS getPointer(long i) {
+        return new NV_ENC_RESTORE_ENCODER_STATE_PARAMS((Pointer)this).offsetAddress(i);
+    }
+
+    /** [in]: Struct version. */
+    public native @Cast("uint32_t") int version(); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS version(int setter);
+    /** [in]: State buffer index to which the encoder state will be restored */
+    public native @Cast("uint32_t") int bufferIdx(); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS bufferIdx(int setter);
+    /** [in]: State type to restore */
+    public native @Cast("NV_ENC_STATE_RESTORE_TYPE") int state(); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS state(int setter);
+    /** [in]: Specifies the output buffer pointer, for AV1 encode only. 
+                                                                      Application must call NvEncRestoreEncoderState() API with _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream and 
+                                                                      _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent as input when an earlier call to this API returned "NV_ENC_ERR_NEED_MORE_OUTPUT", for AV1 encode. */
+    public native NV_ENC_OUTPUT_PTR outputBitstream(); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS outputBitstream(NV_ENC_OUTPUT_PTR setter);
+    /** [in]: Specifies the completion event when asynchronous mode of encoding is enabled. Used for AV1 encode only. */
+    public native Pointer completionEvent(); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS completionEvent(Pointer setter);
+    /** [in]: Reserved and must be set to 0 */
+    public native @Cast("uint32_t") int reserved1(int i); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS reserved1(int i, int setter);
+    @MemberGetter public native @Cast("uint32_t*") IntPointer reserved1();
+    /** [in]: Reserved and must be set to NULL */
+    public native Pointer reserved2(int i); public native NV_ENC_RESTORE_ENCODER_STATE_PARAMS reserved2(int i, Pointer setter);
+    @MemberGetter public native @Cast("void**") PointerPointer reserved2();
+}
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCLOOKAHEADPICTURE.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCLOOKAHEADPICTURE.java
new file mode 100644
index 00000000000..37e17ba5abd
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCLOOKAHEADPICTURE.java
@@ -0,0 +1,25 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class PNVENCLOOKAHEADPICTURE extends FunctionPointer {
+    static { Loader.load(); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public    PNVENCLOOKAHEADPICTURE(Pointer p) { super(p); }
+    protected PNVENCLOOKAHEADPICTURE() { allocate(); }
+    private native void allocate();
+    public native @Cast("NVENCSTATUS") int call(Pointer encoder, NV_ENC_LOOKAHEAD_PIC_PARAMS lookaheadParams);
+}
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCOPENENCODESESSION.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCOPENENCODESESSION.java
index 6688898f254..a117a8da1d3 100644
--- a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCOPENENCODESESSION.java
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCOPENENCODESESSION.java
@@ -15,7 +15,6 @@
 import static org.bytedeco.nvcodec.global.nvencodeapi.*;
 
 
-
 /** \cond API PFN */
 /*
  *  Defines API function pointers
diff --git a/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCRESTOREENCODERSTATE.java b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCRESTOREENCODERSTATE.java
new file mode 100644
index 00000000000..28659d24ab1
--- /dev/null
+++ b/nvcodec/src/gen/java/org/bytedeco/nvcodec/nvencodeapi/PNVENCRESTOREENCODERSTATE.java
@@ -0,0 +1,25 @@
+// Targeted by JavaCPP version 1.5.9-SNAPSHOT: DO NOT EDIT THIS FILE
+
+package org.bytedeco.nvcodec.nvencodeapi;
+
+import java.nio.*;
+import org.bytedeco.javacpp.*;
+import org.bytedeco.javacpp.annotation.*;
+
+import static org.bytedeco.javacpp.presets.javacpp.*;
+import org.bytedeco.cuda.cudart.*;
+import static org.bytedeco.cuda.global.cudart.*;
+import org.bytedeco.nvcodec.nvcuvid.*;
+import static org.bytedeco.nvcodec.global.nvcuvid.*;
+
+import static org.bytedeco.nvcodec.global.nvencodeapi.*;
+
+@Properties(inherit = org.bytedeco.nvcodec.presets.nvencodeapi.class)
+public class PNVENCRESTOREENCODERSTATE extends FunctionPointer {
+    static { Loader.load(); }
+    /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+    public    PNVENCRESTOREENCODERSTATE(Pointer p) { super(p); }
+    protected PNVENCRESTOREENCODERSTATE() { allocate(); }
+    private native void allocate();
+    public native @Cast("NVENCSTATUS") int call(Pointer encoder, NV_ENC_RESTORE_ENCODER_STATE_PARAMS restoreState);
+}
diff --git a/onnxruntime/cppbuild.sh b/onnxruntime/cppbuild.sh
index e09d280d821..d1fe5c72ef6 100755
--- a/onnxruntime/cppbuild.sh
+++ b/onnxruntime/cppbuild.sh
@@ -21,7 +21,7 @@ if [[ "$EXTENSION" == *gpu ]]; then
     GPU_FLAGS="--use_cuda"
 fi
 
-ONNXRUNTIME=rel-1.15.0
+ONNXRUNTIME=1.15.0
 
 mkdir -p "$PLATFORM$EXTENSION"
 cd "$PLATFORM$EXTENSION"
@@ -33,7 +33,7 @@ if [[ ! -d onnxruntime ]]; then
 fi
 cd onnxruntime
 git reset --hard
-git checkout $ONNXRUNTIME
+git checkout v$ONNXRUNTIME
 git submodule update --init --recursive
 git submodule foreach --recursive 'git reset --hard'
 
diff --git a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApi.java b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApi.java
index 8506465ccc8..db97a3de1d0 100644
--- a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApi.java
+++ b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApi.java
@@ -4289,4 +4289,20 @@ public native OrtStatus GetOptionalContainedTypeInfo( @Const OrtOptionalTypeInfo
    */
   public native OrtStatus KernelContext_GetAllocator( @Const OrtKernelContext context, @Const OrtMemoryInfo mem_info, @Cast("OrtAllocator**") PointerPointer out);
   public native OrtStatus KernelContext_GetAllocator( @Const OrtKernelContext context, @Const OrtMemoryInfo mem_info, @ByPtrPtr OrtAllocator out);
+
+  /** \brief Returns a null terminated string of the build info including git info and cxx flags
+   *
+   * @return UTF-8 encoded version string. Do not deallocate the returned buffer.
+   *
+   * @since Version 1.15.
+   */
+  public static class BytePointer_GetBuildInfoString extends FunctionPointer {
+      static { Loader.load(); }
+      /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
+      public    BytePointer_GetBuildInfoString(Pointer p) { super(p); }
+      protected BytePointer_GetBuildInfoString() { allocate(); }
+      private native void allocate();
+      public native @Cast("const char*") BytePointer call();
+  }
+  public native BytePointer_GetBuildInfoString GetBuildInfoString(); public native OrtApi GetBuildInfoString(BytePointer_GetBuildInfoString setter);
 }
diff --git a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApiBase.java b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApiBase.java
index 398cee13dc0..326f4c81369 100644
--- a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApiBase.java
+++ b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/OrtApiBase.java
@@ -42,6 +42,9 @@ public class OrtApiBase extends Pointer {
    * @param version [in] Must be ::ORT_API_VERSION
    * @return The ::OrtApi for the version requested, nullptr will be returned if this version is unsupported, for example when using a runtime
    *   older than the version created with this header file.
+   *
+   * One can call GetVersionString() to get the version of the Onnxruntime library for logging
+   * and error reporting purposes.
    */
   public static class GetApi_int extends FunctionPointer {
       static { Loader.load(); }
@@ -52,24 +55,18 @@ public static class GetApi_int extends FunctionPointer {
       public native @Const OrtApi call(@Cast("uint32_t") int version);
   }
   public native GetApi_int GetApi(); public native OrtApiBase GetApi(GetApi_int setter);
-  public static class Pointer_GetVersionString extends FunctionPointer {
-      static { Loader.load(); }
-      /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
-      public    Pointer_GetVersionString(Pointer p) { super(p); }
-      protected Pointer_GetVersionString() { allocate(); }
-      private native void allocate();
-      public native @Cast("const ORTCHAR_T*") Pointer call();
-  }
-  /** Returns a null terminated string of the version of the Onnxruntime library (eg: "1.8.1") */
-  public native Pointer_GetVersionString GetVersionString(); public native OrtApiBase GetVersionString(Pointer_GetVersionString setter);
-  public static class Pointer_GetBuildInfoString extends FunctionPointer {
+
+  /** \brief Returns a null terminated string of the version of the Onnxruntime library (eg: "1.8.1")
+   *
+   *  @return UTF-8 encoded version string. Do not deallocate the returned buffer.
+   */
+  public static class BytePointer_GetVersionString extends FunctionPointer {
       static { Loader.load(); }
       /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
-      public    Pointer_GetBuildInfoString(Pointer p) { super(p); }
-      protected Pointer_GetBuildInfoString() { allocate(); }
+      public    BytePointer_GetVersionString(Pointer p) { super(p); }
+      protected BytePointer_GetVersionString() { allocate(); }
       private native void allocate();
-      public native @Cast("const ORTCHAR_T*") Pointer call();
+      public native @Cast("const char*") BytePointer call();
   }
-  /** Returns a null terminated string of the build info including git info and cxx flags */
-  public native Pointer_GetBuildInfoString GetBuildInfoString(); public native OrtApiBase GetBuildInfoString(Pointer_GetBuildInfoString setter);
+  public native BytePointer_GetVersionString GetVersionString(); public native OrtApiBase GetVersionString(BytePointer_GetVersionString setter);
 }
diff --git a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/global/onnxruntime.java b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/global/onnxruntime.java
index f6e4c74c6e3..26913d76bb5 100644
--- a/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/global/onnxruntime.java
+++ b/onnxruntime/src/gen/java/org/bytedeco/onnxruntime/global/onnxruntime.java
@@ -124,6 +124,8 @@ public class onnxruntime extends org.bytedeco.onnxruntime.presets.onnxruntime {
 // #define ORTCHAR_T char
 // #endif
 
+/** ORTCHAR_T, ORT_TSTR are reserved specifically for path handling.
+ *  All other strings are UTF-8 encoded, use char and std::string */
 // #ifndef ORT_TSTR
 // #ifdef _WIN32
 // #define ORT_TSTR(X) L##X
@@ -647,14 +649,14 @@ public enum OrtSparseIndicesFormat {
  *  This function returns the onnxruntime version string
  *  
  *  version string major.minor.rev */
-@Namespace("Ort") public static native @ByVal @Cast("std::basic_string*") Pointer GetVersionString();
+@Namespace("Ort") public static native @StdString BytePointer GetVersionString();
 
 /** 
  *  This function returns the onnxruntime build information: including git branch,
  *  git commit id, build type(Debug/Release/RelWithDebInfo) and cmake cpp flags.
  *  
  *  string */
-@Namespace("Ort") public static native @ByVal @Cast("std::basic_string*") Pointer GetBuildInfoString();
+@Namespace("Ort") public static native @StdString BytePointer GetBuildInfoString();
 
 /** 
  *  This is a C++ wrapper for OrtApi::GetAvailableProviders() and
diff --git a/platform/pom.xml b/platform/pom.xml
index 44907ba6a54..d627eb7ee75 100644
--- a/platform/pom.xml
+++ b/platform/pom.xml
@@ -156,7 +156,7 @@
     
       org.bytedeco
       hdf5-platform
-      1.14.0-${project.version}
+      1.14.1-${project.version}
     
     
       org.bytedeco
@@ -231,7 +231,7 @@
     
       org.bytedeco
       llvm-platform
-      16.0.3-${project.version}
+      16.0.4-${project.version}
     
     
       org.bytedeco
@@ -276,7 +276,7 @@
     
       org.bytedeco
       nvcodec-platform
-      12.0.16-${project.version}
+      12.1.14-${project.version}
     
     
       org.bytedeco
diff --git a/tvm/platform/gpu/pom.xml b/tvm/platform/gpu/pom.xml
index 375b0888231..247fce50dfe 100644
--- a/tvm/platform/gpu/pom.xml
+++ b/tvm/platform/gpu/pom.xml
@@ -29,7 +29,7 @@
     
       org.bytedeco
       llvm-platform
-      16.0.3-${project.parent.version}
+      16.0.4-${project.parent.version}
     
     
       org.bytedeco
diff --git a/tvm/platform/pom.xml b/tvm/platform/pom.xml
index 3bcb2920915..fc6329925c7 100644
--- a/tvm/platform/pom.xml
+++ b/tvm/platform/pom.xml
@@ -28,7 +28,7 @@
     
       org.bytedeco
       llvm-platform
-      16.0.3-${project.parent.version}
+      16.0.4-${project.parent.version}
     
     
       org.bytedeco
diff --git a/tvm/pom.xml b/tvm/pom.xml
index b824ccab5e5..79365da36ef 100644
--- a/tvm/pom.xml
+++ b/tvm/pom.xml
@@ -23,7 +23,7 @@
     
       org.bytedeco
       llvm
-      16.0.3-${project.parent.version}
+      16.0.4-${project.parent.version}
     
     
       org.bytedeco
@@ -61,7 +61,7 @@
           
             org.bytedeco
             llvm-platform
-            16.0.3-${project.parent.version}
+            16.0.4-${project.parent.version}
           
           
             org.bytedeco