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-12 17:58:48 +00:00
- **MP4**: `Mp4Codec::MP3`
- **MP4**: `mp4::AudioObjectType`
- This new type is used in `mp4::Mp4Properties` , accessible with `Mp4Properties::audio_object_type` .
This provides additional information for the type of audio being dealt with.
2022-03-18 19:22:40 +00:00
- `TagExt::clear`
- This allows tags to be cleared of any items or pictures, while retaining any flags (if applicable)
2022-03-20 04:00:23 +00:00
- **ID3v2**: Respect `Id3v2TagFlags::crc` when writing
- Previously, this flag was ignored, but it will now calculate a CRC for the extended header
2022-03-20 16:05:38 +00:00
- **ID3v2**: `FrameValue::Popularimeter`
2022-03-09 04:08:04 +00:00
### Changed
2022-03-26 00:27:50 +00:00
- **MP4**: Sample rates and channels are now retrieved from the [audio specific config ](https://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config ) (if possible).
2022-03-09 04:08:04 +00:00
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-18 18:47:00 +00:00
- `lofty::read_from` will now wrap the `File` in a `BufReader`
2022-03-18 19:06:42 +00:00
- **FLAC**: FLAC now has its own module at `lofty::flac`
2022-03-20 16:05:38 +00:00
- **ID3v2**: `FrameValue` is now `#[non_exhaustive]`
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-16 20:59:55 +00:00
- **FLAC**: Support files with an ID3v2 tag
- This will be read only just like APE, but will allow such files to be read
2022-03-21 20:53:32 +00:00
- **ID3v2**: Fix writing certain proprietary Apple frames
2022-03-20 14:43:19 +00:00
- When writing, frame IDs are verified with their content. The Apple specific frames "MVNM" and "MVIN" were missing,
causing an error if they were written with their proper type (`FrameValue::Text`)
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-21 20:53:32 +00:00
[Unreleased]: https://github.com/Serial-ATA/lofty-rs/compare/74d9f35...main
[0.5.3]: https://github.com/Serial-ATA/lofty-rs/compare/5bf1f34...74d9f35
[0.5.2]: https://github.com/Serial-ATA/lofty-rs/compare/d00be2c...5bf1f34
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