-
Notifications
You must be signed in to change notification settings - Fork 6k
Description
[REQUIRED] Content description
FLAC in mp4 using DASH does not seem to work.
The same track in regular flac container works as it should.
I'm of course using the Mp4Extractor, and playing AAC in the same setup works flawlessly. I have tested with various configuration in regards to renderer, explained in the bug report section below.
[REQUIRED] Link to test content
I can probably provide if needed. Do you have any test content that should work? I tried our .mpd file in VLC on my computer, and that played as it should.
[REQUIRED] Version of ExoPlayer being used
2.10.4 forked with this change included.
[REQUIRED] Device(s) and version(s) of Android being used
Pixel 3 Android 9 and 10.
[REQUIRED] A full bug report captured from the device
Full bug report can be provided if needed.
Here are some logs from my different tries:
Using LibflacAudioRenderer: It is not fetching the dash segments, but plays without sound(time is passing, can pause, play etc) and gives me no error message.
Using default MediaCodecAudioRenderer(afaik understood from #6392 this should work because of platform decoder on Android 8.1 and above) it is fetching dash segments, but does not play like above, and I'm getting the following error:
D/CCodec: allocate(c2.android.flac.decoder)
I/Codec2Client: Available Codec2 services: "default" "software"
I/Codec2Client: Creating a Codec2 client to service "default"
I/Codec2Client: Client to Codec2 service "default" created
I/CCodec: setting up 'default' as default (vendor) store
I/Codec2Client: Creating a Codec2 client to service "default"
I/Codec2Client: Client to Codec2 service "default" created
E/Codec2Client: createComponent(c2.android.flac.decoder) -- call failed: NOT_FOUND.
I/Codec2Client: Creating a Codec2 client to service "software"
I/Codec2Client: Client to Codec2 service "software" created
I/CCodec: Created component [c2.android.flac.decoder]
D/CCodecConfig: read media type: audio/flac
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values
D/ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values
I/CCodecConfig: query failed after returning 8 values (BAD_INDEX)
D/CCodecConfig: c2 config is Dict {
c2::u32 coded.bitrate.value = 768000
c2::u32 input.buffers.max-size.value = 32768
c2::u32 input.delay.value = 0
string input.media-type.value = "audio/flac"
string output.media-type.value = "audio/raw"
c2::u32 raw.channel-count.value = 1
c2::u32 raw.pcm-encoding.value = 0
c2::u32 raw.sample-rate.value = 44100
}
D/CCodecConfig: c2 config is Dict {
c2::u32 coded.bitrate.value = 768000
c2::u32 input.buffers.max-size.value = 32768
c2::u32 input.delay.value = 0
string input.media-type.value = "audio/flac"
string output.media-type.value = "audio/raw"
c2::u32 raw.channel-count.value = 2
c2::u32 raw.pcm-encoding.value = 0
c2::u32 raw.sample-rate.value = 44100
}
W/Codec2Client: query -- param skipped: index = 1107298332.
D/CCodec: setup formats input: AMessage(what = 0x00000000) = {
int32_t channel-count = 2
int32_t max-input-size = 32768
string mime = "audio/flac"
int32_t pcm-encoding = 2
int32_t sample-rate = 44100
} and output: AMessage(what = 0x00000000) = {
int32_t channel-count = 2
string mime = "audio/raw"
int32_t pcm-encoding = 2
int32_t sample-rate = 44100
}
W/Codec2Client: query -- param skipped: index = 1342179345.
W/Codec2Client: query -- param skipped: index = 2415921170.
D/CCodecBufferChannel: [c2.android.flac.decoder#18] Created input block pool with allocatorID 16 => poolID 17 - OK (0)
I/CCodecBufferChannel: [c2.android.flac.decoder#18] Created output block pool with allocatorID 16 => poolID 116 - OK
D/CCodecBufferChannel: [c2.android.flac.decoder#18] Configured output block pool ids 116 => OK
E/ion: ioctl c0044901 failed with code -1: Invalid argument
D/CCodecBufferChannel: [c2.android.flac.decoder#18] work failed to complete: 14
E/MediaCodec: Codec reported err 0xe, actionCode 0, while in state 6
D/CCodecBufferChannel: [c2.android.flac.decoder#18] work failed to complete: 22
E/MediaCodec: Codec reported err 0x16, actionCode 0, while in state 0
E/ExoPlayerImplInternal: Internal runtime error.
java.lang.IllegalStateException
at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1437)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:653)
at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:575)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:326)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
W/System.err: com.google.android.exoplayer2.ExoPlaybackException: java.lang.IllegalStateException
W/System.err: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:397)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:103)
W/System.err: at android.os.Looper.loop(Looper.java:214)
W/System.err: at android.os.HandlerThread.run(HandlerThread.java:67)
W/System.err: Caused by: java.lang.IllegalStateException
E/ExoPlayerImplInternal: Disable failed.
java.lang.IllegalStateException
at android.media.MediaCodec.native_flush(Native Method)
at android.media.MediaCodec.flush(MediaCodec.java:2194)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:702)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:580)
at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onDisabled(MediaCodecAudioRenderer.java:625)
at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:158)
at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1088)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:851)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:813)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:399)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
W/System.err: at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
W/System.err: at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2789)
W/System.err: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1437)
W/System.err: at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:653)
W/System.err: at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:575)
W/System.err: at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:326)
W/System.err: ... 3 more
E/ExoPlayerImplInternal: Reset failed.
java.lang.IllegalStateException
at android.media.MediaCodec.native_stop(Native Method)
at android.media.MediaCodec.stop(MediaCodec.java:2147)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.releaseCodec(MediaCodecRenderer.java:609)
at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onReset(MediaCodecRenderer.java:587)
at com.google.android.exoplayer2.audio.MediaCodecAudioRenderer.onReset(MediaCodecAudioRenderer.java:635)
at com.google.android.exoplayer2.BaseRenderer.reset(BaseRenderer.java:164)
at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:860)
at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:813)
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:399)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
I/ExoPlayerImpl: Release 5e5c6b5 [ExoPlayerLib/2.10.4] [blueline, Pixel 3, Google, 29] [goog.exo.core, goog.exo.dash, goog.exo.okhttp]