Commit graph

835 commits

Author SHA1 Message Date
Uwe Klotz
f57fc40acf ID3v2: Modify and comment misleading test assertion 2023-03-13 11:00:12 -04:00
Uwe Klotz
89e5b3107c ID3v2: Add support for MusicBrainzRecordingId 2023-03-13 11:00:12 -04:00
Uwe Klotz
c01832ceb4 Manually reformat gen_map!() code 2023-03-11 17:01:43 -05:00
Uwe Klotz
c245863cfc Add support for selected MusicBrainz identifiers 2023-03-11 17:01:43 -05:00
Serial
a0323dfb20
TaggedFileExt: Add default impls 2023-03-10 17:59:44 -05:00
Serial
71f9f3338c
properties: Move ChannelMask to properties module 2023-03-10 17:55:09 -05:00
Uwe Klotz
6754809b00 Separate SplitAndMergeTag into SplitTag/MergeTag traits
Pevent any unexpected or undefined behavior at runtime by applying the
typestate pattern.
2023-02-28 09:57:12 -05:00
Uwe Klotz
3acf047bca FileProperties: Add getter for channel mask 2023-02-28 09:05:52 -05:00
Uwe Klotz
c1c441afb1 Expose channel mask in file properties
Currently only supported by WAV files.
2023-02-28 09:05:52 -05:00
Uwe Klotz
31c30389cb Allow clippy::let_underscore_untyped 2023-02-28 08:50:57 -05:00
Uwe Klotz
b8c972f60c ID3v2: Simplify parsing of number/total pairs 2023-02-28 08:43:56 -05:00
Keita Kita
928bfdf482 ID3v2: Except invalid number pair while parsing ID3v2Tag 2023-02-28 08:43:56 -05:00
Keita Kita
94f8aac840 ID3v2: Change default number from 1 to 0 for track and disk 2023-02-28 08:43:56 -05:00
Keita Kita
32ddd3b65e ID3v2: Merge number pair of track and disk while saving tag 2023-02-28 08:43:56 -05:00
Keita Kita
33deeebb9d ID3v2: Merge number pair of track and disk from Tag 2023-02-28 08:43:56 -05:00
Keita Kita
93c28ff993 ID3v2: Merge number pair of disk in Accessor 2023-02-28 08:43:56 -05:00
Keita Kita
88107e2dcf ID3v2: Merge number pair of track in Accessor 2023-02-28 08:43:56 -05:00
Uwe Klotz
caa278cfb0 Vorbis: Add mapping for InitialKey 2023-02-28 08:15:03 -05:00
Serial
ee94fdb1f6 OGG: Verify opus-tools is available before running test 2023-02-19 20:10:11 -05:00
Uwe Klotz
eb79e811a6 id3v2: Implement SplitAndMergeTag::merge_tag() consistently 2023-02-19 19:48:47 -05:00
Uwe Klotz
ca898172c2 id3v2: Fix set_comment()
Only keep a single comment frame to avoid unexpected behavior.
2023-02-19 19:48:47 -05:00
Uwe Klotz
15f81bb48b id3v2: Use set_comment() instead of inserting a frame manually 2023-02-19 19:48:47 -05:00
Uwe Klotz
206ffd2e0b id3v2: Avoid ItemKey -> FrameID conversion 2023-02-19 19:48:47 -05:00
Uwe Klotz
3f751f3c38 id3v2/mp4/ogg: Add tests for multi-valued item conversion 2023-02-19 19:48:47 -05:00
Serial
e14c62bf75 misc: Remove cfg-if dependency 2023-02-15 00:22:01 -05:00
Serial
149229fd2b ID3v2: Remove unnecessary clone in FrameRef creation 2023-02-11 13:32:08 -05:00
Serial
1d2dbb6b35 ID3v2: Fix conversion of user defined frames when using Tag writing interface
fixes #140
2023-02-11 13:32:08 -05:00
Uwe Klotz
0a77f479ae More robust year parsing without allocations
Signed-off-by: Uwe Klotz <uwe.klotz@gmail.com>
2023-02-11 01:38:25 -05:00
Uwe Klotz
77ed8facbc id3v2: Avoid allocation of FrameID 2023-01-30 17:57:46 -05:00
Uwe Klotz
eb648f4f0d Remove special case handling of empty string values 2023-01-30 17:57:31 -05:00
Serial
e79aa0846a Clippy: Fix needless_pass_by_value 2023-01-21 11:24:09 -05:00
Serial
ec4e66fcbe OGG: Add a test for #130 2023-01-21 11:24:09 -05:00
Serial
87686ace5e OGG: Fix find_last_page 2023-01-21 11:24:09 -05:00
Serial
d1beb78a97 ogg_pager: Store segment table in PageHeader 2023-01-21 11:24:09 -05:00
Serial
54cd6ca49a OGG: Increment audio packet page sequence numbers when writing 2023-01-21 11:24:09 -05:00
Serial
b4f22e9a5d OGG: Read appropriate number of header packets 2023-01-21 11:24:09 -05:00
Serial
a201ab33f7
APE/ID3v1: Remove items in setters when given empty value 2023-01-20 21:17:26 -05:00
Uwe Klotz
533cd7dcff Renaming: rejoin -> merge 2023-01-20 08:34:33 -05:00
Uwe Klotz
2132d0171e SplitAndRejoin: Add a read/modify/write usage example 2023-01-20 08:34:33 -05:00
Uwe Klotz
2b562c4a4b Split and rejoin tags for read/modify/write round trips 2023-01-20 08:34:33 -05:00
Uwe Klotz
19fe23cbeb id3v2: Change const fn into const 2023-01-15 11:36:16 -05:00
Uwe Klotz
b2250df119 id3v2: Replace literals with named constants 2023-01-15 11:36:16 -05:00
Uwe Klotz
7d1aab461b id3v2: Filter text frames by empty content descriptor 2023-01-15 11:36:16 -05:00
Uwe Klotz
4ea22ff44b id3v2: Distinguish COMM frames by content descriptor
Plain comments are supposed to have an empty description aka content
descriptor. Only those must appear as ItemKey::Comment.
2023-01-15 11:36:16 -05:00
Uwe Klotz
07606159ec ogg: Add a consuming iterator over all items 2023-01-15 11:35:09 -05:00
Uwe Klotz
751f5ca06f Add conversions between borrowed/owned data 2023-01-15 11:34:46 -05:00
Uwe Klotz
cff5d8fc6b id3v2: Retain frames by predicate 2023-01-15 11:34:29 -05:00
Serial
a769297545
RIFF: Return removed item from RIFFInfoList::remove 2023-01-14 20:31:09 -05:00
Serial
0c7ea31817 RIFF: Support year Accessor methods in RIFFInfoList 2023-01-14 20:27:10 -05:00
Uwe Klotz
06b3b6dbaf mp4: More robust parsing and updated mapping of rtng atom 2023-01-14 20:05:25 -05:00
Uwe Klotz
100b7e21b1 Let Tag::items() return an iterator 2023-01-14 11:45:06 -05:00
Uwe Klotz
31894bedfc Remove IntoIterator impls for Tag due to items/pictures ambiguity 2023-01-14 11:45:06 -05:00
Uwe Klotz
76cddb7719 Add Clone bounds to impl Iterator results 2023-01-14 11:45:06 -05:00
Uwe Klotz
3df98aff12 Add more IntoIterator implementations 2023-01-14 11:45:06 -05:00
Uwe Klotz
0616da11fb Fix and complete work/movement support 2023-01-14 11:41:37 -05:00
Uwe Klotz
d08d76616e id3v2: Handle three-letter language codes consistently 2023-01-14 11:40:18 -05:00
Uwe Klotz
1f3c49e6ac id3v2: Use is_ascii_alphabetic() instead of lowercase + uppercase 2023-01-14 11:40:18 -05:00
Serial
4f31729ae8
ID3v2: Allow uppercase languages in LanguageFrame 2023-01-13 11:52:16 -05:00
Serial
af5154b7fb TagExt: Add TagExt::len 2023-01-11 21:13:50 -05:00
Uwe Klotz
90a7683322 Fix base64 deprecation warnings 2023-01-11 18:07:21 -05:00
Uwe Klotz
7ca8a72ba3 Disambiguate ID3v2 TIT1/GRP1 2023-01-11 08:46:31 -05:00
Uwe Klotz
da27ed75f5 Use new naming convention for AppleXid 2023-01-11 08:37:21 -05:00
Uwe Klotz
bdf1547afb mp4: Implement IntoIterator for Ilst
This is needed for merging tags.
2023-01-11 08:35:19 -05:00
Uwe Klotz
ad3f447bf4 mp4: Write integer bpm 2023-01-10 20:07:51 -05:00
Uwe Klotz
dca773401d Use #[must_use] pub const fn new(...) whenever possible 2023-01-10 20:06:05 -05:00
Uwe Klotz
f73783aa8a id3v2: Use "XXX" if the actual language is unknown 2023-01-09 18:19:53 -05:00
Serial
fd1f9f62a0 FLAC: Store pictures separately from the VorbisComments tag 2023-01-08 21:26:50 -05:00
Serial
53050039a5 FLAC: Add FlacProperties 2023-01-08 17:16:26 -05:00
Serial
a6b114b2e4 Tags: Improve handling of Year tag 2023-01-08 16:14:37 -05:00
Uwe Klotz
53eb2184b8 id3v2: Do not require clients to use Cow in public API 2023-01-07 12:56:50 -05:00
Uwe Klotz
738d47fd4f Reduce memory allocations for id3v2::FrameID 2023-01-07 12:56:50 -05:00
Serial
42908415b4 OGG: Stop using no_audiofile_impl for LoftyFile derives 2023-01-07 00:10:53 -05:00
Serial
4d792bb480 AudioFile: Add AudioFile::save_to{_path} 2023-01-07 00:10:53 -05:00
Uwe Klotz
0f480a26c5 mp4: Map FlagCompilation to text "0"/"1"
This is consistent with other tag types.
2023-01-06 22:05:06 -05:00
Uwe Klotz
cf5f29af2f mp4: Use constant for advisory rating ident 2023-01-06 22:05:06 -05:00
Serial
366d6eb716 ItemKey: Add ItemKey::Color 2023-01-05 14:49:09 -05:00
Uwe Klotz
b265252dbd Add Director item 2023-01-05 14:13:23 -05:00
Uwe Klotz
5858a90112 mp4: Add new item key AppleXID 2023-01-05 13:58:01 -05:00
Serial
823f931d31 Misc: Remove id3v2{_restrictions} features 2023-01-05 00:43:04 -05:00
Serial
39c338e15b Misc: Remove riff_info_list feature 2023-01-05 00:43:04 -05:00
Serial
f9b97342d0 Misc: Remove aiff_text_chunks feature 2023-01-05 00:43:04 -05:00
Serial
c62981fc81 Misc: Remove ape feature 2023-01-05 00:43:04 -05:00
Serial
75d683a7bf Misc: Remove id3v1 feature 2023-01-05 00:43:04 -05:00
Serial
2fc30f3b5a Misc: Remove mp4_ilst feature 2023-01-05 00:43:04 -05:00
Serial
4e87434cf2 Misc: Remove vorbis_comments feature 2023-01-05 00:43:04 -05:00
Serial
75bcd6fac3 Docs: Remove mention of format features 2023-01-05 00:43:04 -05:00
Serial
e2253ff754 MP4: Implement TryFrom<ItemKey> for AtomIdent 2023-01-05 00:42:44 -05:00
Serial
47278e4ead
ItemKey: Fix formatting in gen_map!s 2023-01-04 23:19:05 -05:00
Uwe Klotz
d1bc6d436b Allow to create AtomIdent constants with 'static lifetime 2023-01-04 23:14:38 -05:00
Uwe Klotz
5ef093539e vorbis: Add MIXARTIST as variant for Remixer (DJ applications) 2023-01-04 13:15:29 -05:00
Uwe Klotz
d2d95d86ab vorbis: Add Label variant as recommended by MusicBrainz 2023-01-04 13:15:29 -05:00
Uwe Klotz
1abce01cf8 vorbis: Add common EncodedBy variants
MusicBrainz recommends "ENCODEDBY"
2023-01-04 13:15:29 -05:00
Uwe Klotz
25e36637bf mp4: Add replay gain items 2023-01-04 13:15:15 -05:00
Uwe Klotz
69cad746bb mp4: Add InitialKey item 2023-01-04 13:15:15 -05:00
Uwe Klotz
6e79bd3b3a mp4: Add support for precise (non-integer) BPM values 2023-01-04 13:15:15 -05:00
Serial
16a2419351 ID3v2: Support duplicate tags
Previously, if we were reading a file and encountered an ID3v2 tag after having already read one, we would overwrite the last one, losing all of its information. Now we preserve all of the information, overwriting frames as necessary.
2022-12-27 15:24:32 -05:00
Serial
939f3f2f0d
Clippy: Fix manual_is_ascii_check 2022-12-27 13:41:53 -05:00
Serial
ecdb7ff878 MP4: Stop validating flags for gnre atom upgrade 2022-12-16 12:24:51 -05:00
Serial
4de9239af9 Clippy: Fix single_match 2022-12-12 14:00:26 -05:00
Serial
4c5538bba0 Accessor: Make text getters return Cow<str> to allow for editing
This is an unfortunate compromise that needed to be made to make it possible to change the null separators in ID3v2.4 to slashes prior to returning the value.
2022-12-12 14:00:26 -05:00