Releases: mrjoshuak/go-openexr
Releases · mrjoshuak/go-openexr
v1.2.1
v1.2.0
Added
- HTJ2K compression/decompression of FLOAT (32-bit) channels
- Progressive HTJ2K decode API and float image output
- Channel-aware PIZ compress/decompress matching C++ OpenEXR layout
- Strided 2D Haar wavelet for PIZ float/uint channel support
- Float32 PIZ roundtrip and C++ interop tests
Fixed
- Huffman canonical code assignment to match OpenEXR C++ algorithm
- All go vet findings (unsafe.Pointer arithmetic, WriteByte signature, ARM64 frame size)
- All staticcheck findings (sync.Pool pointer wrapping, unused types, constant types)
Changed
- Updated go-jpeg2000 dependency to v1.2.1
v1.0.7
Bug Fix
- Fix scanline decoder crash on non-zero origin data windows — The scanline decoder (both sequential and parallel paths) and encoder were passing absolute data window coordinates to framebuffer WriteRow/ReadRow functions, causing out-of-bounds memory access when the data window origin was non-zero (e.g., dataWindow starting at (654, 245)). Now correctly maps to buffer-relative coordinates. Verified against OpenEXR multipart stereo test images (10-part beachball sequence). (Fixes #2)
v1.0.6
Bug Fix
- Fix ReadChunk EOF on multipart EXR files — All chunk-reading methods (
ReadChunk,ReadTileChunk,ReadDeepChunk,ReadDeepTileChunk, and the optimizedreadChunkReuse) now correctly handle the 4-byte part number prefix in multipart EXR chunk headers. Previously, reading chunks from multipart files would misparse the header and fail with EOF. (Fixes #1)
Tests
- Added
TestMultiPartReadChunkRoundtripregression test that writes and reads back a multipart file, verifying data integrity per part.
v1.0.5
v1.0.2
Changed
- Improved test coverage to 90%+ across all packages
- Added comprehensive tests for HTJ2K compression
- Added tests for error paths and edge cases
Coverage Summary
| Package | Coverage |
|---|---|
| half | 96.7% |
| compression | 90.6% |
| exr | 90.0% |
| exrmeta | 97.3% |
| exrutil | 91.0% |
| exrid | 91.2% |
v1.0.1
v1.0.0
go-openexr v1.0.0
A pure Go implementation of the OpenEXR high dynamic range image file format.
Features
- Full Format Support: Scanline, tiled, mipmap/ripmap, deep data, and multipart files
- All Compression Codecs: None, RLE, ZIP, ZIPS, PIZ, PXR24, B44, B44A, DWAA, DWAB
- High Performance: SIMD-optimized (ARM64 NEON, AMD64 SSE2) for critical paths
- Complete Metadata: All standard attributes plus Cryptomatte ID generation
- Zero CGO: Pure Go with no external dependencies for core functionality
Installation
go get github.com/mrjoshuak/go-openexrDocumentation
See the README for usage examples and API documentation.