Audio sink error when setPreferredAudioDevice with offload mode enable
@microkatz is already working on this.
Since Aug 30, 2023.
- Dominant language
- Java
- Stars
- 3k
- Forks
- 955
- Avg merge
- 12d 14h
- Merged PRs (30d)
- 2
Description
Version
Media3 1.1.1
More version details
No response
Devices that reproduce the issue
Android SDK33
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps
- Connect the Bluetooth headset to the device.
- Enable offload mode in app.
- start playback opus media 5 seconds, then pause 1s, then use setPreferredAudioDevice(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) to switch device, then resume playback 5s, then stop.
Expected result
the media play 5s using bt-headset, pause 1s, then play 5s using speaker, then stop.
Actual result
the media play 5s using bt-headset, pause 1s, then no voice can be heard in both bt-headset and speaker for 6s(1s for pause), then stop.
When disable Offload mode, the result is as expected.
And I confirm OPUS offload playback is supported on my device.
The logcat shows Audio sink error.
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: Audio sink error
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: androidx.media3.exoplayer.audio.AudioSink$WriteException: AudioTrack write failed: -6
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.audio.DefaultAudioSink.writeBuffer(DefaultAudioSink.java:1164)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.audio.DefaultAudioSink.processBuffers(DefaultAudioSink.java:1056)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:978)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:712)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.bypassRender(MediaCodecRenderer.java:2246)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:811)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1047)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:522)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at android.os.Handler.dispatchMessage(Handler.java:102)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at android.os.Looper.loopOnce(Looper.java:205)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at android.os.Looper.loop(Looper.java:294)
08-21 18:40:26.352 7502 7547 E MediaCodecAudioRenderer: at android.os.HandlerThread.run(HandlerThread.java:67)
Media
Not applicable
Bug Report
- You will email the zip file produced by
adb bugreportto android-media-github@google.com after filing this issue.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.