Commit graph

1470 commits

Author SHA1 Message Date
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
Serial
80273a449c Tests: Update doc tests referring to MimeType::None
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
ec80ae828c Tests/Benches: Fixup for new Picture::new_unchecked signature
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
c62ac9e252 Clippy: Fix needless_borrow
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
d9f59e177b changelog: Add entry for removed None variants
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
f3457f450c Picture: Fix docs referring to MimeType::None
Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
2a18e5f358 MPEG: Remove Emphasis::None variant
This is better expressed by making `MpegProperties` store an `Option<Emphasis>`.

Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
46ec39216a ID3v2: Remove {Text, Image}SizeRestrictions::None variants
This is better expressed by making `TagRestrictions` store an `Option<{TextSizeRestrictions}>`
 and `Option<{ImageSizeRestrictions}>` instead.

Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
beb82f6416 Picture: Remove MimeType::None variant
This is better expressed by making `Picture` store an `Option<MimeType>` instead.

Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com>
2023-12-18 12:36:45 -05:00
Serial
b89ca2a30d changelog: Add entries for ID3v2 TIPL change 2023-12-18 12:31:36 -05:00
Serial
07ddca3762 ID3v2: Support building TIPL frames on Tag merge 2023-12-18 12:31:36 -05:00