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
CodeStreamobject with buffer protocol.Added possibility to create
CodeStreamfor encoding and pre-allocate memory for it (also pinned).Added support for encoding to
CodeStreamobject (reuse allocated memory). Breaking change: The order of parameters in Pythonencodemethod has changed.Added support for decoding to
Imageobject (reuse allocated memory). Breaking change: The order of parameters in Pythondecodemethod 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
SampleFormatenum to Python API.Added
sample_formatproperty toImageclass.Added
sample_formatproperty toCodeStreamclass.Breaking change: Extended
nvimgcodecSampleFormat_tenum with more commonly used formats and enum values have been changed.Changed parsed sample format for
pngandwebpcodecs, from planar to interleaved.Breaking change:
nvimgcodecCodeStreamGetImageInfonow returns internal bitstreamnvimgcodecSampleFormat_tand not default to be decoded. For example for JPEG codec it can be now usuallyNVIMGCODEC_SAMPLEFORMAT_P_YCCinstead ofNVIMGCODEC_SAMPLEFORMAT_P_RGBas previously.Breaking change:
nvimgcodecImageCreate,nvimgcodecCodeStreamCreateFromFile,nvimgcodecCodeStreamCreateFromHostMem,nvimgcodecCodeStreamCreateToFile,nvimgcodecCodeStreamCreateToHostMem,nvimgcodecCodeStreamGetSubCodeStreamnow 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_specproperty to PythonImageclass, providing access to color specification information.Added
color_specproperty to PythonCodeStreamclass, providing access to color specification information.Changed Python
ColorSpec.RGBtoColorSpec.SRGB.Changed Python
ColorSpec.YCCtoColorSpec.SYCC.Added
mct_modeparameter tonvimgcodecJpeg2kEncodeParams_tandJpeg2kEncodeParamsclass in Python API to allow to control multiple component transformation mode in nvJPEG2000 encoding.Breaking change: Changed
channelsproperty tonum_channelsin PythonCodeStreamclass 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:
getSubCodeStream→get_sub_code_stream,getMetadata→get_metadata.Added optional
sample_formatandcolor_speckeyword-only parameters to Pythonas_imageandas_imagesfunctions, allowing users to override automatic format inference.Breaking change: Changed default parsed
chroma_subsamplingforpng,webp,pnmandtiffcodecs to beCSS_GRAYfor grayscale images with single channel.Optimized memory allocation when decoding and encoding strided images.
Breaking change:
buffer_sizemember was removed fromnvimgcodecImageInfo_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__toImageobject for single channel images.Fixed nvJpeg2000 encoding of image which was decoded with
color_specset toColorSpec.UNCHANGED.Fixed encode array with alpha channel (NVIDIA/nvImageCodec#36).
Added metadata-related and other missing types to documentation.
get_sub_code_streamwill now keep alive parentCodeStreamso that any data (likebytes) 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_subsamplinginEncodeParamsto beCSS_GRAYfor grayscale images with single channel.Fixed decoding to strided (when image rows have padding) buffer.
Deprecated and removed features#
Removed
BackendParamsclass from Python API. Breaking change:Backendconstructor now acceptsBackendKindtogether with optionally load_hint and load_hint_policy parameters.Removed
backend_kindsparameter from Decoder and Encoder constructors. Breaking change:Backendconstructor now acceptsBackendKindwhich can be automatically converted toBackend.Breaking change:
Backendpropertiesbackend_kind,load_hintandload_hint_policyare 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_Ysample format instead.Python 3.8 is no longer supported.
CUDA 11 is no longer supported.