-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failure to play some ogg files after updating to 2.12 #7992
Comments
Thanks for the report and the file links, I can reproduce the problem in the demo app using https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/20200915/libre-a-vous-20200915.ogg on 2.12.0 and it works on 2.11.8. I'll take a deeper look to understand what's going on here. |
I've worked out this is a regression I introduced in ce2e6e2 In This seems to only impact Ogg files that have a segment that spans across multiple pages. This doesn't generally happen with normal Vorbis or FLAC audio data (because the packets are usually pretty small), but it can easily happen with metadata if it includes album art (which the files you've provided seem to). I've sent a change to fix this - sorry for the trouble and thanks for reporting! |
When I moved ParsableByteArray#data behind a getter I replaced some assignments with calls to reset(byte[]): ce2e6e2 reset(byte[]) deliberately sets `limit` to `data.length`, in order to handle cases that were reassigning `data` but not updating `limit`. However OggPacket was already using `limit` to track where to write 'new' data into the array, so changing `limit` to `data.length` caused us to try and write new data beyond the end of the array. I looked at other uses of reset(byte[]) in ce2e6e2 and condluded the only other usage in MatroskaExtractor is legit and shouldn't be updated like this (because MatroskaExtractor previously *wasn't* correctly updating/maintaining `limit`). Issue: #7992 PiperOrigin-RevId: 334601586
When I moved ParsableByteArray#data behind a getter I replaced some assignments with calls to reset(byte[]): ce2e6e2 reset(byte[]) deliberately sets `limit` to `data.length`, in order to handle cases that were reassigning `data` but not updating `limit`. However OggPacket was already using `limit` to track where to write 'new' data into the array, so changing `limit` to `data.length` caused us to try and write new data beyond the end of the array. I looked at other uses of reset(byte[]) in ce2e6e2 and condluded the only other usage in MatroskaExtractor is legit and shouldn't be updated like this (because MatroskaExtractor previously *wasn't* correctly updating/maintaining `limit`). Issue: #7992 PiperOrigin-RevId: 334601586
The following OGG file plays properly with earlier version of EXOPlayer (v2.11.x), but now it fails with the following error when using v2.12
File: https://files.iis.aksw.org/s/QH3bzmeHRcL4XzE/download
Another file: https://media.april.org/audio/radio-cause-commune/libre-a-vous/emissions/20200915/libre-a-vous-20200915.ogg
Android version and device don't change anything here (tested on Android 9 & 11, Samsung and Pixel 3)
The text was updated successfully, but these errors were encountered: