Skip to content

Releases: NVIDIA/nvImageCodec

nvImageCodec Release v0.4.0-beta.3

15 Nov 08:43
Compare
Choose a tag to compare
Pre-release

This software is in beta version, which means it is still undergoing testing and development before its official release. It may contain bugs, errors, or incomplete features that could affect its performance and functionality. By using this software, you agree to accept the risks and limitations associated with beta software. We appreciate your feedback and suggestions to help us improve this software, but we do not guarantee that we will implement them or that the software will meet your expectations. Please use this software at your own discretion and responsibility.

Key Features and Enhancements

  • Enabled decoding grayscale tiff images to planar RGB and BGR with LibTIFF.
  • Added nvTIFF decoder extension.
  • Changed the nvimgcodecExecutorDesc_t API to have separate schedule, run and wait functions.
  • Simplified the API for extensions (decoder and encoder) so that the parallelization and synchronization happens in a layer above
  • Added an optional API getMiniBatchSize for batched decoders, to be used by the top level layer to decide the best batch size for each batched decoder implementation.
  • Added an experimental load_hint_policy flag to nvimgcodecBackendParams_t, allowing to control the dynamic load distribution for different backends.
  • Reduced the number of threads and synchronization points used by the generic decoder and encoder classes.
  • Decoders to reuse temporary memory buffers from iteration to iteration.
  • Renamed nvimgcodecJpeg2kImageInfo_t to nvimgcodecTileGeometryInfo_t.
  • Added experimental Python 3.13 support.
  • Added experimental Python 3.13t (no GIL) support.
  • Upgraded LibTIFF to v4.7.0.
  • Added a skip_pre_sync option to nvimgcodecExecutionParams_t to skip the synchronization between user stream and per-thread streams before the decoding starts.
  • Added OpenCV encoder for all formats that were already supported by OpenCV decoder:
    • 8 bit unsigned encoding is supported in following codecs: JPEG, JPEG 2000, PNG, BMP, PNM, TIFF, WebP.
    • 16 bit unsigned encoding is supported in following codecs: JPEG 2000, PNG, PNM, TIFF.
  • In Python, CPU-only decoder instances now write the output to host memory instead of GPU memory.

Fixed Issues

  • Fixed LaunchConvertNormKernel conversion from interleaved RGB to grayscale.
  • Bitdepth is now correctly set to 16 bits in case of TIFF Palette, before it was set to key bitdepth.
  • Fixed error during decoding images with larger sample type with LibTIFF.
  • Fixed a memory leak in Encoder's Python API (#13)
  • Fixed potential segfault error when extension creation failed.
  • Fixed default extension discovery path on Windows.
  • Fixed Python array import to raise error when there are unacceptable number of dimensions or channels (#15).
  • Fixed loading symlinked extensions.
  • PNM parser now correctly recognizes 16 bit unsigned data.

nvImageCodec Release v0.3.0-beta.2

09 Aug 08:22
Compare
Choose a tag to compare
Pre-release

This software is in beta version, which means it is still undergoing testing and development before its official release. It may contain bugs, errors, or incomplete features that could affect its performance and functionality. By using this software, you agree to accept the risks and limitations associated with beta software. We appreciate your feedback and suggestions to help us improve this software, but we do not guarantee that we will implement them or that the software will meet your expectations. Please use this software at your own discretion and responsibility.

Key Features and Enhancements

  • Added support for ROI in Python API #4
  • Enable runtime dynamic loading of nvJpeg2000 library
  • Added support for nvJpeg2000 v0.8.0
  • Added GDPR required links to documentation
  • Limit Global Interpreter Lock (GIL) scope on pybind11 exposed functions
  • Support Windows platform
  • Support Linux for Tegra platform
  • Support platforms without stream ordered allocations
  • Added NVIMGCODEC_MAX_JPEG_SCANS environment variable to control the maximum allowed number of progressive JPEG scans
  • Added NVIMGCODEC_MAX_IMAGE_SIZE environment variable to control the maximum allowed image size
  • Switch to new NVIDIA documentation theme
  • Parsers to always provide precision (bitdepth) information

Fixed Issues

  • Fix validation of the whl fails #2
  • Fix incorrect decoding of 16-bit TIFF images #5
  • Fix encoding single channel images #6
  • Fix pip installation for Python higher than 3.12 #9
  • Fix build from source for nvjpeg2k v0.8 #7
  • Fix single-channel encoding issue #6
  • Fix for passing cuda stream to __dlpack__ function as a keyword only argument
  • Fix missing synchronization with user cuda stream before decoding
  • Fix shape returns wrong value for host Images
  • Patch libtiff for CVE-2023-52356
  • Patch libtiff for CVE-2023-6277
  • Patch libtiff for CVE-2023-6228

nvImageCodec Release v0.2.0

03 Feb 17:57
Compare
Choose a tag to compare
Pre-release

nvImageCodec v0.2.0 Release Notes

nvImageCodec Beta release (v0.2.0), an open-source library of accelerated codecs featuring a unified interface.
This release serves as a versatile framework for extension modules delivering powerful codec plugins.

Key Features and Enhancements

This nvImageCodec release includes the following key features and enhancements:

  • Changed the name of the library from nvImageCodecs to nvImageCodec
  • Added CUDA 12.3 support
  • Added support for arm64-sbsa
  • Improved decode performance (e.g. nvJpeg2000 tiled)
  • Improved testing
  • Improved documentation
    • Added simple sample C API usage
    • Added Python sample Jupyter notebooks to documentation
  • C API improvements
    • Adjusted cvcuda types adapter
    • Improved error handling and reporting
    • Custom Executor can now be defined per Decoder/Encoder
    • Added possibility to pre-allocate resources
    • Added support for nvjpeg extra_flags option
  • Python API improvements
    • Added support for Python 3.12 and deprecated Python 3.7
    • Added support for DL-pack
    • Added support of array_interface
    • Added cpu() and cuda() convert methods to Python Image to enable transfers between Host and Device memory
    • Added as_images function
    • Added allow_any_depth to decode parameters
    • Added possibility to specify number of CPU threads to use in decoder/encoder
    • Added precision attribute to Image
    • Added enter and exit to Decoder and Encoder so they can be easily used with python “with” statement
    • Python decode function now can convert to interleaved RGB and 8 bits by default

Install nvImageCodec library

NOTE: nvImageCodec builds for CUDA 12 dynamically link the CUDA toolkit. To use nvImageCodec, install the latest CUDA toolkit.

CUDA 11.0 and CUDA 12.0 builds use CUDA toolkit enhanced compatibility. 
They are built with the latest CUDA 11.x/12.x toolkit respectively but they can run on the latest, 
stable CUDA 11.0/CUDA 12.0 capable drivers (450.80 or later and 525.60 or later respectively).
However, using the most recent driver may enable additional functionality. 
More details can be found in enhanced CUDA compatibility guide.

You can download and install the appropriate built binary packages from https://developer.nvidia.com/nvimgcodec-downloads
or
install nvImageCodec Python from PyPI as described below.

nvImageCodec Python for CUDA 12.x

pip install nvidia-nvimgcodec-cu12

nvImageCodec Python for CUDA 11.x

pip install nvidia-nvimgcodec-cu11

Optional installation of nvJPEG library
If you do not have CUDA Toolkit installed, or you would like to install nvJPEG library independently, you can use the instruction described below.

Install the nvidia-pyindex module

pip install nvidia-pyindex

Install nvJPEG for CUDA 12.x

pip install nvidia-nvjpeg-cu12

Install nvJPEG for CUDA 11.x

pip install nvidia-nvjpeg-cu11

License

nvImageCodec operates under the Apache 2.0 license.

Resources

nvImageCodec GitHub
nvImageCodec Documentation