Skip to content

MediaCodecAudioRenderer use UnmodifiableCollection.addAll() if format is AUDIO_E_AC3_JOC #6398

@tateisu

Description

@tateisu

[REQUIRED] Issue description

If stream is AUDIO_E_AC3_JOC, MediaCodecAudioRenderer use UnmodifiableCollection.addAll() and it raises error because it's Unmodifiable.

[REQUIRED] Reproduction steps

Playing media that contains "audio/eac3-joc" stream.

[REQUIRED] Link to test content

Sorry, I'm considering to my boss about use of test data.
But I believe this bug can be detect in the code.
https://github.com/google/ExoPlayer/blob/release-v2/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java#L375

[REQUIRED] A full bug report captured from the device

 E/ExoPlayerImplInternal: Internal runtime error.
    java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableCollection.addAll(Collections.java:1107)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.getDecoderInfos(MediaCodecAudioRenderer.java:375)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.getAvailableCodecInfos(MediaCodecRenderer.java:807)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:748)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:510)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.reinitializeCodec(MediaCodecRenderer.java:1640)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainAndReinitializeCodec(MediaCodecRenderer.java:1411)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1206)
        at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onInputFormatChanged(MediaCodecAudioRenderer.java:470)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:733)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:644)

[REQUIRED] Version of ExoPlayer being used

I use 'com.google.android.exoplayer:exoplayer:2.10.4'

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

Galaxy S10+(Japan), Android 9

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions