Commit graph

1580 commits

Author SHA1 Message Date
Serial
04a577bdfa MP4/ID3v2: Better handling of flag items 2024-01-11 12:44:13 -05:00
Uwe Klotz
f4be1e3775 Fail CI build on clippy warnings 2024-01-06 13:28:58 -05:00
Uwe Klotz
0f06fa3de2 vorbis: Fix unreachable pattern in ItemKey mapping 2024-01-06 13:28:47 -05:00
Uwe Klotz
accdea1e4d Rename ItemKey variants to PascalCase 2024-01-06 13:21:07 -05:00
Uwe Klotz
2651eb22bd MimeType: Implement Display instead of ToString 2024-01-06 13:20:48 -05:00
Uwe Klotz
5700ef13ac Rename PodcastReleaseDate to ReleaseDate 2024-01-05 17:30:35 -05:00
Serial
09cac3348a Add back dates marker comment 2024-01-05 00:25:55 -05:00
Uwe Klotz
74b1bb8374 Add more date/year mappings from MusicBrainz Picard 2024-01-05 00:25:55 -05:00
Uwe Klotz
20a38cc829 mp4: Map "----:com.apple.iTunes:ORIGINALDATE" to OriginalReleaseDate
Adopted from TagLib v2.0.
2024-01-03 15:37:44 -05:00
Serial
e48efff72a ogg_pager: 0.6.0 2024-01-03 10:19:28 -05:00
Serial
10fbc6a432 Speex: Estimate bitrate when the nominal bitrate is not available 2024-01-03 09:47:33 -05:00
Serial
3a9a2dea7f Probe: Introduce GlobalOptions to handle allocations and resolvers
This moves `ParseOptions::{use_custom_resolvers, allocation_limit}` to the new `GlobalOptions` struct. This makes it easier to check for certain options in places where `ParseOptions` may not be available.

`GlobalOptions` are not truly global, they only apply to the current thread.
2024-01-02 19:06:45 -05:00
Serial
014cd733ab ID3v2: Add more logging 2024-01-02 15:51:42 -05:00
Serial
bf1f690ccb MPEG: Stop using find_id3v2 2024-01-02 15:51:42 -05:00
Serial
400ec97edf changelog: Update for latest changes 2024-01-02 15:51:42 -05:00
Serial
a0afcb7712 MPEG: Find ID3v2 tags buried in junk
Now when we can't find an ID3v2 tag at the start of the file, we search the area between the start and the first MPEG frame (or just `max_junk_bytes`, whichever is smaller).

For now, this is only done for MPEG files, and ID3v2 tags. APE header tags are less important, so similar functionality can be implemented later.
2024-01-02 15:51:42 -05:00
Serial
0019e22a40 Probe: Check custom resolvers before default implementations 2024-01-02 14:37:19 -05:00
Serial
6f1c84871d changelog: Add entry for MP4 offset atom changes 2024-01-02 13:23:11 -05:00
Serial
3388616b90 MP4: Add more trace logging to write process 2024-01-02 13:23:11 -05:00
Serial
93ec518dae MP4: Update offset atoms after writing
Previously, the offset atoms remained untouched, which would lead audio players to believe that the file was corrupted.
2024-01-02 13:23:11 -05:00
Serial
54971b3a6f MP4: Introduce AtomWriter
This is simply a wrapper around `Cursor<Vec<u8>>` for now. Will likely become more powerful in the future.
2024-01-02 13:23:11 -05:00
Serial
50363c7ef2 MP4: Cleanup write_size() 2024-01-02 13:23:11 -05:00
Uwe Klotz
d7180483f6 Restore deleted comment 2024-01-01 17:55:09 -05:00
Uwe Klotz
73659a178a Fix clippy::from_iter_instead_of_collect 2024-01-01 17:55:09 -05:00
Uwe Klotz
3d737cb7ad Fix clippy::explicit_iter_loop (auto) 2024-01-01 17:55:09 -05:00
Uwe Klotz
d4a873cb5c Fix clippy::unnecessary_fallible_conversions 2024-01-01 17:55:09 -05:00
Uwe Klotz
d64237ff6a Fix clippy::clippy::manual_let_else 2024-01-01 17:55:09 -05:00
Serial
038998f3cc MPEG: Warn about header APE tags 2023-12-31 22:37:07 -05:00
Serial
14cd3e81df FLAC: Add more logging 2023-12-31 22:37:07 -05:00
Serial
73663a7346 ID3: Add logging 2023-12-31 22:37:07 -05:00
Serial
1e4562bf0f APE: Add more warning logs 2023-12-31 22:37:07 -05:00
Serial
18894caf3d AAC: Add debug logging 2023-12-31 22:37:07 -05:00
Serial
ac10c9cbe4 IFF: Add more logging to AIFF/WAV 2023-12-31 22:37:07 -05:00
Serial
e7db26bd58 MPC: Add logging for version check 2023-12-31 22:37:07 -05:00
Serial
4198a52939 MP4: Add more logging 2023-12-31 22:37:07 -05:00
Serial
363f595448 OGG: Change property debug logs to warnings 2023-12-31 22:37:07 -05:00
Serial
aabf7cf8f6 OGG: Add warning logs to VorbisComments parsing 2023-12-31 22:37:07 -05:00
Serial
f3ba3402f4 Probe: Add debug logging 2023-12-31 22:37:07 -05:00
Serial
def61e7410 MPEG: Log a warning when estimating duration from bitrate 2023-12-31 22:37:07 -05:00
Serial
1214f20c8b OGG: Use rounded division to calculate durations
This brings us to parity with FFmpeg durations.
2023-12-31 14:22:39 -05:00
Serial
945c33f528 ogg_pager: Add Packets::iter() 2023-12-31 13:44:33 -05:00
Serial
9444766b38 ID3v2: Move Id3v2Tag unit tests to tag/tests.rs
We reached nearly 1.5k lines of unit tests for `Id3v2Tag`, and with the `tag` module already being quite large itself, it was nearly 3k lines total.

Moving the unit tests to `{module}/tests.rs` is a common pattern in std.
2023-12-31 13:03:49 -05:00
Serial
c606e07c62 changelog: Add entry for ID3v2 TIPL fix 2023-12-26 22:28:35 -05:00
Serial
404960bad9 Text: Document TextDecodeOptions 2023-12-26 22:28:35 -05:00
Serial
3c33cb1f43 ID3v2: Support UTF-16 TIPL frames with single BOM
This changes the signature of `decode_text` to take the new `TextDecodeOptions`. This allows us to specify a UTF-16 BOM ahead of time.

closes #306
2023-12-26 22:28:35 -05:00
Uwe Klotz
7e93b3c1f7 ogg-pager: Update byteorder dependency 2023-12-22 20:52:26 -05:00
Uwe Klotz
5f3cfa06d7 Replace base64 with data-encoding 2023-12-22 20:48:24 -05:00
Uwe Klotz
f8aaaeab20 Update Cargo.toml
Co-authored-by: Alex <69764315+Serial-ATA@users.noreply.github.com>
2023-12-21 20:44:08 -05:00
Uwe Klotz
a6689dd5b5 Use local, static OnceLock instance 2023-12-21 20:44:08 -05:00
Uwe Klotz
7ce77290e4 Rust v1.70: Replace once_cell with std::sync::OnceLock 2023-12-21 20:44:08 -05:00