CodecMedia 1.2.0
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[1.2.0] - 2026-04-21
Added
- Added MP3 decode component
Mp3Decoderto produce PCM signed 16-bit little-endian output via Java Sound runtime SPI. - Added optional experimental pure-Java MP3 decode backend
PureJavaMp3Decoderwith MP3 frame-based PCM timeline synthesis outputting PCM S16LE. - Added MP3 conversion route handler
Mp3PcmWavConverterformp3 -> pcmandmp3 -> wavworkflows. - Added conversion regression coverage in
Mp3PcmWavConverterTestfor both target formats with runtime-safe assertions.
Changed
- Extended MP3 conversion preset handling in
Mp3PcmWavConverterwith decoder token selection:decoder=javasound(default),decoder=pure-java, and aliasdecoder=layer3, including explicit unsupported-token errors. - Updated audio conversion route wiring in
DefaultConversionHubto prioritize MP3 decode routes (mp3 -> pcm,mp3 -> wav) before generic Java Sound audio transcoding. - Hardened FLAC parsing in
FlacParserwith strict STREAMINFO block length validation, reserved metadata-type checks in Vorbis read path, ID3v2-leading FLAC detection, and explicit malformed Vorbis-comment errors. - Hardened WebP probing in
WebpParserwith null-safe RIFF checks, declared-size bounds validation, chunk-payload bounds validation, VP8 key-frame validation, and clearer variant-specific error messages. - Clarified runtime requirements in
WebpCodecfor ImageIO WebP reader/writer SPI availability. - Hardened BMP probing in
BmpParserwith null-safe signature checks and explicit DIB header truncation validation (14 + dibHeaderSize <= file length). - Added public BMP probe entrypoint
BmpCodec.probe()to expose lightweight header probing through codec API. - Hardened PNG probing in
PngParserwith null-safe signature checks and strict PNG-spec bitDepth/colorType combination validation. - Added public PNG probe entrypoint
PngCodec.probe()to expose lightweight header probing through codec API. - Hardened JPEG signature sniffing in
JpegParser.isLikelyJpeg()to accept SOI-based detection (FF D8) with null-safe handling. - Added public JPEG probe entrypoint
JpegCodec.probe()to expose header-based JPEG probing through codec API. - Hardened TIFF signature sniffing in
TiffParser.isLikelyTiff()with null-safe handling, and documented that probe-levelBitsPerSamplereports the first component value. - Added public TIFF probe entrypoint
TiffCodec.probe()and clarified runtime ImageIO TIFF plugin requirements in codec documentation. - Hardened HEIF parsing in
HeifParserwith null-safe signature checks,pixiFullBox version validation (version == 0), and bounded recursive box traversal depth. - Added public HEIF probe entrypoint
HeifCodec.probe(), clarified runtime ImageIO HEIF/AVIF plugin requirements, and corrected AVIF format mapping toavifduring encode target normalization. - Bumped artifact version to
1.2.0inpom.xml.
Verified
- Confirmed MP3 decode conversion path and tests with
mvn -Dtest=Mp3PcmWavConverterTest test. - Confirmed pure-Java MP3 decoder regression coverage with
mvn -Dtest=PureJavaMp3DecoderTest test. - Confirmed FLAC parser hardening with
mvn -Dtest=FlacParserTest test. - Confirmed WebP parser regression coverage with
mvn -Dtest=WebpParserTest test. - Confirmed BMP probe/parser coverage with
mvn -Dtest=BmpParserTest test. - Confirmed PNG probe/parser coverage with
mvn -Dtest=PngParserTest test. - Confirmed JPEG probe/parser coverage with
mvn -Dtest=JpegParserTest test. - Confirmed TIFF probe/parser coverage with
mvn -Dtest=TiffParserTest test. - Confirmed HEIF probe/parser coverage with
mvn -Dtest=HeifParserTest test.