diff mbox

[FFmpeg-devel] Fix spelling in ID3v1 genres and extend the list of Winamp extensions.

Message ID 20191221080740.51097-1-uspoerlein@gmail.com
State Superseded
Headers show

Commit Message

Ulrich Spörlein Dec. 21, 2019, 8:07 a.m. UTC
Source: https://en.wikipedia.org/wiki/List_of_ID3v1_Genres and taglib.

Further patches to harmonize the spelling have been sent to taglib and
libid3tag.
---
Note that neither taglib nor libid3tag use the typos for Psychedelic or
A cappella. Preserving these typos is IMHO not worth it, spec be damned.

 libavformat/id3v1.c | 58 +++++++++++++++++++++++++++++++++++++++------
 libavformat/id3v1.h |  2 +-
 2 files changed, 52 insertions(+), 8 deletions(-)

Comments

Michael Niedermayer Dec. 21, 2019, 7:38 p.m. UTC | #1
On Sat, Dec 21, 2019 at 09:07:40AM +0100, Ulrich Spörlein wrote:
> Source: https://en.wikipedia.org/wiki/List_of_ID3v1_Genres and taglib.

Please use a more "primary" source than wikipedia

thanks

[...]
Ulrich Spörlein Dec. 22, 2019, 11:18 a.m. UTC | #2
Am Sa., 21. Dez. 2019 um 09:07 Uhr schrieb Ulrich Spörlein
<uspoerlein@gmail.com>:
>
> Source: https://en.wikipedia.org/wiki/List_of_ID3v1_Genres and taglib.
>
> Further patches to harmonize the spelling have been sent to taglib and
> libid3tag.
> ---
> Note that neither taglib nor libid3tag use the typos for Psychedelic or
> A cappella. Preserving these typos is IMHO not worth it, spec be damned.
>
>  libavformat/id3v1.c | 58 +++++++++++++++++++++++++++++++++++++++------
>  libavformat/id3v1.h |  2 +-
>  2 files changed, 52 insertions(+), 8 deletions(-)
>
> diff --git a/libavformat/id3v1.c b/libavformat/id3v1.c
> index 19be42121d..eb66098f51 100644
> --- a/libavformat/id3v1.c
> +++ b/libavformat/id3v1.c
> @@ -92,7 +92,7 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
>       [64] = "Native American",
>       [65] = "Cabaret",
>       [66] = "New Wave",
> -     [67] = "Psychadelic", /* sic, the misspelling is used in the specification */
> +     [67] = "Psychedelic",
>       [68] = "Rave",
>       [69] = "Showtunes",
>       [70] = "Trailer",
> @@ -110,7 +110,7 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
>       [82] = "National Folk",
>       [83] = "Swing",
>       [84] = "Fast Fusion",
> -     [85] = "Bebob",
> +     [85] = "Bebop",
>       [86] = "Latin",
>       [87] = "Revival",
>       [88] = "Celtic",
> @@ -148,20 +148,20 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
>      [120] = "Duet",
>      [121] = "Punk Rock",
>      [122] = "Drum Solo",
> -    [123] = "A capella",
> +    [123] = "A Cappella",
>      [124] = "Euro-House",
>      [125] = "Dance Hall",
>      [126] = "Goa",
>      [127] = "Drum & Bass",
>      [128] = "Club-House",
> -    [129] = "Hardcore",
> +    [129] = "Hardcore Techno",
>      [130] = "Terror",
>      [131] = "Indie",
>      [132] = "BritPop",
>      [133] = "Negerpunk",
>      [134] = "Polsk Punk",
>      [135] = "Beat",
> -    [136] = "Christian Gangsta",
> +    [136] = "Christian Gangsta Rap",
>      [137] = "Heavy Metal",
>      [138] = "Black Metal",
>      [139] = "Crossover",
> @@ -171,8 +171,52 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
>      [143] = "Salsa",
>      [144] = "Thrash Metal",
>      [145] = "Anime",
> -    [146] = "JPop",
> -    [147] = "SynthPop",
> +    [146] = "Jpop",
> +    [147] = "Synthpop",
> +    [148] = "Abstract",
> +    [149] = "Art Rock",
> +    [150] = "Baroque",
> +    [151] = "Bhangra",
> +    [152] = "Big Beat",
> +    [153] = "Breakbeat",
> +    [154] = "Chillout",
> +    [155] = "Downtempo",
> +    [156] = "Dub",
> +    [157] = "EBM",
> +    [158] = "Eclectic",
> +    [159] = "Electro",
> +    [160] = "Electroclash",
> +    [161] = "Emo",
> +    [162] = "Experimental",
> +    [163] = "Garage",
> +    [164] = "Global",
> +    [165] = "IDM",
> +    [166] = "Illbient",
> +    [167] = "Industro-Goth",
> +    [168] = "Jam Band",
> +    [169] = "Krautrock",
> +    [170] = "Leftfield",
> +    [171] = "Lounge",
> +    [172] = "Math Rock",
> +    [173] = "New Romantic",
> +    [174] = "Nu-Breakz",
> +    [175] = "Post-Punk",
> +    [176] = "Post-Rock",
> +    [177] = "Psytrance",
> +    [178] = "Shoegaze",
> +    [179] = "Space Rock",
> +    [180] = "Trop Rock",
> +    [181] = "World Music",
> +    [182] = "Neoclassical",
> +    [183] = "Audiobook",
> +    [184] = "Audio Theatre",
> +    [185] = "Neue Deutsche Welle",
> +    [186] = "Podcast",
> +    [187] = "Indie Rock",
> +    [188] = "G-Funk",
> +    [189] = "Dubstep",
> +    [190] = "Garage Rock",
> +    [191] = "Psybient"
>  };
>
>  static void get_string(AVFormatContext *s, const char *key,
> diff --git a/libavformat/id3v1.h b/libavformat/id3v1.h
> index d5dca35873..b3ad16df6c 100644
> --- a/libavformat/id3v1.h
> +++ b/libavformat/id3v1.h
> @@ -26,7 +26,7 @@
>
>  #define ID3v1_TAG_SIZE 128
>
> -#define ID3v1_GENRE_MAX 147
> +#define ID3v1_GENRE_MAX 191
>
>  /**
>   * ID3v1 genres
> --
> 2.24.0
>


please keep me CC'ed on emails

taglib is using the same extended WinAmp genre IDs. And you can find
these in various places over the web. Obviously, I don't have access
to Winamp's source code nor is that spec being published widely, being
defunct and all.
https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v1/id3v1genres.cpp

Here's a printed copy:
https://books.google.de/books?id=kvIoDwAAQBAJ&pg=PA6457&lpg=PA6457&dq=winamp+genre&source=bl&ots=eRknt5u6HS&sig=ACfU3U3heV82sGD9-mWaLi5Tv0-pBI89PQ&hl=de&sa=X&ved=2ahUKEwiEo8-wj8nmAhUNT8AKHd0QAMMQ6AEwB3oECAkQAQ#v=onepage&q=winamp%20genre&f=false

Cheers
Uli
Michael Niedermayer Dec. 22, 2019, 5:44 p.m. UTC | #3
On Sun, Dec 22, 2019 at 12:18:28PM +0100, Ulrich Spörlein wrote:
> Am Sa., 21. Dez. 2019 um 09:07 Uhr schrieb Ulrich Spörlein
> <uspoerlein@gmail.com>:
> >
> > Source: https://en.wikipedia.org/wiki/List_of_ID3v1_Genres and taglib.
> >
> > Further patches to harmonize the spelling have been sent to taglib and
> > libid3tag.
> > ---
> > Note that neither taglib nor libid3tag use the typos for Psychedelic or
> > A cappella. Preserving these typos is IMHO not worth it, spec be damned.
> >
> >  libavformat/id3v1.c | 58 +++++++++++++++++++++++++++++++++++++++------
> >  libavformat/id3v1.h |  2 +-
> >  2 files changed, 52 insertions(+), 8 deletions(-)
> >
> > diff --git a/libavformat/id3v1.c b/libavformat/id3v1.c
> > index 19be42121d..eb66098f51 100644
> > --- a/libavformat/id3v1.c
> > +++ b/libavformat/id3v1.c
> > @@ -92,7 +92,7 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
> >       [64] = "Native American",
> >       [65] = "Cabaret",
> >       [66] = "New Wave",
> > -     [67] = "Psychadelic", /* sic, the misspelling is used in the specification */
> > +     [67] = "Psychedelic",
> >       [68] = "Rave",
> >       [69] = "Showtunes",
> >       [70] = "Trailer",
> > @@ -110,7 +110,7 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
> >       [82] = "National Folk",
> >       [83] = "Swing",
> >       [84] = "Fast Fusion",
> > -     [85] = "Bebob",
> > +     [85] = "Bebop",
> >       [86] = "Latin",
> >       [87] = "Revival",
> >       [88] = "Celtic",
> > @@ -148,20 +148,20 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
> >      [120] = "Duet",
> >      [121] = "Punk Rock",
> >      [122] = "Drum Solo",
> > -    [123] = "A capella",
> > +    [123] = "A Cappella",
> >      [124] = "Euro-House",
> >      [125] = "Dance Hall",
> >      [126] = "Goa",
> >      [127] = "Drum & Bass",
> >      [128] = "Club-House",
> > -    [129] = "Hardcore",
> > +    [129] = "Hardcore Techno",
> >      [130] = "Terror",
> >      [131] = "Indie",
> >      [132] = "BritPop",
> >      [133] = "Negerpunk",
> >      [134] = "Polsk Punk",
> >      [135] = "Beat",
> > -    [136] = "Christian Gangsta",
> > +    [136] = "Christian Gangsta Rap",
> >      [137] = "Heavy Metal",
> >      [138] = "Black Metal",
> >      [139] = "Crossover",
> > @@ -171,8 +171,52 @@ const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
> >      [143] = "Salsa",
> >      [144] = "Thrash Metal",
> >      [145] = "Anime",
> > -    [146] = "JPop",
> > -    [147] = "SynthPop",
> > +    [146] = "Jpop",
> > +    [147] = "Synthpop",
> > +    [148] = "Abstract",
> > +    [149] = "Art Rock",
> > +    [150] = "Baroque",
> > +    [151] = "Bhangra",
> > +    [152] = "Big Beat",
> > +    [153] = "Breakbeat",
> > +    [154] = "Chillout",
> > +    [155] = "Downtempo",
> > +    [156] = "Dub",
> > +    [157] = "EBM",
> > +    [158] = "Eclectic",
> > +    [159] = "Electro",
> > +    [160] = "Electroclash",
> > +    [161] = "Emo",
> > +    [162] = "Experimental",
> > +    [163] = "Garage",
> > +    [164] = "Global",
> > +    [165] = "IDM",
> > +    [166] = "Illbient",
> > +    [167] = "Industro-Goth",
> > +    [168] = "Jam Band",
> > +    [169] = "Krautrock",
> > +    [170] = "Leftfield",
> > +    [171] = "Lounge",
> > +    [172] = "Math Rock",
> > +    [173] = "New Romantic",
> > +    [174] = "Nu-Breakz",
> > +    [175] = "Post-Punk",
> > +    [176] = "Post-Rock",
> > +    [177] = "Psytrance",
> > +    [178] = "Shoegaze",
> > +    [179] = "Space Rock",
> > +    [180] = "Trop Rock",
> > +    [181] = "World Music",
> > +    [182] = "Neoclassical",
> > +    [183] = "Audiobook",
> > +    [184] = "Audio Theatre",
> > +    [185] = "Neue Deutsche Welle",
> > +    [186] = "Podcast",
> > +    [187] = "Indie Rock",
> > +    [188] = "G-Funk",
> > +    [189] = "Dubstep",
> > +    [190] = "Garage Rock",
> > +    [191] = "Psybient"
> >  };
> >
> >  static void get_string(AVFormatContext *s, const char *key,
> > diff --git a/libavformat/id3v1.h b/libavformat/id3v1.h
> > index d5dca35873..b3ad16df6c 100644
> > --- a/libavformat/id3v1.h
> > +++ b/libavformat/id3v1.h
> > @@ -26,7 +26,7 @@
> >
> >  #define ID3v1_TAG_SIZE 128
> >
> > -#define ID3v1_GENRE_MAX 147
> > +#define ID3v1_GENRE_MAX 191
> >
> >  /**
> >   * ID3v1 genres
> > --
> > 2.24.0
> >
> 
> 
> please keep me CC'ed on emails
> 
> taglib is using the same extended WinAmp genre IDs. And you can find
> these in various places over the web. Obviously, I don't have access
> to Winamp's source code nor is that spec being published widely, being
> defunct and all.

> https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v1/id3v1genres.cpp

a reference to a VCS should include the version
similarly for wikipedia some revission of the page should be mentioned in
the commit message



[...]
diff mbox

Patch

diff --git a/libavformat/id3v1.c b/libavformat/id3v1.c
index 19be42121d..eb66098f51 100644
--- a/libavformat/id3v1.c
+++ b/libavformat/id3v1.c
@@ -92,7 +92,7 @@  const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
      [64] = "Native American",
      [65] = "Cabaret",
      [66] = "New Wave",
-     [67] = "Psychadelic", /* sic, the misspelling is used in the specification */
+     [67] = "Psychedelic",
      [68] = "Rave",
      [69] = "Showtunes",
      [70] = "Trailer",
@@ -110,7 +110,7 @@  const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
      [82] = "National Folk",
      [83] = "Swing",
      [84] = "Fast Fusion",
-     [85] = "Bebob",
+     [85] = "Bebop",
      [86] = "Latin",
      [87] = "Revival",
      [88] = "Celtic",
@@ -148,20 +148,20 @@  const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
     [120] = "Duet",
     [121] = "Punk Rock",
     [122] = "Drum Solo",
-    [123] = "A capella",
+    [123] = "A Cappella",
     [124] = "Euro-House",
     [125] = "Dance Hall",
     [126] = "Goa",
     [127] = "Drum & Bass",
     [128] = "Club-House",
-    [129] = "Hardcore",
+    [129] = "Hardcore Techno",
     [130] = "Terror",
     [131] = "Indie",
     [132] = "BritPop",
     [133] = "Negerpunk",
     [134] = "Polsk Punk",
     [135] = "Beat",
-    [136] = "Christian Gangsta",
+    [136] = "Christian Gangsta Rap",
     [137] = "Heavy Metal",
     [138] = "Black Metal",
     [139] = "Crossover",
@@ -171,8 +171,52 @@  const char * const ff_id3v1_genre_str[ID3v1_GENRE_MAX + 1] = {
     [143] = "Salsa",
     [144] = "Thrash Metal",
     [145] = "Anime",
-    [146] = "JPop",
-    [147] = "SynthPop",
+    [146] = "Jpop",
+    [147] = "Synthpop",
+    [148] = "Abstract",
+    [149] = "Art Rock",
+    [150] = "Baroque",
+    [151] = "Bhangra",
+    [152] = "Big Beat",
+    [153] = "Breakbeat",
+    [154] = "Chillout",
+    [155] = "Downtempo",
+    [156] = "Dub",
+    [157] = "EBM",
+    [158] = "Eclectic",
+    [159] = "Electro",
+    [160] = "Electroclash",
+    [161] = "Emo",
+    [162] = "Experimental",
+    [163] = "Garage",
+    [164] = "Global",
+    [165] = "IDM",
+    [166] = "Illbient",
+    [167] = "Industro-Goth",
+    [168] = "Jam Band",
+    [169] = "Krautrock",
+    [170] = "Leftfield",
+    [171] = "Lounge",
+    [172] = "Math Rock",
+    [173] = "New Romantic",
+    [174] = "Nu-Breakz",
+    [175] = "Post-Punk",
+    [176] = "Post-Rock",
+    [177] = "Psytrance",
+    [178] = "Shoegaze",
+    [179] = "Space Rock",
+    [180] = "Trop Rock",
+    [181] = "World Music",
+    [182] = "Neoclassical",
+    [183] = "Audiobook",
+    [184] = "Audio Theatre",
+    [185] = "Neue Deutsche Welle",
+    [186] = "Podcast",
+    [187] = "Indie Rock",
+    [188] = "G-Funk",
+    [189] = "Dubstep",
+    [190] = "Garage Rock",
+    [191] = "Psybient"
 };
 
 static void get_string(AVFormatContext *s, const char *key,
diff --git a/libavformat/id3v1.h b/libavformat/id3v1.h
index d5dca35873..b3ad16df6c 100644
--- a/libavformat/id3v1.h
+++ b/libavformat/id3v1.h
@@ -26,7 +26,7 @@ 
 
 #define ID3v1_TAG_SIZE 128
 
-#define ID3v1_GENRE_MAX 147
+#define ID3v1_GENRE_MAX 191
 
 /**
  * ID3v1 genres