Skip to content

media with id3v2.4 headers does not play #5673

@PaulWoitaschek

Description

@PaulWoitaschek

[REQUIRED] Content description

I have a bug report where a media file does not play when id3 v2.4 headers are set.

The original report is here:
PaulWoitaschek/Voice#858
Problematic media is attached there too.

The error log is:

E/ExoPlayerImplInternal: Source error.
    com.google.android.exoplayer2.upstream.Loader$UnexpectedLoaderException: Unexpected IllegalStateException: Top bit not zero: -16711852
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:403)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:914)
     Caused by: java.lang.IllegalStateException: Top bit not zero: -16711852
        at com.google.android.exoplayer2.util.ParsableByteArray.readUnsignedIntToInt(ParsableByteArray.java:397)
        at com.google.android.exoplayer2.metadata.id3.Id3Decoder.decodeFrame(Id3Decoder.java:284)
        at com.google.android.exoplayer2.metadata.id3.Id3Decoder.decodeChapterFrame(Id3Decoder.java:614)
        at com.google.android.exoplayer2.metadata.id3.Id3Decoder.decodeFrame(Id3Decoder.java:381)
        at com.google.android.exoplayer2.metadata.id3.Id3Decoder.decode(Id3Decoder.java:143)
        at com.google.android.exoplayer2.extractor.Id3Peeker.peekId3Data(Id3Peeker.java:75)
        at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.synchronize(Mp3Extractor.java:278)
        at com.google.android.exoplayer2.extractor.mp3.Mp3Extractor.sniff(Mp3Extractor.java:152)
        at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractorHolder.selectExtractor(ExtractorMediaPeriod.java:961)
        at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:891)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:914) 

[REQUIRED] Link to test content

PaulWoitaschek/Voice#858 (comment)

[REQUIRED] Version of ExoPlayer being used

2.9,4, 2.9.6

[REQUIRED] Device(s) and version(s) of Android being used

Pixel with Android O, but also happening on other devices

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions