ExoPlayer
ExoPlayer copied to clipboard
Codec error
When trying to play some live HLS streams, all of which play fine via MediaPlayer/VideoView, I find many now throw a CodecError when trying to load the stream.
The streams themselves are all encoded using the same bitrate/codec settings and should in theory play fine. Interestinglly, on my XPeria Z2 the streams all play fine, but on Galaxy SIII and Nexus 7 they fall over.
Here is the logcat:
09-17 17:04:07.815: D/HLSSampleSource(20548): found ptsOffset=441320889 09-17 17:04:07.815: I/TVPlayer ExoPlayer: playWhenReady=true, playbackState=buffering 09-17 17:04:07.815: D/EventLogger(20548): state [9.36, true, B] 09-17 17:04:07.825: I/OMXClient(20548): Using client-side OMX mux. 09-17 17:04:07.835: E/ACodec(20548): ## 3d, eNativeColorFormat 0x15 09-17 17:04:07.835: E/ACodec(20548): ## 3d, eNativeColorFormat 0x105 09-17 17:04:08.075: I/OMXClient(20548): Using client-side OMX mux. 09-17 17:04:08.080: E/ACodec(20548): ## 3d, eNativeColorFormat 0x15 09-17 17:04:08.080: E/ACodec(20548): ## 3d, eNativeColorFormat 0x105 09-17 17:04:08.090: I/OMXClient(20548): Using client-side OMX mux. 09-17 17:04:08.125: D/HLSSampleSource(20548): remember variantPlaylist (38766 - 38771) lastKnownSequence=38771 0 09-17 17:04:08.295: I/OMXClient(20548): Using client-side OMX mux. 09-17 17:04:08.325: I/Reverb(20548): getpid() 20548, IPCThreadState::self()->getCallingPid() 20548 09-17 17:04:08.325: E/MediaCodecAudioTrackRenderer(20548): Discontinuity detected [expected 23219, got -532085] 09-17 17:04:08.390: E/ACodec(20548): [OMX.SEC.avc.dec] ERROR(0x90000004) 09-17 17:04:08.390: E/MediaCodec(20548): Codec reported an error. (omx error 0x90000004, internalError -2147483648) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): Internal runtime error. 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): java.lang.IllegalStateException 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at android.media.MediaCodec.dequeueOutputBuffer(Native Method) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:733) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:392) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:407) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at android.os.Handler.dispatchMessage(Handler.java:95) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at android.os.Looper.loop(Looper.java:176) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at android.os.HandlerThread.run(HandlerThread.java:61) 09-17 17:04:08.395: E/ExoPlayerImplInternal(20548): at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109) 09-17 17:04:08.395: W/System.err(20548): com.google.android.exoplayer.ExoPlaybackException: java.lang.IllegalStateException 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:236) 09-17 17:04:08.395: W/System.err(20548): at android.os.Handler.dispatchMessage(Handler.java:95) 09-17 17:04:08.395: W/System.err(20548): at android.os.Looper.loop(Looper.java:176) 09-17 17:04:08.395: W/System.err(20548): at android.os.HandlerThread.run(HandlerThread.java:61) 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109) 09-17 17:04:08.395: W/System.err(20548): Caused by: java.lang.IllegalStateException 09-17 17:04:08.395: W/System.err(20548): at android.media.MediaCodec.dequeueOutputBuffer(Native Method) 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:733) 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:392) 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:407) 09-17 17:04:08.395: W/System.err(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203) 09-17 17:04:08.395: W/System.err(20548): ... 4 more 09-17 17:04:08.395: I/TVPlayer ExoPlayer: playWhenReady=true, playbackState=preparing 09-17 17:04:08.395: D/EventLogger(20548): state [9.94, true, P] 09-17 17:04:08.395: V/HLSSampleSource(20548): maxMemoryMB= 256, maxBufferSize=25165824 09-17 17:04:08.400: I/TVPlayer ExoPlayer: playWhenReady=true, playbackState=buffering 09-17 17:04:08.400: D/EventLogger(20548): state [9.94, true, B] 09-17 17:04:08.400: E/EventLogger(20548): playerFailed [9.94] 09-17 17:04:08.400: E/EventLogger(20548): com.google.android.exoplayer.ExoPlaybackException: java.lang.IllegalStateException 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:236) 09-17 17:04:08.400: E/EventLogger(20548): at android.os.Handler.dispatchMessage(Handler.java:95) 09-17 17:04:08.400: E/EventLogger(20548): at android.os.Looper.loop(Looper.java:176) 09-17 17:04:08.400: E/EventLogger(20548): at android.os.HandlerThread.run(HandlerThread.java:61) 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(ExoPlayerImplInternal.java:109) 09-17 17:04:08.400: E/EventLogger(20548): Caused by: java.lang.IllegalStateException 09-17 17:04:08.400: E/EventLogger(20548): at android.media.MediaCodec.dequeueOutputBuffer(Native Method) 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(MediaCodecTrackRenderer.java:733) 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:392) 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:407) 09-17 17:04:08.400: E/EventLogger(20548): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:203) 09-17 17:04:08.400: E/EventLogger(20548): ... 4 more 09-17 17:04:08.470: E/ACodec(20548): [OMX.SEC.avc.dec] ERROR(0x90000004) 09-17 17:04:08.475: E/MediaCodec(20548): Codec reported an error. (omx error 0x90000004, internalError -2147483648) 09-17 17:04:08.525: I/TVPlayer ExoPlayer: playWhenReady=true, playbackState=idle
Can you share the stream ?
Not easily. I can't post it in public, and even if I PM it to you, it will only be active for 5 minutes due to stream security.
This is the Logcat I'm getting at the oment
09-19 16:17:35.689: I/MFC_DEC_APP(1942): [SsbSipMfcDecOpen] MFC Library Ver 1.00 09-19 16:17:35.689: I/OMXClient(7596): Using client-side OMX mux. 09-19 16:17:35.864: E/(1942): android::HardwareConverter::HardwareConverter():: FIMC3 is used for OMX CSC 09-19 16:17:35.864: I/libfimc(1942): bool SecFimc::create(SecFimc::FIMC_DEV, fimc_overlay_mode, unsigned int):: /dev/video3 reserved memory addr(0xffffffea), size(0x 0KB) 09-19 16:17:35.869: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(1) -> Dest(2) 09-19 16:17:35.869: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(3) 09-19 16:17:35.869: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(1) -> Dest(2) 09-19 16:17:35.874: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(3) 09-19 16:17:35.874: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(3) -> Dest(2) 09-19 16:17:35.879: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(1) 09-19 16:17:35.879: I/OMXClient(7596): Using client-side OMX mux. 09-19 16:17:35.884: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(1) -> Dest(2) 09-19 16:17:35.884: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(3) 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 0, format 0, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 0, format 0, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 0, format 0, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 0, format 0, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 0, format 0, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() stream 3, samplingRate 44100, format 1, channelMask 3, flags 0 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutputsForDevice device 0002 -> 0002 09-19 16:17:35.894: V/AudioPolicyManagerBase(1942): getOutput() returns output 2 09-19 16:17:35.899: I/Reverb(7596): getpid() 7596, IPCThreadState::self()->getCallingPid() 7596 09-19 16:17:35.964: E/MFC_DEC_APP(1942): SsbSipMfcDecInit] IOCTL_MFC_DEC_INIT failed 09-19 16:17:35.964: E/SEC_H264_DEC(1942): SsbSipMfcDecInit() failed! 09-19 16:17:35.964: E/ACodec(7596): [OMX.SEC.avc.dec] ERROR(0x90000004) 09-19 16:17:35.964: E/MediaCodec(7596): Codec reported an error. (omx error 0x90000004, internalError -2147483648) 09-19 16:17:35.969: W/System.err(7596): com.google.android.exoplayer.ExoPlaybackException: java.lang.IllegalStateException 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(:235) 09-19 16:17:35.969: W/System.err(7596): at android.os.Handler.dispatchMessage(Handler.java:95) 09-19 16:17:35.969: W/System.err(7596): at android.os.Looper.loop(Looper.java:176) 09-19 16:17:35.969: W/System.err(7596): at android.os.HandlerThread.run(HandlerThread.java:61) 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.ExoPlayerImplInternal$1.run(:109) 09-19 16:17:35.969: W/System.err(7596): Caused by: java.lang.IllegalStateException 09-19 16:17:35.969: W/System.err(7596): at android.media.MediaCodec.dequeueOutputBuffer(Native Method) 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.MediaCodecTrackRenderer.drainOutputBuffer(:733) 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(:392) 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(:407) 09-19 16:17:35.969: W/System.err(7596): at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(:203) 09-19 16:17:35.969: W/System.err(7596): ... 4 more 09-19 16:17:36.044: E/MFC_DEC_APP(1942): SsbSipMfcDecInit] IOCTL_MFC_DEC_INIT failed 09-19 16:17:36.044: E/SEC_H264_DEC(1942): SsbSipMfcDecInit() failed! 09-19 16:17:36.049: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(3) -> Dest(2) 09-19 16:17:36.049: E/ACodec(7596): [OMX.SEC.avc.dec] ERROR(0x90000004) 09-19 16:17:36.049: E/MediaCodec(7596): Codec reported an error. (omx error 0x90000004, internalError -2147483648) 09-19 16:17:36.079: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(1) 09-19 16:17:36.084: D/OMX(1942): SendBroadCasting VIDEO_PLAYBACK_STOP 09-19 16:17:36.089: D/WFDService(2345): intent recieved android.intent.action.VIDEO_PLAYBACK_STOP 09-19 16:17:36.089: E/WFDService(2345): FHD : android.intent.action.VIDEO_PLAYBACK_STOP 09-19 16:17:36.089: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(3) -> Dest(2) 09-19 16:17:36.104: I/SEC_BASE_COMP(1942): SEC_OMX_ComponentStateSet: Cur(2) -> Dest(1) 09-19 16:17:36.109: V/AudioPolicyManagerBase(1942): releaseOutput() 2