Skip to content

Getting IllegalStateException for Xiaomi devices, works when codecNeedsSetOutputSurfaceWorkaround set to true. #5169

@ankitkhare

Description

@ankitkhare

Issue Description

On Xiaomi devices getting IllegalStateException for XiaomiTv devices. Here is the stacktrace

E/ExoPlayerImplInternal: Internal runtime error.
    java.lang.IllegalArgumentException
        at android.media.MediaCodec.native_setSurface(Native Method)
        at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1962)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1023)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:435)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:401)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:958)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:929)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:911)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:366)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65)

Steps to reproduce

  1. Play any video(in Exoplayer demo as well) and do backpress, you will get the exception.

Device Info

Decoder Name Manufacturer Model Api Level
OMX.amlogic.avc.decoder.awesome Xiaomi MiTV-AXSO0 27

Exoplayer Version

2.8.2 and above.

Worked when set the following in codecNeedsSetOutputSurfaceWorkaround

protected boolean codecNeedsSetOutputSurfaceWorkaround(String name) {
      //Xiaomi devices needs workaround
    if(name.equalsIgnoreCase("OMX.amlogic.avc.decoder.awesome")){
      return  true;
    }
}

As I can see for API 27 false is returned but this is happening on API 27.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions