GrapheneOS / os-issue-tracker

Issue tracker for GrapheneOS Android Open Source Project hardening work. Standalone projects like Auditor, AttestationServer and hardened_malloc have their own dedicated trackers.
https://grapheneos.org/
361 stars 21 forks source link

Plex compatibility issue with some content. #3406

Closed BloodBlight closed 1 month ago

BloodBlight commented 7 months ago

Normally I would open a ticket with Plex on this, but it seems to be limited to GrapheneOS (GOS), so I am starting here.

When I try to play some formats of videos in Plex I get an error "An error occurred while attempting to play this video". It seems to happen on some HEVC content, but I haven't really found a good pattern. 4K HDR, No problem, some random content from a while back, has an issue.

This is all direct playback and have tried pulling it local, same issue. If I force it to trans-code, everything works perfectly.

My other phones (OnePlus 7 Pro, and S23) plays all of this content perfectly with direct play and local downloads.

What I have tried.

What I did NOT try.

The audio codec is A/52 C (ada E-AC3), this seem fairly standard, so IDK if that is part of the issue, or if not having sound is a different problem. The video is H265, Planar 4:2:9 YUV 10-bit LE.

I did an adb logcat and tried to narrow the entries to the exact moment of the error, this is what I got:

04-05 20:15:56.188   914 28304 I ddpdec_client_joc: ddpdec_open JOCD_MODE Buffer assignment
04-05 20:15:56.188   914 28304 D C2SoftDdpDec: mStarted = 1
04-05 20:15:56.188   914 28304 I C2SoftDdpDec: <- start
04-05 20:15:56.189   582  4882 W gralloc4: Unable to set buffer name SurfaceView[com.plexapp.android/com.plexapp.player.PlayerActivity]#74(BLAST Consumer)74: File name too long
04-05 20:15:56.189  7047 28303 W Codec2Client: query -- param skipped: index = 1342179345.
04-05 20:15:56.189  7047 28303 W Codec2Client: query -- param skipped: index = 2415921170.
04-05 20:15:56.189  7047 28303 W Codec2Client: query -- param skipped: index = 1610614798.
04-05 20:15:56.190  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] Created input block pool with allocatorID 16 => poolID 42 - OK (0)
04-05 20:15:56.194  7047 28303 I CCodecBufferChannel: [c2.dolby.eac3.decoder#49] Created output block pool with allocatorID 16 => poolID 57 - OK
04-05 20:15:56.194  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] Configured output block pool ids 57 => OK
04-05 20:15:56.195   582  4882 W gralloc4: Unable to set buffer name SurfaceView[com.plexapp.android/com.plexapp.player.PlayerActivity]#74(BLAST Consumer)74: File name too long
04-05 20:15:56.196   914 28304 D SimpleC2Component: Using output block pool with poolID 57 => got 57 - 0
04-05 20:15:56.197   582  4882 W gralloc4: Unable to set buffer name SurfaceView[com.plexapp.android/com.plexapp.player.PlayerActivity]#74(BLAST Consumer)74: File name too long
04-05 20:15:56.201   582  4882 W gralloc4: Unable to set buffer name SurfaceView[com.plexapp.android/com.plexapp.player.PlayerActivity]#74(BLAST Consumer)74: File name too long
04-05 20:15:56.205   582  4882 W gralloc4: Unable to set buffer name SurfaceView[com.plexapp.android/com.plexapp.player.PlayerActivity]#74(BLAST Consumer)74: File name too long
04-05 20:15:56.206   914 28304 D ddpdec_client_joc: ddpdec_client.c|int configDecoder()
04-05 20:15:56.207   914 28304 E ddpdec_client_joc: ddpdec_process unsupportted DDP-JOC frame
04-05 20:15:56.207   914 28304 E C2SoftDdpDec: unsupported DDP-JOC frame
04-05 20:15:56.209  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] work failed to complete: 14
04-05 20:15:56.210  7047 28303 E MediaCodec: Codec reported err 0xe/14 (Unknown error -14), actionCode 0, while in state 6/STARTED
04-05 20:15:56.211  7047 28265 E MediaCodec: getBufferAndFormat - invalid operation (the index 0 is not owned by client)
04-05 20:15:56.211  7047 28265 E MediaCodec: index 0 is not owned by client
04-05 20:15:56.212  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] work failed to complete: 22
04-05 20:15:56.212  7047 28303 E MediaCodec: Codec reported err 0x16/22 (Unknown error -22), actionCode 0, while in state 0/UNINITIALIZED
04-05 20:15:56.212  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] work failed to complete: 22
04-05 20:15:56.213  7047 28303 E MediaCodec: Codec reported err 0x16/22 (Unknown error -22), actionCode 0, while in state 0/UNINITIALIZED
04-05 20:15:56.214  7047 28265 D MediaCodec: keep callback message for reclaim
04-05 20:15:56.214  7047 28292 I CCodecConfig: query failed after returning 17 values (BAD_INDEX)
04-05 20:15:56.216  7047 28292 D CCodecConfig: c2 config diff is   c2::u32 raw.crop.height = 1080
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::u32 raw.crop.left = 0
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::u32 raw.crop.top = 0
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::u32 raw.crop.width = 1920
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.blue.x = 0.131
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.blue.y = 0.046
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.green.x = 0.17
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.green.y = 0.797
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.max-luminance = 1000
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.red.x = 0.708
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.red.y = 0.292
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.white.x = 0.3127
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.mastering.white.y = 0.329
04-05 20:15:56.216  7047 28292 D CCodecConfig:   c2::float raw.hdr-static-info.max-fall = 65536
04-05 20:15:56.220  7047 28292 D CCodecConfig: found invalid HDR static metadata AMessage(what = 0x00000000) = {
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t android._color-format = 2130708361
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t android._video-scaling = 1
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.green.y = 0.797000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t color-standard = 1
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t color-range = 2
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t color-transfer = 3
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.red.y = 0.292000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t width = 1920
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.white.y = 0.329000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.white.x = 0.312700
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float cta861.max-cll = 0.000000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float cta861.max-fall = 65536.000000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.max-luminance = 1000.000000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.min-luminance = 0.000000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           Rect crop(0, 0, 1919, 1079)
04-05 20:15:56.220  7047 28292 D CCodecConfig:           float smpte2086.red.x = 0.708000
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t height = 1080
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t max-height = 1080
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t max-width = 1920
04-05 20:15:56.220  7047 28292 D CCodecConfig:           string mime = "video/raw"
04-05 20:15:56.220  7047 28292 D CCodecConfig:           Buffer output.hdr-dynamic-info.data = {
04-05 20:15:56.220  7047 28292 D CCodecConfig:           }
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32_t output.hdr-dynamic-info.type = 1
04-05 20:15:56.220  7047 28292 D CCodecConfig:           int32
04-05 20:15:56.224  7047 28292 W Codec2Client: query -- param skipped: index = 1073743886.
04-05 20:15:56.225  7047 28292 W Codec2Client: query -- param skipped: index = 1610614798.
04-05 20:15:56.225  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.226  7047 28303 E MediaCodec: flush() is valid only at Executing states; currently at Released state
04-05 20:15:56.228  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.228  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.228  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.228  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.228  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.236  7047 28292 D SurfaceUtils: connecting to surface 0xd3072476f010, reason connectToSurface
04-05 20:15:56.236  7047 28292 I MediaCodec: [c2.exynos.hevc.decoder] setting surface generation to 7216148
04-05 20:15:56.236  7047 28292 D SurfaceUtils: disconnecting from surface 0xd3072476f010, reason connectToSurface(reconnect)
04-05 20:15:56.236  7047 28292 D SurfaceUtils: connecting to surface 0xd3072476f000, reason connectToSurface(reconnect-with-listener)
04-05 20:15:56.236  7047 28292 D Codec2-OutputBufferQueue: C2SurfaceSyncMemory created 20(20)
04-05 20:15:56.236  7047 28292 D Codec2-OutputBufferQueue: remote graphic buffer migration 0/0
04-05 20:15:56.237  7047 28292 D Codec2Client: setOutputSurface -- failed to set consumer usage (6/BAD_INDEX)
04-05 20:15:56.237  7047 28292 D Codec2Client: setOutputSurface -- generation=7216148 consumer usage=0x900 sync
04-05 20:15:56.238   913 19337 D C2BqBuffer: local generation change 7216148 , bqId: 30266634534997 migrated buffers # 11
04-05 20:15:56.238  7047 28292 D Codec2Client: Surface configure completed
04-05 20:15:56.238  7047 28292 D SurfaceUtils: disconnecting from surface 0xd3072478d010, reason disconnectFromSurface
04-05 20:15:56.240  7047 28292 D CCodecBufferChannel: [c2.exynos.hevc.decoder#27] MediaCodec discarded an unknown buffer
04-05 20:15:56.240  7047 28292 D CCodecBufferChannel: [c2.exynos.hevc.decoder#27] MediaCodec discarded an unknown buffer
04-05 20:15:56.240  7047 28292 D CCodecBufferChannel: [c2.exynos.hevc.decoder#27] MediaCodec discarded an unknown buffer
04-05 20:15:56.241  7047 28292 D CCodecBufferChannel: [c2.exynos.hevc.decoder#27] MediaCodec discarded an unknown buffer
04-05 20:15:56.241   913 19337 D C2BqBuffer: configuring null producer: igbp_information(0)
04-05 20:15:56.242  7047 28303 D CCodecBufferChannel: [c2.dolby.eac3.decoder#49] MediaCodec discarded an unknown buffer
04-05 20:15:56.243   914 28304 I C2SoftDdpDec: -> onRelease
04-05 20:15:56.243  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.243   914 28304 I AProcessor: ~AProcessor
04-05 20:15:56.243   914 28304 D DlbDecParamCache: ~DecParamCache()
04-05 20:15:56.243   914 28304 I C2SoftDdpDec: <-onRelease
04-05 20:15:56.244  7047 28309 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
04-05 20:15:56.247   914   947 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
04-05 20:15:56.247   914   947 I C2SoftDdpDec: -> onRelease
04-05 20:15:56.247   914   947 I C2SoftDdpDec: <-onRelease
04-05 20:15:56.248   914  2262 D BufferPoolAccessor2.0: Destruction - bufferpool2 0xb400cabc8e7b1228 cached: 0/0M, 0/0% in use; allocs: 2, 50% recycled; transfers: 0, 0% unfetched
04-05 20:15:56.249  7047  7132 W System  : A resource failed to call close. 
04-05 20:15:56.254   913 19337 I ExynosC2HevcDecComponent: [release] component is released
04-05 20:15:56.255  7047 28292 D SurfaceUtils: disconnecting from surface 0xd3072476f010, reason disconnectFromSurface
04-05 20:15:56.255  7047 28308 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
04-05 20:15:56.255   913 19337 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
04-05 20:15:56.270  7047  7047 W WindowOnBackDispatcher: OnBackInvokedCallback is not enabled for the application.
04-05 20:15:56.270  7047  7047 W WindowOnBackDispatcher: Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.
04-05 20:15:56.289  1330  3024 D CoreBackPreview: Window{e1822fa u0 com.plexapp.android/com.plexapp.player.PlayerActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@bd67aa1, mPriority=0, mIsAnimationCallback=false}
04-05 20:15:56.299   582  4882 W gralloc4: Unable to set buffer name VRI[PlayerActivity]#76(BLAST Consumer)76: File name too long
04-05 20:15:56.300   582  4882 W gralloc4: Unable to set buffer name VRI[PlayerActivity]#76(BLAST Consumer)76: File name too long
04-05 20:15:56.301   582  4882 W gralloc4: Unable to set buffer name VRI[PlayerActivity]#76(BLAST Consumer)76: File name too long
04-05 20:15:56.303   582  4882 W gralloc4: Unable to set buffer name VRI[PlayerActivity]#76(BLAST Consumer)76: File name too long
04-05 20:15:56.304   582  4882 W gralloc4: Unable to set buffer name VRI[PlayerActivity]#76(BLAST Consumer)76: File name too long
04-05 20:15:56.394  3420  3474 I AttachmentTable: [setHashForDataFile] Updated the HASH_END for 1 rows using file /data/user/0/org.thoughtcrime.securesms/app_parts/part5673632180824374551.mms
04-05 20:15:56.445  7047  7578 D Plex Media Server: [229728654970880] Failed to stream media, client probably disconnected after 105495233 bytes: 104 - Connection reset by peer

This was a local file, so the "Connection reset" must be its internal server?

Again, normally I would assume this to be a Plex issue, but the fact it seems to be localized to GOS makes me think something is "up" with it..

Thoughts? Next steps? Open a case over there?

thestinger commented 1 month ago

Not clear what reason there is to believe this is GrapheneOS specific.