Commit graph

1358 commits

Author SHA1 Message Date
Serial
4767f5da08 ID3v2: Don't expect text frames to be terminated 2023-10-01 10:19:18 -04:00
Serial
d4916c4bbc Clippy: Allow some new lints 2023-09-30 13:50:05 -04:00
Serial
aea857cec2 Tests/Fuzz: Fix arguments to Picture::from_flac_bytes 2023-09-30 13:50:05 -04:00
Serial
9ae927ceb0 FLAC: Don't error by default on invalid picture types
FLAC picture blocks have `u32::MAX` possible picture types, but only 20 are actually defined. In the [spec] it states, "Others are reserved and should not be used."

We used to only allow a picture type of up to 255 to be in sync with ID3v2's APIC, where this model comes from. Now any picture type can be specified and it will just be clamped to 255, so long as `ParsingMode::Strict` is not being used.
2023-09-30 13:50:05 -04:00
Serial
15d9ca812c OGG: Support reading COVERART fields 2023-09-30 13:50:05 -04:00
dependabot[bot]
51517d3bd1 build(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 14:25:56 -04:00
Serial
6a3f912db3 misc: Create FUNDING.yml 2023-08-20 10:05:38 -04:00
Serial
bdfe1a8cfc ID3v2: Move all header related items to v2::header module 2023-07-30 21:10:42 -04:00
Serial
553d16fa88 APE: Fix property reading on old stream versions
This also makes property reading take `ParsingMode` into account.
2023-07-28 13:14:56 -04:00
Serial
6cab8aa088 WavPack: Stop overwriting custom sample rates
When a custom sample rate (or multiplier) was encountered, it would accidentally be overwritten with 0, causing incorrect duration and bitrate values.

This was due to us reading the metadata sub blocks first (when necessary) and then immediately overwriting the sample rate with the value from the block header (which is 0 in the presence of a custom sample rate).
2023-07-27 16:45:04 -04:00
Serial
5eb032a3d4 FLAC: Do not error on multiple VorbisComments when not strict
This is not allowed [by spec](https://xiph.org/flac/format.html#def_VORBIS_COMMENT), but is still possible to encounter in the wild. Now we will just tag whichever tag happens to be latest in the stream and use it, they **will not be merged** like other formats (such as ID3v2 in MP3) where multiple tags are valid.
2023-07-27 05:18:42 -04:00
Serial
3755fbf813 MP4: Fix integer shrinking
This feature wasn't finished, unsure how it wasn't caught sooner. In its current state it'll panic on most numbers. Guess we just got lucky.
2023-07-27 05:18:16 -04:00
Serial
e622a671a7 MP4: Merge existing atoms in Ilst::insert
Now, when inserting an atom that already exists in a tag, the data is taken from the provided atom and merged with the existing value in the tag. This should ensure that the value that already exists in the tag will remain the dominant one.
2023-07-25 17:11:36 -04:00
Serial
acc3c9ff11 MP4: Fix incomplete example for Atom::into_data 2023-07-25 17:11:36 -04:00
Serial
1a8ea4da77 changelog: Add entries for MP4 changes 2023-07-25 17:11:36 -04:00
Serial
bd96b4f2ed MP4: Properly handle covrs
Previously, `Ilst::insert_picture` would insert a new `covr` atom, and `Ilst::pictures` would check for multiple `covr` atoms. Now, when inserting pictures they will all be merged into a single atom.

Additionally, `Ilst::insert` will check for `covr` atom inserts, and perform `Ilst::insert_picture` correctly.
2023-07-25 17:11:36 -04:00
Serial
c078126577 MP4: Make Ilst::remove return all removed atoms 2023-07-25 17:11:36 -04:00
Serial
abf6b40057 MP4: Add Atom::{merge, into_data} 2023-07-25 17:11:36 -04:00
Uwe Klotz
903cc9d678 Fix typo 2023-07-22 09:45:11 -04:00
Uwe Klotz
36be050059 Add doc comments to ItemKey 2023-07-22 09:18:50 -04:00
Uwe Klotz
15ded5a3d4 id3v2: Add comment about handling of MusicBrainzRecordingId 2023-07-21 11:09:40 -04:00
Serial
3fe1de57cd changelog: Add entries for Id3v2Tag and FrameId changes 2023-07-21 02:52:49 -04:00
Serial
6296eec578 ID3v2: Make Id3v2Tag::remove take a FrameId
This makes it more type safe and removes the unnecessary caseless string comparison.
2023-07-21 02:52:49 -04:00
Serial
5164ba3862 ID3v2: Implement Into<Cow<'_, str>> for FrameId
This makes it possible to use `FrameId`s in `Frame::new`. It's not much less annoying to create frames using constant IDs.
2023-07-21 02:52:49 -04:00
Serial
a7af2f777c Clippy: Fix unreadable_literal 2023-07-20 12:48:06 -04:00
Serial
4a60c1c4e2 Clippy 2023-07-20 12:48:06 -04:00
Serial
18d6efb4f2 changelog: Add entries for new supported ID3v2 frames 2023-07-20 12:48:06 -04:00
Serial
7a10d1cc19 ID3v2: Add FrameValue::name to cleanup verify_frame 2023-07-20 12:48:06 -04:00
Serial
fb473baf38 ID3v2: Rename items/identifier.rs 2023-07-20 12:48:06 -04:00
Serial
9fdd6b610a ID3v2: Add tests for OWNE and RVA2 frame parsing 2023-07-20 12:48:06 -04:00
Serial
7b98078317 ID3v2: Support PRIV frames 2023-07-20 12:48:06 -04:00
Serial
cd3a795956 ID3v2: Add missing From impls for FrameValue 2023-07-20 12:48:06 -04:00
Serial
9a98739b27 ID3v2: Support ETCO frames 2023-07-20 12:48:06 -04:00
Serial
0462ce7122 ID3v2: Support OWNE frames 2023-07-20 12:48:06 -04:00
Serial
aa741e11a4 ID3v2: Remove frames that are meant to appear once
The spec defines multiple frames that are only meant to appear in a tag once. They are the following: "MCDI", "ETCO", "MLLT", "SYTC", "RVRB", "PCNT", "RBUF", "POSS", "OWNE", "SEEK", and "ASPI".

We now check for their presence in `Id3v2::insert` to prevent multiple appearing in a tag.
2023-07-20 12:48:06 -04:00
Serial
08a0bdf540 ID3v2: Support RVA2 frames 2023-07-20 12:48:06 -04:00
Serial
3bfd28745a 0.15.0 2023-07-11 18:52:37 -04:00
Serial
3c6198bbf9 misc: Update dependencies 2023-07-11 18:52:37 -04:00
Serial
8d9c06393d lofty_attr: 0.9.0 2023-07-11 18:52:37 -04:00
Serial
c0db2db25c lofty_attr: Update dependencies 2023-07-11 18:52:37 -04:00
Serial
cc338a3bc5 ID3v2: Add Id3v2Tag::remove_user_text 2023-07-10 21:33:29 -04:00
Serial
58cad46d8d changelog: Add entry for ID3v2 TXXX getter and setter 2023-07-10 21:33:29 -04:00
Serial
eb368917a9 ID3v2: Add simplified getters and setters for TXXX frames 2023-07-10 21:33:29 -04:00
Serial
7eecbbfbec Clippy: Fix needless_pass_by_value and nonminimal_bool 2023-07-10 18:18:05 -04:00
Serial
c3c01787d6 AIFF: Expose the compression type for AIFC 2023-07-10 18:18:05 -04:00
Serial
36a3561497 Clippy: Fix cast_lossless 2023-07-09 23:55:11 -04:00
Serial
c337182ee3 changelog: Add entry for WavPack multichannel fixes 2023-07-09 23:55:11 -04:00
Serial
d817a82a3a WavPack: Add support for channel mask reading 2023-07-09 23:55:11 -04:00
Serial
30b88c9e7b WavPack: Fix multichannel detection
This also fixes metadata sub block reading as a result.
2023-07-09 23:55:11 -04:00
Serial
d3bc85864a picture: Add examples to MimeType methods 2023-07-08 14:51:06 -04:00