opencodecs 0.1.8__tar.gz → 0.1.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {opencodecs-0.1.8 → opencodecs-0.1.9}/CHANGES.rst +40 -0
- {opencodecs-0.1.8/src/opencodecs.egg-info → opencodecs-0.1.9}/PKG-INFO +1 -1
- {opencodecs-0.1.8 → opencodecs-0.1.9}/pyproject.toml +1 -1
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/__init__.py +1 -1
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_bcdec.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_bmp.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_eer.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_hcomp.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_plio.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_png.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_qoi.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_rcomp.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_rgbe.c +152 -152
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/uhdr.py +52 -4
- {opencodecs-0.1.8 → opencodecs-0.1.9/src/opencodecs.egg-info}/PKG-INFO +1 -1
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_uhdr.py +51 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/bcdec/bcdec.h +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/bitshuffle/bitshuffle_core.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/bitshuffle/iochain.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/cfitsio/fits_hdecompress.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/cfitsio/pliocomp.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/cfitsio/ricecomp.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/imcd_eer/eer.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/imcd_eer/eer.h +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/imcd_lzw/lzw.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/imcd_lzw/lzw.h +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/libspng/spng.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/oc_tifflzw/oc_tifflzw.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/oc_tifflzw/oc_tifflzw.h +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/3rdparty/rgbe/rgbe.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/MANIFEST.in +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/README.md +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/bench/build_libjxl.sh +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/patches/libjxl/README.md +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/setup.cfg +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/setup.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_aec_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_avif_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_b2nd_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_bcn_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_bitshuffle_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_blosc2_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_bmp_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_brotli_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_brunsli_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_byteshuffle_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_bz2_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_cms_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_czi_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_czi_reader.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_czi_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_deflate_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_dicomrle_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_dicomweb.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_eer_reader.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ets.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_fits.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_fits_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_fits_compressed.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_gif_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_gzip_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_hdf5_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_hdf5_http.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_heif_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_htj2k_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_jpeg2k_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_jpeg_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_jpegls_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_jxl_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_lerc_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_lif_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_lif_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_lz4_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_lzma_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_mozjpeg_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_nd2_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_nd2_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ndtiff.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ndtiff_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ndtiff_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_none_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_numpy_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_oib_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_oib_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_oir_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ole2.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ome_xml.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_omezarr.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_omezarr_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_packints_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_pcodec_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_png_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_predictor_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_pyramid_build.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_qoi_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_quantize_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_rcomp_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_rgbe.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_rgbe_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_snappy_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_sperr_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_sz3_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_tiff_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_tiff_http.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_tiff_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_tiff_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_ultrahdr_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_vsi_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_webp_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_zarr_codecs.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_zfp_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/_zstd_codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/__init__.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_bitshuffle.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_bytetools.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_deflate.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_lz4.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_ndtiff.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_registry.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_tiff.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/codecs/_zstd.c +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/__init__.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/_io_helpers.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/_optional_backend.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/codec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/color.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/errors.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/io.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/core/segment_compression.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/jxl.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/parallel.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/tiff_reader.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/tifffile_patch.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs/zarr.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs.egg-info/SOURCES.txt +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs.egg-info/dependency_links.txt +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs.egg-info/requires.txt +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/src/opencodecs.egg-info/top_level.txt +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_auto_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_bcdec.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_brunsli.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_charls.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_core_codec_api.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus_codec_decode.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus_other.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus_png.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus_tiff.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_corpus_vendors.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_coverage_final.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_coverage_finishing.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_coverage_last.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_coverage_more.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_coverage_push.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_czi_fixture.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_czi_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_czi_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_data_source.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_deflate.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_dicomweb.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_edge_cases.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_eer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_encode_comprehensive.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_error_handling.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_fits.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_gif.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_hdf5_http.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_hdf5_local.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_heif_avif_features.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_http_byte_savings.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_http_prefetch.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_http_unified.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_io_chunked.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_isal.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_jxl.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_lif_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_live_archives.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_mozjpeg.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_native_parity.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_nd2_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_ndtiff.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_oib_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_ome_xml.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_omezarr.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_omezarr_sharded_range.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_open_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_openjph.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_optional_backend.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_parallel_jxl.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_phase4_filters.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_phase5_icc.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_phase6_codecs.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_phase7_cms.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_rgbe.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_snappy.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tier1_scientific.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_codec_encode.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_http.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_native.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_pyramid.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_reader.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tiff_writer.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_tifffile_patch.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_unified_api.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_vsi_oir.py +0 -0
- {opencodecs-0.1.8 → opencodecs-0.1.9}/tests/test_zarr_adapters.py +0 -0
|
@@ -10,6 +10,46 @@ Versions follow the same ``YYYY.M.D`` cadence as upstream when we
|
|
|
10
10
|
publish; the entries below cluster work by date rather than by
|
|
11
11
|
release because most of it has shipped continuously to ``main``.
|
|
12
12
|
|
|
13
|
+
0.1.9 (2026-06-02)
|
|
14
|
+
------------------
|
|
15
|
+
|
|
16
|
+
**Lossless SDR base layer on encode (opt-in)**
|
|
17
|
+
|
|
18
|
+
``opencodecs.codecs._jpeg.encode`` gained a ``lossless=False`` kwarg
|
|
19
|
+
that switches libjpeg-turbo into predictive lossless mode
|
|
20
|
+
(``TJPARAM_LOSSLESS=1``, PSV=1, forced 4:4:4 chroma). Output is
|
|
21
|
+
bit-exact through the libjpeg-turbo decoder, at the cost of ~3-5×
|
|
22
|
+
larger files vs ``level=95`` baseline DCT on natural-image content.
|
|
23
|
+
|
|
24
|
+
``opencodecs.uhdr.encode_native(lossless=True)`` routes the SDR base
|
|
25
|
+
layer through that lossless path while keeping the gain map lossy
|
|
26
|
+
(there's no perceptual benefit to making a band-limited gain map
|
|
27
|
+
lossless, and it would balloon the file).
|
|
28
|
+
|
|
29
|
+
Empirical caveats — verified on macOS 15 with an HDR-capable
|
|
30
|
+
display:
|
|
31
|
+
|
|
32
|
+
* macOS Preview, Chrome 116+, and any viewer that parses the MPF /
|
|
33
|
+
XMP gain-map block directly **HDR-render the output normally**.
|
|
34
|
+
* libuhdr's reference ``uhdr_decode`` (and therefore
|
|
35
|
+
``opencodecs.uhdr.decode``) **rejects** the file. It enforces a
|
|
36
|
+
strict ``JCS_YCbCr`` / ``JCS_GRAYSCALE`` colorspace check that
|
|
37
|
+
lossless-mode JPEG (which writes ``JCS_RGB``) fails.
|
|
38
|
+
* Apple's ``CGImageSource`` ``Headroom`` property and
|
|
39
|
+
``kCGImageAuxiliaryDataTypeISOGainMap`` aux-data accessors miss
|
|
40
|
+
the HDR signal (same root cause), even though Preview's actual
|
|
41
|
+
render path composites the gain map correctly.
|
|
42
|
+
* ``opencodecs.uhdr.decode_native`` reads it cleanly — it uses our
|
|
43
|
+
own gain-application kernel without libuhdr's colorspace gate.
|
|
44
|
+
|
|
45
|
+
Use only when exact SDR-base-pixel preservation is a hard
|
|
46
|
+
requirement (archival, scientific imaging) and every consumer in
|
|
47
|
+
your pipeline is either Preview / Chrome / ``decode_native``. The
|
|
48
|
+
``v0.1.8`` note that called lossless "not a conforming Ultra-HDR
|
|
49
|
+
file" was too strong — it's non-conforming to libuhdr's reference
|
|
50
|
+
decoder and Apple's narrow ImageIO API, but visual HDR consumers
|
|
51
|
+
accept it just fine.
|
|
52
|
+
|
|
13
53
|
0.1.8 (2026-06-02)
|
|
14
54
|
------------------
|
|
15
55
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "opencodecs"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.9"
|
|
8
8
|
description = "Streaming, network-aware image codecs for scientific imaging (prototype: JPEG XL)"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|