2022-02-19 16:03:05 +00:00
# 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 ).
2022-02-20 23:00:00 +00:00
## [Unreleased]
2022-03-08 01:46:19 +00:00
### Added
- `TagItem::{into_key, into_value, consume}`
2022-03-09 04:08:04 +00:00
- **MP4**: `Mp4Codec::ALS`
### Changed
- **MP4**: Sample rates are now retrieved from the [audio specific config ](https://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config ) (if possible).
If the information is invalid or unavailable, the existing value from the `mp4a` box will be used instead.
2022-03-12 16:35:03 +00:00
- **Vorbis Comments**: Support non-PNG/JPEG images in `PictureInformation::from_picture`
- The method still only supports PNG and JPEG, but rather than error when it encounters an unknown image, it will return
`PictureInformation::default`
2022-03-08 01:46:19 +00:00
2022-03-06 18:17:16 +00:00
### Fixed
- **MP4**: Non-full `meta` atoms are now properly handled.
- It is possible for these to be a regular atom (no version or flags).
This information was assumed to be present and would get skipped,
which would affect the reading of subsequent atoms.
This behavior has been noticed by:
- https://leo-van-stee.github.io/
- https://github.com/axiomatic-systems/Bento4/blob/v1.6.0-639/Source/C%2B%2B/Core/Ap4ContainerAtom.cpp#L60
- https://github.com/taglib/taglib/issues/1041
2022-03-09 04:08:04 +00:00
- **MP4**: Properly search for `soun` atom
- The search wasn't adding read bytes correctly, but tests passed due to the atom being immediately available.
It would attempt to read until it reached an EOF if it managed to make it through multiple iterations.
2022-03-06 18:17:16 +00:00
2022-03-03 22:50:29 +00:00
## [0.5.3] - 2022-03-03
2022-03-06 18:17:16 +00:00
### Fixed
2022-03-05 17:07:54 +00:00
- **OGG**: Segment tables are written correctly with data spanning multiple pages ([issue](https://github.com/Serial-ATA/lofty-rs/issues/37))
2022-03-03 22:50:29 +00:00
2022-02-26 15:24:42 +00:00
## [0.5.2] - 2022-02-26
2022-02-26 01:38:58 +00:00
### Added
- **MP4**: `Ilst::{atoms, retain}`
2022-02-23 22:13:48 +00:00
### Fixed
- **ID3v2**: The footer flag is written to the tag
2022-02-24 21:07:26 +00:00
- **ID3v2**: Pictures are written when using `Tag`
2022-02-23 22:13:48 +00:00
2022-02-21 18:55:58 +00:00
## [0.5.1] - 2022-02-21
2022-02-20 23:00:00 +00:00
### Changed
- **MP4**: Padding atoms (`free`) are used when writing
2022-02-21 18:10:42 +00:00
- **Opus**: Channel count is verified in accordance to the channel mapping family
2022-02-20 23:00:00 +00:00
### Fixed
- **MP4**: `meta` atoms are written correctly
2022-02-20 14:19:41 +00:00
## [0.5.0] - 2022-02-20
2022-02-19 16:03:05 +00:00
### Added
- Support for Speex files
- `TagExt` trait to unify tag behavior
- `doc_cfg` feature for docs.rs
- Fallible allocation with `ErrorKind::Alloc` to help prevent OOM
- New dependency: `cfg-if`
- **MP3**: Emphasis struct (`mp3::Emphasis`) for use in `Mp3Properties`
- **ID3v2**: Respect the footer flag (`id3::v2::Id3v2TagFlags::footer`) when writing
- **MP4**: Constants for all well-known data types (`mp4::constants`)
- **MP4**: Support `rtng` (Parental advisory) atom, with corresponding `mp4::AdvisoryRating` enum
### Changed
2022-02-20 14:12:40 +00:00
- Added `#[non_exhaustive]` to `MimeType`
- Added `#[non_exhaustive]` to `PictureType`
- Added `#[non_exhaustive]` to `Mp4Codec`
2022-02-19 16:03:05 +00:00
- **APE**: Clarify why ID3v2 is read only
- **MP3**: No longer error on missing Xing/VBRI header when reading properties
- **MP3**: Read the entire MPEG frame header, which is exposed in `Mp3Properties`
- `AudioFile` now requires `Into<TaggedFile>`
- **MP4**: Empty atoms are discarded
- **MP4**: Variable-size integers are shrunk when writing
### Fixed
- **MP4**: Panic in `Mp4File::read_from` ([commit](https://github.com/Serial-ATA/lofty-rs/commit/9e18616a6882c659ba2d5ca6bdad9bf41171135d))
- **WAV/AIFF**: Chunk reading now makes use of fallible allocation, preventing OOM
- **ID3v2**: Text is properly encoded when writing
2022-02-20 01:08:34 +00:00
- **ID3v2**: `MVNM` and `MVIN` frames are now treated as text frames
2022-02-20 13:59:52 +00:00
- **ID3v2**: Text encodings are verified for V2 tags
2022-02-19 16:03:05 +00:00
- **MP4**: `plID` atom is properly treated as a 64-bit signed integer ([issue](https://github.com/Serial-ATA/lofty-rs/issues/34))
- **MP4**: `rate` and `rtng` now map to the correct `ItemKey`
2022-02-20 00:48:19 +00:00
- **MP4**: Integer pairs are now written correctly
2022-02-19 16:03:05 +00:00
- `TagType` and `FileType` are no longer taken by reference in any method
### Removed
- `ErrorKind::BadExtension`
2022-02-21 18:10:42 +00:00
2022-03-03 22:50:29 +00:00
[Unreleased]: https://github.com/Serial-ATA/lofty-rs/compare/41e4b1a...main
[0.5.3]: https://github.com/Serial-ATA/lofty-rs/compare/6bfe845...41e4b1a
2022-02-26 15:24:42 +00:00
[0.5.2]: https://github.com/Serial-ATA/lofty-rs/compare/d00be2c...6bfe845
2022-02-23 22:13:48 +00:00
[0.5.1]: https://github.com/Serial-ATA/lofty-rs/compare/a1463f3...d00be2c
2022-02-21 18:10:42 +00:00
[0.5.0]: https://github.com/Serial-ATA/lofty-rs/compare/64f0eff...a1463f3