Unable to instantiate decoder OMX.qcom.video.decoder.avc on Android KitKat

See original GitHub issue

ExoPlayer crashes when trying to start playback for an HLS Stream on KitKat. Used the demo from your repository without modifications. Test device was a Motorola Droid X with Android 4.4.4.

Here’s the full stack trace:

02-19 06:04:23.573 17306-17306/com.pocketlifestyle.streamingdemo E/dalvikvm: Could not find class 'android.media.PlaybackParams', referenced from method com.google.android.exoplayer.MediaCodecAudioTrackRenderer.handleMessage
02-19 06:04:24.351 17306-17377/com.pocketlifestyle.streamingdemo E/OMXMaster: A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
02-19 06:04:24.391 17306-17419/com.pocketlifestyle.streamingdemo E/ACodec: [OMX.qcom.video.decoder.avc] storeMetaDataInBuffers failed w/ err -2147483648
02-19 06:04:24.397 17306-17419/com.pocketlifestyle.streamingdemo E/ACodec: [OMX.qcom.video.decoder.avc] configureCodec returning error -1010
02-19 06:04:24.398 17306-17418/com.pocketlifestyle.streamingdemo E/MediaCodec: Codec reported an error. (omx error 0x80001001, internalError -1010)
02-19 06:04:24.399 17306-17377/com.pocketlifestyle.streamingdemo E/dalvikvm: Could not find class 'android.media.MediaCodec$CodecException', referenced from method com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException.getDiagnosticInfoV21
02-19 06:04:24.416 17306-17377/com.pocketlifestyle.streamingdemo E/ExoPlayerImplInternal: Internal track renderer error.
          com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(null, video/avc, -1, -1, 1500, 1500, -1, 1.0, -1, -1, null, -1, false, -1, -1)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.notifyAndThrowDecoderInitError(MediaCodecTrackRenderer.java:388)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:374)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729)
              at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479)
              at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129)
              at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
              at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
              at android.os.Handler.dispatchMessage(Handler.java:98)
              at android.os.Looper.loop(Looper.java:136)
              at android.os.HandlerThread.run(HandlerThread.java:61)
              at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
           Caused by: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(null, video/avc, -1, -1, 1500, 1500, -1, 1.0, -1, -1, null, -1, false, -1, -1)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:374) 
              at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729) 
              at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334) 
              at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496) 
              at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479) 
              at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129) 
              at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
              at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
              at android.os.Handler.dispatchMessage(Handler.java:98) 
              at android.os.Looper.loop(Looper.java:136) 
              at android.os.HandlerThread.run(HandlerThread.java:61) 
              at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 
           Caused by: java.lang.IllegalStateException
              at android.media.MediaCodec.native_configure(Native Method)
              at android.media.MediaCodec.configure(MediaCodec.java:262)
              at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.configureCodec(MediaCodecVideoTrackRenderer.java:328)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:363)
              at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729) 
              at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334) 
              at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496) 
              at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479) 
              at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129) 
              at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
              at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
              at android.os.Handler.dispatchMessage(Handler.java:98) 
              at android.os.Looper.loop(Looper.java:136) 
              at android.os.HandlerThread.run(HandlerThread.java:61) 
              at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 
02-19 06:04:24.417 17306-17306/com.pocketlifestyle.streamingdemo E/EventLogger: internalError [1.70, decoderInitializationError]
com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(null, video/avc, -1, -1, 1500, 1500, -1, 1.0, -1, -1, null, -1, false, -1, -1)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:374)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729)
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479)
    at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129)
    at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
    at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:136)
    at android.os.HandlerThread.run(HandlerThread.java:61)
    at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
 Caused by: java.lang.IllegalStateException
    at android.media.MediaCodec.native_configure(Native Method)
    at android.media.MediaCodec.configure(MediaCodec.java:262)
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.configureCodec(MediaCodecVideoTrackRenderer.java:328)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:363)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729) 
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479) 
    at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
    at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 
02-19 06:04:24.451 17306-17306/com.pocketlifestyle.streamingdemo E/EventLogger: playerFailed [1.73]
com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(null, video/avc, -1, -1, 1500, 1500, -1, 1.0, -1, -1, null, -1, false, -1, -1)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.notifyAndThrowDecoderInitError(MediaCodecTrackRenderer.java:388)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:374)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729)
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479)
    at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129)
    at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431)
    at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:136)
    at android.os.HandlerThread.run(HandlerThread.java:61)
    at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40)
 Caused by: com.google.android.exoplayer.MediaCodecTrackRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, MediaFormat(null, video/avc, -1, -1, 1500, 1500, -1, 1.0, -1, -1, null, -1, false, -1, -1)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:374) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729) 
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479) 
    at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
    at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 
 Caused by: java.lang.IllegalStateException
    at android.media.MediaCodec.native_configure(Native Method)
    at android.media.MediaCodec.configure(MediaCodec.java:262)
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.configureCodec(MediaCodecVideoTrackRenderer.java:328)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:363)
    at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:729) 
    at com.google.android.exoplayer.MediaCodecVideoTrackRenderer.onInputFormatChanged(MediaCodecVideoTrackRenderer.java:334) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:496) 
    at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:479) 
    at com.google.android.exoplayer.SampleSourceTrackRenderer.doSomeWork(SampleSourceTrackRenderer.java:129) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:431) 
    at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:213) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.os.HandlerThread.run(HandlerThread.java:61) 
    at com.google.android.exoplayer.util.PriorityHandlerThread.run(PriorityHandlerThread.java:40) 

Issue Analytics

  • State:closed
  • Created 8 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

8reactions
andrewlewiscommented, Mar 24, 2016

@CAMOBAP795 The Android M CDD (and older versions) do not require compatible devices to support playing more than one video at a time, and I don’t think there are any CTS tests that fail if using two video decoders at a time doesn’t work.

So it is not safe for apps that need to work on all Android compatible devices to rely on this feature. However, I will try to make some suggestions about using hardware codecs anyway:

  • As I mentioned above, whether you can play two videos at once can depend on the videos’ formats. The actual limitation may apply to the total macroblock rate of all decoded videos, for example.
  • In practice you will find you can play multiple videos at once on many devices, especially ‘higher end’ ones (even going back to Android K generation devices). At the moment, it appears the majority of devices running builds >= L support at least two 720p playbacks concurrently, though I’m afraid I don’t have any documentation to prove this.
  • On Android versions before L, I have seen bad device-specific failure modes when trying to create two video MediaCodecs at the same time on devices that don’t support it. For example, the device may have to be rebooted to make video work again after trying to create two video decoders, even if the app released resources correctly, or the mediaserver process may crash due to an assertion failure.
  • Android M added CodecCapabilities.getMaxSupportedInstances() which you can use as a hint, but, as documented, the number of concurrent instances may be lower depending on what resources are in use. To understand exactly what max supported instances value means, look at the CTS test for the method. (Note that this is not testing that creating > 1 decoder works – only that the max supported instances value is accurate.) See also MediaCodec.CodecException’s new constants in Android M. These API changes should make it possible to detect the capability before trying to play multiple videos and fail gracefully if it doesn’t work (note that the CTS test fails on devices which fail in any way other than ERROR_INSUFFICIENT_RESOURCE).
  • See also #273 which mentions using software codecs as an alternative.
0reactions
andrewlewiscommented, May 3, 2016

Closing due to lack of required information on the original issue.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Decoder init failed: OMX.qcom.video.decoder.avc
Are you releasing and reinitializing the player each time you move from one video to the other? If not try to do so....
Read more >
Developers - Video failing to load and play on android (ERROR
Video failing to load and play on android (ERROR: Unable to instantiate decoder OMX.qcom.video.decoder.avc)
Read more >
Why am I unable to initiate decoder OMX.qcom.video ... - Crave
Why am I unable to initiate decoder OMX.qcom.video.decoder.avc using Amazon Fire TV? ... To fix this issue unplug, Fire Stick, wait 15 seconds...
Read more >
Unable to instantiate decoder OMX.exynos.avc.dec big when ...
I get this error even with no media playing in the background. Even with rebooting the error remains [edit] Joey for Reddit 2.1.2...
Read more >
No H.264 video is displayed - unknown video color format
This happens on all videos on tagesschau.de Expected results: The video should ... I/OMXCodec( 8041): [OMX.google.h264.decoder] AVC profile = 77 (Main), ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found