[BUG?] Google Pixel 7 fails to direct play HEVC files

Server Version#: 1.32.8.7639
Player Version#: 10.8.0.5554 (86193d4)

I have a media library mainly composed of HEVC 8bit files which can be played almost anywhere without the need for transcoding. However, when trying to open one such file on my phone (Google Pixel 7), the native decoder fails and Plex player resorts to transcoding to h264. The other android player to which I have access doesn’t behave in this way and directs play any HEVC file I throw at it. When looking at the logs from the Plex app on my phone I found some kind of error (around line 1255 in the android log), but I don’t know if anything can be done about it. I have attached all logs at the end, but the interesting part should be this:

02-06 23:07:39.232  e: [ExoPlayer][MediaCodecVideoRenderer] Video codec error
  android.media.MediaCodec$CodecException: Error 0xe

02-06 23:07:39.235  e: [ExoPlayer][ExoPlayerImplInternal] Playback error
  androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=1, format=Format(0, null, null, video/hevc, hevc, -1, null, [1912, 816, 24.0, null], [-1, -1]), format_supported=YES
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:370)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loopOnce(Looper.java:205)
      at android.os.Looper.loop(Looper.java:294)
      at android.os.HandlerThread.run(HandlerThread.java:67)
  Caused by: androidx.media3.exoplayer.video.MediaCodecVideoDecoderException: Decoder failed: c2.exynos.hevc.decoder
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.createDecoderException(SourceFile:5)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(SourceFile:154)
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(SourceFile:1)
      at mh.q.render(SourceFile:1)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(SourceFile:98)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:226)
      ... 4 more
  Caused by: android.media.MediaCodec$CodecException: Error 0xe

02-06 23:07:39.236  e: [ExoPlayer][ExoPlayerImplInternal] Disable failed.
  java.lang.IllegalStateException: flush() is valid only at Executing states; currently at Released state
  
      at android.media.MediaCodec.native_flush(Native Method)
      at android.media.MediaCodec.flush(MediaCodec.java:2504)
      at androidx.media3.exoplayer.mediacodec.AsynchronousMediaCodecAdapter.flush(SourceFile:8)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushCodec(SourceFile:3)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(SourceFile:67)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.onDisabled(SourceFile:14)
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.onDisabled(SourceFile:13)
      at androidx.media3.exoplayer.BaseRenderer.disable(SourceFile:26)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.disableRenderer(SourceFile:16)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.resetInternal(SourceFile:37)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.stopInternal(SourceFile:13)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:481)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loopOnce(Looper.java:205)
      at android.os.Looper.loop(Looper.java:294)
      at android.os.HandlerThread.run(HandlerThread.java:67)

02-06 23:07:39.237  i: [ExoPlayer][EventLogger] videoDisabled [eventTime=0.80, mediaPos=0.00, window=0, period=0]
02-06 23:07:39.240  i: [ExoPlayer][EventLogger] videoSize [eventTime=0.80, mediaPos=0.00, window=0, period=0, 0, 0]
02-06 23:07:39.241  i: [ASS][Renderer] Renderer thread being stopped due to renderer disabled.
02-06 23:07:39.241  i: [ASS][Renderer] Renderer stopped successfully.
02-06 23:07:39.242  w: [Player][ExoPlayer] Video size changed to something undefined: 0/0
02-06 23:07:39.242  i: [FFmpeg] [INFO] [ASS][Decoder] Releasing decoder.
02-06 23:07:39.243  i: [ASS][Renderer] Disabled renderer.
02-06 23:07:39.243  i: [FFmpeg] [INFO] [ASS][Decoder] Released decoder successfully.
02-06 23:07:39.244  i: [ExoPlayer][EventLogger] audioDisabled [eventTime=0.81, mediaPos=0.00, window=0, period=0]
02-06 23:07:39.252  i: [LoadControl] Setting buffer size to 73,19 MB / 0 seconds.
02-06 23:07:39.256  i: [ExoPlayer][EventLogger] timeline [eventTime=0.82, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
02-06 23:07:39.256  i: [ExoPlayer][EventLogger]   period [2420.01]
02-06 23:07:39.257  i: [ExoPlayer][EventLogger]   window [2420.01, seekable=true, dynamic=false]
02-06 23:07:39.257  i: [ExoPlayer][EventLogger] ]
02-06 23:07:39.257  i: [Player][ExoPlayer] onTimelineChanged (Position: 0 ms, Duration: 2420010 ms)
02-06 23:07:39.259  e: [ExoPlayer][EventLogger] playerFailed [eventTime=0.82, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DECODING_FAILED
  androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=1, format=Format(0, null, null, video/hevc, hevc, -1, null, [1912, 816, 24.0, null], [-1, -1]), format_supported=YES
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:370)
      at android.os.Handler.dispatchMessage(Handler.java:102)
      at android.os.Looper.loopOnce(Looper.java:205)
      at android.os.Looper.loop(Looper.java:294)
      at android.os.HandlerThread.run(HandlerThread.java:67)
  Caused by: androidx.media3.exoplayer.video.MediaCodecVideoDecoderException: Decoder failed: c2.exynos.hevc.decoder
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.createDecoderException(SourceFile:5)
      at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(SourceFile:154)
      at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(SourceFile:1)
      at mh.q.render(SourceFile:1)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(SourceFile:98)
      at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:226)
      ... 4 more
  Caused by: android.media.MediaCodec$CodecException: Error 0xe
]
02-06 23:07:39.260  e: [Player][ExoPlayer] Playback error detected
02-06 23:07:39.261  e: An exception occurred: androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=1, format=Format(0, null, null, video/hevc, hevc, -1, null, [1912, 816, 24.0, null], [-1, -1]), format_supported=YES
02-06 23:07:39.262  e: Stacktrace: androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=1, format=Format(0, null, null, video/hevc, hevc, -1, null, [1912, 816, 24.0, null], [-1, -1]), format_supported=YES
	at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:370)
	at android.os.Handler.dispatchMessage(Handler.java:102)
	at android.os.Looper.loopOnce(Looper.java:205)
	at android.os.Looper.loop(Looper.java:294)
	at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: androidx.media3.exoplayer.video.MediaCodecVideoDecoderException: Decoder failed: c2.exynos.hevc.decoder
	at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.createDecoderException(SourceFile:5)
	at androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(SourceFile:154)
	at androidx.media3.exoplayer.video.MediaCodecVideoRenderer.render(SourceFile:1)
	at mh.q.render(SourceFile:1)
	at androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(SourceFile:98)
	at androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(SourceFile:226)
	... 4 more
Caused by: android.media.MediaCodec$CodecException: Error 0xe

02-06 23:07:39.262  i: [Player][Timeline] Handling player error
02-06 23:07:39.263  i: [Player][Timeline] Playback stopped (error: true)
02-06 23:07:39.263  i: [Player][Timeline] Player error not known by server, reporting original player error (or a playback interrupted one)
02-06 23:07:39.263  i: [Player] Error reported: UnknownError (null)
02-06 23:07:39.263  i: [Player][Timeline] Playback stopped (error: false)
02-06 23:07:39.265  i: [TranscodeSession] Direct Play
02-06 23:07:39.280  i: [TranscodeFallbackBehaviour] Detected direct play failed, falling back to transcode (starting: true)

It looks like the native decoder fails for some error (0xe?) so the player resorts to transcoding to h264. Does anyone know what the reason could be or how to fix it?

plex_log.zip (264.3 KB)

Update: As I said, my library is mostly 1080p HEVC 8bit files. I tried a 4k 10bit video just to see what would happen and that went straight into direct play on my phone. It looks like it might be an issue with the Exynos HEVC 8bit decoder.

I have the exact error on my S24+, I even checked my S21 that was already wiped out, as I thought that could be a S24 issue, but, both fail to play some 1080 HEVC (both are exynos), but plays just fine any 4K or 4K HDR HEVC.
Copying the same file and playing in another app, it plays fine.

Yes, it’s exactly that. It looks like the vast majority of 1080 HEVC (8bit) files simply fail to direct play in the Plex app. Opening the files directly as well as playing 4k 10bit files have no issue. It might be something Exynos related in the player that Plex uses

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.