# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.12.1](https://github.com/kixelated/mp4-atom/compare/v0.12.0...v0.12.1) - 2026-07-07

### Other

- only require pcmC for ipcm/fpcm sample entries ([#167](https://github.com/kixelated/mp4-atom/pull/167))
- decode chroma_subsampling as 3 bits, not 1 ([#168](https://github.com/kixelated/mp4-atom/pull/168))

## [0.12.0](https://github.com/kixelated/mp4-atom/compare/v0.11.0...v0.12.0) - 2026-06-07

### Other

- Expose track_in_movie and track_size_is_aspect_ratio flags on Tkhd ([#146](https://github.com/kixelated/mp4-atom/pull/146))
- return error for unsupported infe v1 ([#165](https://github.com/kixelated/mp4-atom/pull/165))

## [0.11.0](https://github.com/kixelated/mp4-atom/compare/v0.10.1...v0.11.0) - 2026-05-18

### Added

- add support for nclc colour type in colr box ([#110](https://github.com/kixelated/mp4-atom/pull/110))

### Fixed

- preserve per-sample fields on trun encode roundtrip ([#160](https://github.com/kixelated/mp4-atom/pull/160))

### Other

- return Err(Reserved) on out-of-range *_size fields instead of panicking ([#163](https://github.com/kixelated/mp4-atom/pull/163))
- bound Vec::with_capacity on counts ([#162](https://github.com/kixelated/mp4-atom/pull/162))
- bound Vec::with_capacity in parse_vorbis_comment and Avcc ([#157](https://github.com/kixelated/mp4-atom/pull/157))
- replace unmaintained `paste` with `pastey` ([#161](https://github.com/kixelated/mp4-atom/pull/161))
- update related traits to support unsized reads and writes ([#145](https://github.com/kixelated/mp4-atom/pull/145))
- minor cleanup in colr test code ([#155](https://github.com/kixelated/mp4-atom/pull/155))
- make non-exhaustive, add unit tests ([#149](https://github.com/kixelated/mp4-atom/pull/149))
- advance buffer cursor after reading prof/rICC profile ([#153](https://github.com/kixelated/mp4-atom/pull/153))
- follow-up for self-contained flag fix, add tests ([#150](https://github.com/kixelated/mp4-atom/pull/150))
- expose duration_is_empty and default_base_is_moof flags on Tfhd ([#151](https://github.com/kixelated/mp4-atom/pull/151))
- Fix dref url self_contained flag bit position ([#147](https://github.com/kixelated/mp4-atom/pull/147))
- implement LHVCDecoderConfigurationBox (lhvC) ([#141](https://github.com/kixelated/mp4-atom/pull/141))
- Add Brad Hards to authors ([#144](https://github.com/kixelated/mp4-atom/pull/144))
- implement 3GPP narrowband codec sample entry (samr) ([#135](https://github.com/kixelated/mp4-atom/pull/135))
- fix up tests after recent commits ([#140](https://github.com/kixelated/mp4-atom/pull/140))
- implement track reference (tref) box ([#139](https://github.com/kixelated/mp4-atom/pull/139))
- implement Web Video Text Tracks (WebVTT) sample entry format ([#131](https://github.com/kixelated/mp4-atom/pull/131))
- implement rtng box ([#136](https://github.com/kixelated/mp4-atom/pull/136))
- implement ainf box. ([#122](https://github.com/kixelated/mp4-atom/pull/122))
- add ccst support for AV1 ([#133](https://github.com/kixelated/mp4-atom/pull/133))
- Add option for having taic box ([#132](https://github.com/kixelated/mp4-atom/pull/132))
- implement hint media header (hmhd) box ([#115](https://github.com/kixelated/mp4-atom/pull/115))
- Add support for "uri " infe boxes inside iinf ([#123](https://github.com/kixelated/mp4-atom/pull/123))

## [0.10.1](https://github.com/kixelated/mp4-atom/compare/v0.10.0...v0.10.1) - 2026-01-23

### Other

- handle compressorname encoding of length ([#113](https://github.com/kixelated/mp4-atom/pull/113))
- Add #[non_exhaustive] to Codec enum ([#114](https://github.com/kixelated/mp4-atom/pull/114))
- add support for the refs sample groups ([#106](https://github.com/kixelated/mp4-atom/pull/106))
- add cprt and kind child boxes ([#104](https://github.com/kixelated/mp4-atom/pull/104))
- add support for ccst child in hvc1 ([#102](https://github.com/kixelated/mp4-atom/pull/102))
- add nmhd and sthd boxes ([#103](https://github.com/kixelated/mp4-atom/pull/103))

## [0.10.0](https://github.com/kixelated/mp4-atom/compare/v0.9.2...v0.10.0) - 2026-01-14

### Other

- add strict mode feature, enable on test ([#99](https://github.com/kixelated/mp4-atom/pull/99))
- implement ftab box ([#100](https://github.com/kixelated/mp4-atom/pull/100))
- implement mfra container and nested tfra and mfro boxes ([#98](https://github.com/kixelated/mp4-atom/pull/98))
- add initial support for senc box ([#96](https://github.com/kixelated/mp4-atom/pull/96))
- implement sidx box ([#94](https://github.com/kixelated/mp4-atom/pull/94))
- avoid inlining a couple more test files ([#95](https://github.com/kixelated/mp4-atom/pull/95))
- avoid checking for is_some() on encode, since encode is supported on Option<..> ([#93](https://github.com/kixelated/mp4-atom/pull/93))
- Stop manually inlining test files. ([#90](https://github.com/kixelated/mp4-atom/pull/90))
- implement prft box ([#91](https://github.com/kixelated/mp4-atom/pull/91))
- add cslg box ([#89](https://github.com/kixelated/mp4-atom/pull/89))
- add support for ilst "tool" box ([#86](https://github.com/kixelated/mp4-atom/pull/86))
- add btrt, colr and pasp support for VP8 and VP9 codecs ([#88](https://github.com/kixelated/mp4-atom/pull/88))
- add btrt box for Opus codec ([#87](https://github.com/kixelated/mp4-atom/pull/87))
- implement box ([#85](https://github.com/kixelated/mp4-atom/pull/85))
- Log unknown atoms instead of (sometimes) returning an error. ([#84](https://github.com/kixelated/mp4-atom/pull/84))
- fix taic encoding ([#83](https://github.com/kixelated/mp4-atom/pull/83))
- minor comment fix ([#82](https://github.com/kixelated/mp4-atom/pull/82))
- add support for btrt box in uncompressed audio ([#80](https://github.com/kixelated/mp4-atom/pull/80))
- Add support for raw audio as per ISO/IEC 23003-5 ([#78](https://github.com/kixelated/mp4-atom/pull/78))

## [0.9.2](https://github.com/kixelated/mp4-atom/compare/v0.9.1...v0.9.2) - 2025-11-30

### Other

- Don't require fmt::Debug for Buf/BufMut. ([#73](https://github.com/kixelated/mp4-atom/pull/73))

## [0.9.1](https://github.com/kixelated/mp4-atom/compare/v0.9.0...v0.9.1) - 2025-11-09

### Added

- *(skip)* free and skip boxes are now automatically skipped during parsing ([#69](https://github.com/kixelated/mp4-atom/pull/69))
- *(hdlr)* Skips trailing padding in hdlr ([#70](https://github.com/kixelated/mp4-atom/pull/70))
- *(meta)* add support for QuickTime style meta box ([#68](https://github.com/kixelated/mp4-atom/pull/68))

### Fixed

- *(eac3)* uses the correct number of sub streams, consumes all remaining bytes by definition ([#61](https://github.com/kixelated/mp4-atom/pull/61))

## [0.9.0](https://github.com/kixelated/mp4-atom/compare/v0.8.1...v0.9.0) - 2025-09-21

### Fixed

- *(eac3)* make box members public ([#59](https://github.com/kixelated/mp4-atom/pull/59))
- [**breaking**] add saiz and saio to traf ([#49](https://github.com/kixelated/mp4-atom/pull/49))
- support multiple saio and saiz boxes ([#44](https://github.com/kixelated/mp4-atom/pull/44))

### Other

- add support for AC-3 sample entry and related dac3 box ([#58](https://github.com/kixelated/mp4-atom/pull/58))
- implement basic FLAC support ([#57](https://github.com/kixelated/mp4-atom/pull/57))
- minor code fixes ([#56](https://github.com/kixelated/mp4-atom/pull/56))
- Relaxed reserved bits validation on `Avcc` decode ([#55](https://github.com/kixelated/mp4-atom/pull/55))
- Fix some clippy warnings by boxing Trak. ([#52](https://github.com/kixelated/mp4-atom/pull/52))
- Add claude.md ([#51](https://github.com/kixelated/mp4-atom/pull/51))
- Add Claude Code GitHub Workflow ([#50](https://github.com/kixelated/mp4-atom/pull/50))
- Add optional boxes used in fragmented mp4 ([#47](https://github.com/kixelated/mp4-atom/pull/47))
- Shrink the size of the Meta struct. ([#48](https://github.com/kixelated/mp4-atom/pull/48))
- Optionally add the first-sample-flags ([#46](https://github.com/kixelated/mp4-atom/pull/46))

## [0.8.1](https://github.com/kixelated/mp4-atom/compare/v0.8.0...v0.8.1) - 2025-05-15

### Other

- Fix some missing serde attributes. ([#42](https://github.com/kixelated/mp4-atom/pull/42))

## [0.8.0](https://github.com/kixelated/mp4-atom/compare/v0.7.2...v0.8.0) - 2025-05-13

### Added

- add uncompressed video support ([#38](https://github.com/kixelated/mp4-atom/pull/38))
- add TAIClockInfoBox (taic) support ([#37](https://github.com/kixelated/mp4-atom/pull/37))
- add support for BitRateBox (btrt) ([#35](https://github.com/kixelated/mp4-atom/pull/35))
- add ColourInformationBox (colr) ([#34](https://github.com/kixelated/mp4-atom/pull/34))
- add PixelAspectRatioBox (pasp) ([#32](https://github.com/kixelated/mp4-atom/pull/32))

### Fixed

- correct hvcC parsing and encoding ([#41](https://github.com/kixelated/mp4-atom/pull/41))

### Other

- Add HEIF support (top level metabox) ([#40](https://github.com/kixelated/mp4-atom/pull/40))
- Initial Opus support. ([#39](https://github.com/kixelated/mp4-atom/pull/39))
- Add auxiliary information box support ([#36](https://github.com/kixelated/mp4-atom/pull/36))

## [0.7.2](https://github.com/kixelated/mp4-atom/compare/v0.7.1...v0.7.2) - 2025-03-18

### Other

- Exhaustive ([#29](https://github.com/kixelated/mp4-atom/pull/29))
- Always parse the extended avcC atom. ([#30](https://github.com/kixelated/mp4-atom/pull/30))

## [0.7.1](https://github.com/kixelated/mp4-atom/compare/v0.7.0...v0.7.1) - 2025-03-09

### Other

- Opps. ([#27](https://github.com/kixelated/mp4-atom/pull/27))

## [0.7.0](https://github.com/kixelated/mp4-atom/compare/v0.6.0...v0.7.0) - 2025-03-09

### Other

- Add #[non_exhaustive] to the huge enums. ([#26](https://github.com/kixelated/mp4-atom/pull/26))
- Maybe support VP8 too? ([#25](https://github.com/kixelated/mp4-atom/pull/25))
- Added support for Hvc1 atoms. ([#23](https://github.com/kixelated/mp4-atom/pull/23))

## [0.6.0](https://github.com/kixelated/mp4-atom/compare/v0.5.0...v0.6.0) - 2025-03-03

### Other

- Fix vp9 support. ([#22](https://github.com/kixelated/mp4-atom/pull/22))
- Fix HEVC (h265) support. ([#20](https://github.com/kixelated/mp4-atom/pull/20))

## [0.5.0](https://github.com/kixelated/mp4-atom/compare/v0.4.0...v0.5.0) - 2025-03-03

### Other

- Initial AV1 support ([#17](https://github.com/kixelated/mp4-atom/pull/17))
- Use just for checks ([#18](https://github.com/kixelated/mp4-atom/pull/18))

## [0.4.0](https://github.com/kixelated/mp4-atom/compare/v0.3.0...v0.4.0) - 2025-01-14

### Other

- Fix avcC parsing. ([#16](https://github.com/kixelated/mp4-atom/pull/16))
- Add fuzzing and fix some bugs. ([#14](https://github.com/kixelated/mp4-atom/pull/14))

## [0.3.0](https://github.com/kixelated/mp4-atom/compare/v0.2.1...v0.3.0) - 2024-10-18

### Other

- Add decode_maybe ([#12](https://github.com/kixelated/mp4-atom/pull/12))
- Fix some user-provided MP4 files. ([#11](https://github.com/kixelated/mp4-atom/pull/11))
- Zero copy ([#9](https://github.com/kixelated/mp4-atom/pull/9))

## [0.2.1](https://github.com/kixelated/mp4-atom/compare/v0.2.0...v0.2.1) - 2024-09-24

### Other

- Crude serde support. ([#6](https://github.com/kixelated/mp4-atom/pull/6))
- Fix trun first_sample ([#7](https://github.com/kixelated/mp4-atom/pull/7))
- Added read_until helper. ([#5](https://github.com/kixelated/mp4-atom/pull/5))
- Fix a README link

## [0.2.0](https://github.com/kixelated/mp4-atom/compare/v0.1.0...v0.2.0) - 2024-09-06

### Other
- Async support and better documentation.
- v0.1.0
