Skip to content

Commit

Permalink
Add ID3 TCON genre to MP3 test samples
Browse files Browse the repository at this point in the history
This change adds a 'free-form' text genre to the existing
`bear-id3.mp3` sample, and adds a new sample with a 'numeric' genre ([9
is Metal](https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.4.0-frames.html#appendix-a-genre-list-from-id3v1)).

The samples were modified with:

```shell
$ id3edit --set-genre "Gorpcore" bear-id3.mp3
$ id3edit --set-genre "9" bear-id3-numeric-genre.mp3
```

Reading the numeric genre with `exiftool` shows the mapping back to
'Metal':

```
$ exiftool bear-id3-numeric-genre.mp3 | grep Genre
Genre                           : Metal
```

The playback dumps don't contain the genre because it's not yet
propagated to `MediaMetadata.genre`. That is done in a follow-up
change.

Issue: #1305
PiperOrigin-RevId: 629043506
  • Loading branch information
icbaker authored and Copybara-Service committed Apr 29, 2024
1 parent d292f80 commit b0e4817
Show file tree
Hide file tree
Showing 20 changed files with 2,768 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public static ImmutableList<String> mediaSamples() {
"bear-cbr-constant-frame-size-no-seek-table.mp3",
"bear-cbr-variable-frame-size-no-seek-table.mp3",
"bear-id3.mp3",
"bear-id3-numeric-genre.mp3",
"bear-vbr-no-seek-table.mp3",
"bear-vbr-xing-header.mp3",
"play-trimmed.mp3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,10 @@ public void mp3SampleWithId3Disabled() throws Exception {
.build(),
simulationConfig);
}

@Test
public void mp3SampleWithId3NumericGenre() throws Exception {
ExtractorAsserts.assertBehavior(
Mp3Extractor::new, "media/mp3/bear-id3-numeric-genre.mp3", simulationConfig);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 38160
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 25344
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 12624
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 38160
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 38160
Expand All @@ -16,7 +16,7 @@ track 0:
sampleRate = 48000
encoderDelay = 576
encoderPadding = 576
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description]
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]]
sample 0:
time = 0
flags = 1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 25344
Expand All @@ -16,7 +16,7 @@ track 0:
sampleRate = 48000
encoderDelay = 576
encoderPadding = 576
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description]
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]]
sample 0:
time = 943000
flags = 1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 12624
Expand All @@ -16,7 +16,7 @@ track 0:
sampleRate = 48000
encoderDelay = 576
encoderPadding = 576
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description]
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]]
sample 0:
time = 1879000
flags = 1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 0
Expand All @@ -16,5 +16,5 @@ track 0:
sampleRate = 48000
encoderDelay = 576
encoderPadding = 576
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description]
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]]
tracksEnded = true
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
seekMap:
isSeekable = true
duration = 2808000
getPosition(0) = [[timeUs=0, position=39740]]
getPosition(1) = [[timeUs=0, position=39740]]
getPosition(1404000) = [[timeUs=1404000, position=58820]]
getPosition(2808000) = [[timeUs=2808000, position=77900]]
getPosition(0) = [[timeUs=0, position=39743]]
getPosition(1) = [[timeUs=0, position=39743]]
getPosition(1404000) = [[timeUs=1404000, position=58823]]
getPosition(2808000) = [[timeUs=2808000, position=77903]]
numberOfTracks = 1
track 0:
total output bytes = 38160
Expand All @@ -16,7 +16,7 @@ track 0:
sampleRate = 48000
encoderDelay = 576
encoderPadding = 576
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description]
metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]]
sample 0:
time = 0
flags = 1
Expand Down
Loading

0 comments on commit b0e4817

Please sign in to comment.