This commit is contained in:
Max Kellermann 2022-07-21 20:56:56 +02:00
commit b864094fdc
6 changed files with 11 additions and 1 deletions

2
NEWS
View File

@ -12,7 +12,7 @@ ver 0.24 (not yet released)
* player * player
- add option "mixramp_analyzer" to scan MixRamp tags on-the-fly - add option "mixramp_analyzer" to scan MixRamp tags on-the-fly
* tags * tags
- new tag "Mood" - new tags "TitleSort", "Mood"
* switch to C++20 * switch to C++20
- GCC 10 or clang 11 (or newer) recommended - GCC 10 or clang 11 (or newer) recommended
* static partition configuration * static partition configuration

View File

@ -283,6 +283,7 @@ The following tags are supported by :program:`MPD`:
* **albumartist**: on multi-artist albums, this is the artist name which shall be used for the whole album. The exact meaning of this tag is not well-defined. * **albumartist**: on multi-artist albums, this is the artist name which shall be used for the whole album. The exact meaning of this tag is not well-defined.
* **albumartistsort**: same as albumartist, but for sorting. * **albumartistsort**: same as albumartist, but for sorting.
* **title**: the song title. * **title**: the song title.
* **titlesort**: same as title, but for sorting.
* **track**: the decimal track number within the album. * **track**: the decimal track number within the album.
* **name**: a name for this song. This is not the song title. The exact meaning of this tag is not well-defined. It is often used by badly configured internet radio stations with broken tags to squeeze both the artist name and the song title in one tag. * **name**: a name for this song. This is not the song title. The exact meaning of this tag is not well-defined. It is often used by badly configured internet radio stations with broken tags to squeeze both the artist name and the song title in one tag.
* **genre**: the music genre. * **genre**: the music genre.

View File

@ -40,11 +40,13 @@ static constexpr struct tag_table ffmpeg_tags[] = {
/* from libavformat/id3v2.c */ /* from libavformat/id3v2.c */
{ "album-sort", TAG_ALBUM_SORT }, { "album-sort", TAG_ALBUM_SORT },
{ "artist-sort", TAG_ARTIST_SORT }, { "artist-sort", TAG_ARTIST_SORT },
{ "title-sort", TAG_TITLE_SORT},
/* from libavformat/mov.c */ /* from libavformat/mov.c */
{ "sort_album_artist", TAG_ALBUM_ARTIST_SORT }, { "sort_album_artist", TAG_ALBUM_ARTIST_SORT },
{ "sort_album", TAG_ALBUM_SORT }, { "sort_album", TAG_ALBUM_SORT },
{ "sort_artist", TAG_ARTIST_SORT }, { "sort_artist", TAG_ARTIST_SORT },
{ "sort_name", TAG_TITLE_SORT },
/* sentinel */ /* sentinel */
{ nullptr, TAG_NUM_OF_ITEM_TYPES } { nullptr, TAG_NUM_OF_ITEM_TYPES }

View File

@ -55,6 +55,10 @@
#define ID3_FRAME_ALBUM_ARTIST "TPE2" #define ID3_FRAME_ALBUM_ARTIST "TPE2"
#endif #endif
#ifndef ID3_FRAME_TITLE_SORT
#define ID3_FRAME_TITLE_SORT "TSOT"
#endif
#ifndef ID3_FRAME_ORIGINAL_RELEASE_DATE #ifndef ID3_FRAME_ORIGINAL_RELEASE_DATE
#define ID3_FRAME_ORIGINAL_RELEASE_DATE "TDOR" #define ID3_FRAME_ORIGINAL_RELEASE_DATE "TDOR"
#endif #endif
@ -352,6 +356,7 @@ scan_id3_tag(const struct id3_tag *tag, TagHandler &handler) noexcept
tag_id3_import_text(tag, ID3_FRAME_LABEL, TAG_LABEL, tag_id3_import_text(tag, ID3_FRAME_LABEL, TAG_LABEL,
handler); handler);
tag_id3_import_text(tag, ID3_FRAME_MOOD, TAG_MOOD, handler); tag_id3_import_text(tag, ID3_FRAME_MOOD, TAG_MOOD, handler);
tag_id3_import_text(tag, ID3_FRAME_TITLE_SORT, TAG_TITLE_SORT, handler);
tag_id3_import_musicbrainz(tag, handler); tag_id3_import_musicbrainz(tag, handler);
tag_id3_import_ufid(tag, handler); tag_id3_import_ufid(tag, handler);

View File

@ -27,6 +27,7 @@ const char *const tag_item_names[TAG_NUM_OF_ITEM_TYPES] = {
[TAG_ALBUM_ARTIST] = "AlbumArtist", [TAG_ALBUM_ARTIST] = "AlbumArtist",
[TAG_ALBUM_ARTIST_SORT] = "AlbumArtistSort", [TAG_ALBUM_ARTIST_SORT] = "AlbumArtistSort",
[TAG_TITLE] = "Title", [TAG_TITLE] = "Title",
[TAG_TITLE_SORT] = "TitleSort",
[TAG_TRACK] = "Track", [TAG_TRACK] = "Track",
[TAG_NAME] = "Name", [TAG_NAME] = "Name",
[TAG_GENRE] = "Genre", [TAG_GENRE] = "Genre",

View File

@ -42,6 +42,7 @@ enum TagType
TAG_ALBUM_ARTIST, TAG_ALBUM_ARTIST,
TAG_ALBUM_ARTIST_SORT, TAG_ALBUM_ARTIST_SORT,
TAG_TITLE, TAG_TITLE,
TAG_TITLE_SORT,
TAG_TRACK, TAG_TRACK,
TAG_NAME, TAG_NAME,
TAG_GENRE, TAG_GENRE,