v0.7.0-beta.8#

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#

  • CPU backend can now decode int32 and uint32 TIFF images.

  • Added bitstream size to codestream info.

  • Added ICC profile extraction from TIFF images.

  • Added support for tiling in nvJPEG2000 encoding.

  • Python encoding now returns CodeStream object with buffer protocol.

  • Added possibility to create CodeStream for encoding and pre-allocate memory for it (also pinned).

  • Added support for encoding to CodeStream object (reuse allocated memory). Breaking change: The order of parameters in Python encode method has changed.

  • Added support for decoding to Image object (reuse allocated memory). Breaking change: The order of parameters in Python decode method has changed.

  • Added support for decoding to externally managed buffer (from CuPy, NumPy).

  • Added out of bounds region decoding for nvJPEG2000, nvTIFF, and nvJPEG plugins. Different fill values for each plane are supported, but channels in the same plane must have the same fill value.

  • Added support for metadata extraction from following tiff files (nvTIFF only):
    • Medical - Ventana

    • Medical - Leica

    • Medical - Trestle

  • Added support for generic TIFF tag reading.

  • Changed default python logging verbosity to WARNING.

  • Performance: Avoid reparsing the encoded stream after extracting a sub code stream out of it.

  • Added SampleFormat enum to Python API.

  • Added sample_format property to Image class.

  • Added sample_format property to CodeStream class.

  • Breaking change: Extended nvimgcodecSampleFormat_t enum with more commonly used formats and enum values have been changed.

  • Changed parsed sample format for png and webp codecs, from planar to interleaved.

  • Breaking change: nvimgcodecCodeStreamGetImageInfo now returns internal bitstream nvimgcodecSampleFormat_t and not default to be decoded. For example for JPEG codec it can be now usually NVIMGCODEC_SAMPLEFORMAT_P_YCC instead of NVIMGCODEC_SAMPLEFORMAT_P_RGB as previously.

  • Breaking change: nvimgcodecImageCreate, nvimgcodecCodeStreamCreateFromFile, nvimgcodecCodeStreamCreateFromHostMem, nvimgcodecCodeStreamCreateToFile, nvimgcodecCodeStreamCreateToHostMem, nvimgcodecCodeStreamGetSubCodeStream now interpret non-null output pointers as pointers to existing objects, in which case the objects are reused instead of created from scratch. Note that is is now not allowed to pass uninitialized output pointers to these functions.

  • Added python nvImageCodec-torch interoperability example.

  • User can now exclusively specify either CUDA or hardware backend for JPEG encoder extension. Both backends can also be used at the same time.

  • Added color_spec property to Python Image class, providing access to color specification information.

  • Added color_spec property to Python CodeStream class, providing access to color specification information.

  • Changed Python ColorSpec.RGB to ColorSpec.SRGB.

  • Changed Python ColorSpec.YCC to ColorSpec.SYCC.

  • Added mct_mode parameter to nvimgcodecJpeg2kEncodeParams_t and Jpeg2kEncodeParams class in Python API to allow to control multiple component transformation mode in nvJPEG2000 encoding.

  • Breaking change: Changed channels property to num_channels in Python CodeStream class as it represents overall number of channels in the image across all planes.

  • Added support for decoding JPEG images directly to SYCC color space in interleaved format, skipping conversion to RGB. This enables decoding to YCC in Python. Only images encoded into SYCC and without subsampling can be decoded in such a way.

  • Breaking change: Renamed Python API methods to follow snake_case naming convention: getSubCodeStreamget_sub_code_stream, getMetadataget_metadata.

  • Added optional sample_format and color_spec keyword-only parameters to Python as_image and as_images functions, allowing users to override automatic format inference.

  • Breaking change: Changed default parsed chroma_subsampling for png, webp, pnm and tiff codecs to be CSS_GRAY for grayscale images with single channel.

  • Optimized memory allocation when decoding and encoding strided images.

  • Breaking change: buffer_size member was removed from nvimgcodecImageInfo_t.

  • Updated CUDA Toolkit to v12.9.1

  • Updated CUDA Toolkit to v13.0.2

  • Updated libTiff to v4.7.1

  • Upgraded OpenCV to v4.12.0

  • Updated nvJPEG2000 to v0.9.1

  • Upgraded nvTIFF to v0.6.0

  • Added support for Python 3.14

  • Added example notebook about decoding/encoding DICOM files

Fixed Issues#

  • Fixed wrong decoding of FP32 TIFF images when using CPU backend.

  • Fixed segfault when passing wrong codec name for encode.

  • Fixed batch decoding of lossless JPEGs.

  • Fixed encoding to PNG based on file extension.

  • Fixed sample format conversion from __array_interface__``and ``__cuda_array_interface__ to Image object for single channel images.

  • Fixed nvJpeg2000 encoding of image which was decoded with color_spec set to ColorSpec.UNCHANGED.

  • Fixed encode array with alpha channel (NVIDIA/nvImageCodec#36).

  • Added metadata-related and other missing types to documentation.

  • get_sub_code_stream will now keep alive parent CodeStream so that any data (like bytes) referenced by parent will be kept alive.

  • Fixed default nvJPEG library search path on Windows for CUDA 13, ensuring correct dynamic loading in the Python package.

  • Fixed default chroma_subsampling in EncodeParams to be CSS_GRAY for grayscale images with single channel.

  • Fixed decoding to strided (when image rows have padding) buffer.

Deprecated and removed features#

  • Removed BackendParams class from Python API. Breaking change: Backend constructor now accepts BackendKind together with optionally load_hint and load_hint_policy parameters.

  • Removed backend_kinds parameter from Decoder and Encoder constructors. Breaking change: Backend constructor now accepts BackendKind which can be automatically converted to Backend.

  • Breaking change: Backend properties backend_kind, load_hint and load_hint_policy are now read-only and can be only set in constructor.

  • Decoding grayscale image to planar YCC is no longer supported, as values for Cb and Cr were wrong (0 instead of 128). Use P_Y sample format instead.

  • Python 3.8 is no longer supported.

  • CUDA 11 is no longer supported.