-
Notifications
You must be signed in to change notification settings - Fork 575
Description
Version
Media3 1.3.1
More version details
This is still in 1.3.1. I believe it was either a new issue in 1.3 or it became much worse after 1.3
Devices that reproduce the issue
Android 14, several manufacturers
Devices that do not reproduce the issue
I attached firebase screenshot.
Reproducible in the demo app?
Not tested
Reproduction steps
This happens during playlist transitions. I see it in production data and reports from users. I've definitely had it happen but can't reproduce easily or 100%
Caused by java.lang.IllegalArgumentException: sizeToOutput is not aligned to frame size: 8466
at androidx.media3.common.util.Assertions.checkArgument(Assertions.java:55)
at androidx.media3.exoplayer.audio.SilenceSkippingAudioProcessor.outputSilence(SilenceSkippingAudioProcessor.java:632)
at androidx.media3.exoplayer.audio.SilenceSkippingAudioProcessor.outputShortenedSilenceBuffer(SilenceSkippingAudioProcessor.java:471)
at androidx.media3.exoplayer.audio.SilenceSkippingAudioProcessor.onQueueEndOfStream(SilenceSkippingAudioProcessor.java:302)
at androidx.media3.common.audio.BaseAudioProcessor.queueEndOfStream(BaseAudioProcessor.java:68)
at androidx.media3.common.audio.AudioProcessingPipeline.processData(AudioProcessingPipeline.java:327)
at androidx.media3.common.audio.AudioProcessingPipeline.getOutput(AudioProcessingPipeline.java:229)
at androidx.media3.exoplayer.audio.DefaultAudioSink.processBuffers(DefaultAudioSink.java:1110)
at androidx.media3.exoplayer.audio.DefaultAudioSink.drainToEndOfStream(DefaultAudioSink.java:1139)
at androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:890)
at androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:743)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:2010)
at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:827)
at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1102)
at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:541)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loopOnce(Looper.java:224)
at android.os.Looper.loop(Looper.java:318)
at android.os.HandlerThread.run(HandlerThread.java:67)
I get this exception in production sporadically, and it causes audio to stop playback. It only happens when transitioningg from
playlist item to another. Disabling the silence skipper resolves it, so I'm fairly positive that is the cause. Here is my RendererFactory
override fun buildAudioSink(
context: Context,
enableFloatOutput: Boolean,
enableAudioTrackPlaybackParams: Boolean,
): AudioSink? {
val mySilenceSkippingProcessor = SilenceSkippingAudioProcessor(
DEFAULT_MINIMUM_SILENCE_DURATION_US * 2,
DEFAULT_PADDING_SILENCE_US * 5,
(DEFAULT_SILENCE_THRESHOLD_LEVEL / 2).toShort()
)
val chain = DefaultAudioSink.DefaultAudioProcessorChain(
emptyArray(),
mySilenceSkippingProcessor,
SonicAudioProcessor()
)
val sink = DefaultAudioSink.Builder(context)
.setEnableFloatOutput(enableFloatOutput)
.setAudioOffloadSupportProvider(DefaultAudioOffloadSupportProvider(context))
.setEnableAudioTrackPlaybackParams(enableAudioTrackPlaybackParams)
.setAudioProcessorChain(chain)
.build()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
sink.setOffloadMode(OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED)
}
return sink
}
Expected result
Exception should not be thrown, and playlist transition should occur
Actual result
Exception is thrown and playback stops
Media
My app is a podcast app. I don't have a particular audio file
Bug Report
- You will email the zip file produced by
adb bugreport
to android-media-github@google.com after filing this issue.