Releases: keiji/jp2k-decoder-android
Releases · keiji/jp2k-decoder-android
v0.3.0
This release introduces new features, performance improvements, and a significant increase in test coverage.
✨ New Features
- Partial Decode Functionality:
- Added overloads to the
decodeImagemethod that acceptRectandRectFarguments, enabling the efficient decoding of partial image regions. - Ratio-based region decoding is also supported for more flexible image manipulation.
- Added overloads to the
- Caching API:
- Introduced a caching API (the
precachemethod) inJp2kDecoderandJp2kDecoderAsync. This improves the performance of subsequentgetSizeanddecodeImagecalls.
- Introduced a caching API (the
- Image Size Retrieval:
- Implemented the
getSizemethod to retrieve image dimensions (width,height) without decoding the entire image data.
- Implemented the
🚀 Improvements
- Increased Test Coverage:
- Significantly improved test coverage for
Jp2kDecoder,Jp2kDecoderAsync, and the native C library to enhance robustness. - Added boundary value tests, particularly for the partial decoding feature.
- Significantly improved test coverage for
- C Wrapper Enhancements:
- Improved the coverage, robustness, and error handling of the underlying C wrapper.
What's Changed
- Add Usage Guide to README.md by @google-labs-jules[bot] in #81
- Bump nmcp from 1.4.2 to 1.4.3 in /android by @dependabot[bot] in #83
- Bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #82
- Bump androidx.compose:compose-bom from 2025.12.01 to 2026.01.00 in /android in the androidx group by @dependabot[bot] in #84
- Fix constant access in Jp2kDecoderAsync.kt by @google-labs-jules[bot] in #85
- Implement getSize to retrieve image dimensions without decoding by @keiji in #89
- Bump nmcp from 1.4.3 to 1.4.4 in /android by @dependabot[bot] in #92
- Bump the androidx group in /android with 2 updates by @dependabot[bot] in #90
- Bump gradle-wrapper from 9.1.0 to 9.3.0 in /android by @dependabot[bot] in #91
- Add coverage measurement and reporting for C and Android by @keiji in #93
- Improve test coverage and error handling by @keiji in #94
- Add cached data support to Jp2kDecoder and Jp2kDecoderAsync by @keiji in #95
- Implement partial decoding for JPEG2000 by @keiji in #96
- Update sample app with ROI decoding and add documentation by @keiji in #97
- Support ratio-based region decoding (0.0-1.0) by @keiji in #98
- Improve test coverage for C wrapper and Android library by @keiji in #99
- Improve test coverage for Jp2kDecoderAsync and C wrapper by @keiji in #100
- Add boundary value tests for partial decoding by @keiji in #101
- Improve Android test coverage > 70% by @keiji in #102
- Update .gitignore by @keiji in #105
- Improve Android Test Coverage > 80% by @keiji in #107
- Increase Android Test Coverage by @keiji in #108
- Fix C coverage reporting by using gcov directly by @keiji in #109
- Improve C wrapper coverage with boundary and error tests by @keiji in #110
- Document and implement Float and RectF partial decoding by @keiji in #111
Full Changelog: v0.2.0...v0.3.0
v0.2.0
New Features
- Added support for 1-channel images.
Breaking Changes
- Moved applicationContext injection from the constructor to the init method.
- Introduced strict state management.
What's Changed
- Add publishing instructions to README.md by @google-labs-jules[bot] in #50
- Update README.md with installation instructions by @google-labs-jules[bot] in #52
- Add commented out jp2k-decoder-android dependency to app build.gradle… by @keiji in #51
- Add License section to README.md by @keiji in #53
- Update README with Maven Central installation instructions by @google-labs-jules[bot] in #54
- Refactor Jp2kDecoder for Thread Safety and Lazy Init by @google-labs-jules[bot] in #55
- Add Mutex to Jp2kDecoder to handle concurrent calls by @google-labs-jules[bot] in #56
- Update Instrumentation Tests for Jp2kDecoder API and add state validation by @google-labs-jules[bot] in #57
- Add API to retrieve WASM/JS memory usage by @google-labs-jules[bot] in #58
- Reduce initial WASM memory footprint to 4MB by @google-labs-jules[bot] in #60
- Implement AutoCloseable in Jp2kDecoderAsync by @google-labs-jules[bot] in #61
- Update design.md with architecture and flow diagrams by @google-labs-jules[bot] in #62
- docs: fix broken mermaid diagram in design.md by @google-labs-jules[bot] in #63
- Update design doc regarding Hex conversion responsibility by @google-labs-jules[bot] in #64
- docs: fix duplicate return json entry in design.md by @google-labs-jules[bot] in #65
- Fix layer count discrepancy in design doc by @google-labs-jules[bot] in #66
- Update README to link to Design Document by @google-labs-jules[bot] in #67
- Cleanup constants and secure WASI logging by @google-labs-jules[bot] in #68
- Expose decoder state and add KDoc by @google-labs-jules[bot] in #71
- Make Jp2kDecoderAsync.init idempotent by @google-labs-jules[bot] in #70
- Refine Jp2kDecoderAsync state behavior and documentation by @google-labs-jules[bot] in #72
- Decouple Jp2kDecoder and make it native Coroutines by @google-labs-jules[bot] in #73
- Use HexString for WASM loading and refactor JS utils by @google-labs-jules[bot] in #74
- Bump version to 0.2.0 by @keiji in #75
- Support Grayscale (1ch) and Multi-channel (>4ch) Inputs by @google-labs-jules[bot] in #76
- Configure NMCP to use USER_MANAGED publishing type by @google-labs-jules[bot] in #77
- Use Base64 for App-WASM data exchange by @google-labs-jules[bot] in #78
- Add execution time logging for JS/WASM decoding by @google-labs-jules[bot] in #79
- Improve error reporting for JavaScript exceptions in Jp2kDecoder by @google-labs-jules[bot] in #80
Full Changelog: v0.1.0...v0.2.0
v0.1.0
Known Issue
- Unable to decode 1-channel images.
What's Changed
- Update README.md with JPEG2000 decoding features by @google-labs-jules[bot] in #1
- Optimize Bitmap creation by generating BMP in JS by @google-labs-jules[bot] in #2
- Move JP2 format detection to wrapper.c by @google-labs-jules[bot] in #4
- Add GitHub Actions CI for Android and WASM by @google-labs-jules[bot] in #3
- Move BMP generation to wrapper.c by @google-labs-jules[bot] in #5
- Change data exchange from Base64 to HexString by @google-labs-jules[bot] in #6
- Sync built WASM to Android assets in CI workflow by @google-labs-jules[bot] in #7
- Update WASM workflow to target lib assets by @google-labs-jules[bot] in #8
- Rename sample to android by @keiji in #9
- Setup Dependabot by @google-labs-jules[bot] in #10
- Bump actions/setup-java from 4 to 5 by @dependabot[bot] in #12
- Bump the androidx group in /android with 8 updates by @dependabot[bot] in #15
- Bump actions/checkout from 4 to 6 by @dependabot[bot] in #13
- Bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #14
- Bump gradle/actions from 3 to 5 by @dependabot[bot] in #11
- Add logging configuration to Jp2kDecoder by @google-labs-jules[bot] in #18
- Update GitHub Actions workflow triggers for feature branches by @google-labs-jules[bot] in #19
- Bump org.jetbrains.kotlin.plugin.compose from 2.0.21 to 2.3.0 in /android by @dependabot[bot] in #16
- Add Jp2kDecoderAsync class by @google-labs-jules[bot] in #21
- Refactor Jp2kDecoder to use shared JavaScriptSandbox and optimize settings by @google-labs-jules[bot] in #23
- Add release method to Jp2kDecoder and update sample app by @google-labs-jules[bot] in #24
- Add Jp2kError enum matching wrapper.c error codes by @google-labs-jules[bot] in #25
- Add Android Instrumentation tests for Jp2kDecoder by @google-labs-jules[bot] in #26
- Validate input length in Jp2kDecoder by @google-labs-jules[bot] in #27
- Update Android instrumentation tests by @keiji in #29
- Make decoder memory and pixel limits configurable by @keiji in #30
- Update wrapper.c input size validation and error renaming by @google-labs-jules[bot] in #33
- Update README with security motivation by @google-labs-jules[bot] in #32
- Refactor Jp2kDecoder config to data class by @google-labs-jules[bot] in #31
- Update README with OpenJPEG build instructions by @google-labs-jules[bot] in #35
- Enable Android Lint with Reviewdog in CI by @google-labs-jules[bot] in #34
- Add design document by @google-labs-jules[bot] in #36
- Support Alpha channel in wrapper.c by @google-labs-jules[bot] in #37
- Support RGB565 and ARGB8888 decoding formats by @google-labs-jules[bot] in #39
- Refactor wrapper.c and add unit tests by @google-labs-jules[bot] in #40
- Add CI badge to README.md by @google-labs-jules[bot] in #41
- Add KDoc comments to public API in android lib by @keiji in #44
- Configure Dokka for KDoc generation by @google-labs-jules[bot] in #45
- Fix Dokka documentation generation failure by @google-labs-jules[bot] in #46
- Refactor Jp2kDecoder and update build config by @keiji in #47
- Setup NMCP publishing for lib module by @google-labs-jules[bot] in #49
- Configure Maven Central Publishing for Lib Module by @google-labs-jules[bot] in #48
New Contributors
- @google-labs-jules[bot] made their first contribution in #1
- @keiji made their first contribution in #9
- @dependabot[bot] made their first contribution in #12
Full Changelog: https://github.com/keiji/jp2k-decoder-android/commits/v0.1.0