AppleTV4K (2022) & Samsung HDR - Dark Playback

Server Version#: Version 1.41.0.8994
Player Version#: 8.40 (9370)
TVOS Version#: 18.0

My Problem seems to be the same on what I could read in this thread which is now closed and never got any replies: [HDR content playback is dark on AppleTV 4k 2022 (3rd gen)]

Whenever I play an HDR file on my AppleTV 4K and my Samsung TV (Frame 2023) the HDR Playback is super dark.
This is with Direct Play. No Transcoding.

The correct level of brightness appears when the drop down menu comes up. As long as its on screen, the brightness is correct. Same when I have the app switcher open, so the video plays in a small window. The second I dismiss the dropdown menu, the brightness of the overall video goes down again.

When I play HDR Content on Prime, Netflix, Disney or ATV+ the HDR works fine. This happens only in Plex and with any HDR content.
When I transcode it to 1080P the brightness levels are fine.

Setting on the AppleTV:
HDR Enabled: (HDR10+).
In Plex App HDR is set to Auto.

Logs:

2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: Container reported FPS: 23.976024
2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: Codec list:
2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: hevc - HEVC (High Efficiency Video Coding)
2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: Opening decoder hevc
2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: Looking at hwdec hevc-videotoolbox…
2024/10/12 18:49:42.338 (13180276) :wrench: PMKMPVClient.m:523 | [vd] v: Trying hardware decoding via hevc-videotoolbox.
2024/10/12 18:49:42.339 (13180271) :wrench: PMKMPVClient.m:523 | [vd] v: Selected codec: hevc (HEVC (High Efficiency Video Coding))
2024/10/12 18:49:42.339 (13180271) :wrench: PMKMPVClient.m:523 | [vf] v: User filter list:
2024/10/12 18:49:42.339 (13180271) :wrench: PMKMPVClient.m:523 | [vf] v: (empty)
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVVideoPlayer.m:984 | event: audio-reconfig
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [ad] v: Codec list:
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVVideoPlayer.m:984 | event: audio-reconfig
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [ad] v: ac3_at (ac3) - ac3 (AudioToolbox)
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [ad] v: Opening decoder ac3_at
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [ad] v: Requesting 1 threads for decoding.
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [ad] v: Selected codec: ac3_at (ac3 (AudioToolbox))
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [af] v: User filter list:
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [af] v: (empty)
2024/10/12 18:49:42.339 (13179929) :wrench: PMKMPVClient.m:523 | [cplayer] v: Starting playback…
2024/10/12 18:49:42.343 (13180134) :wrench: PMKMPVClient.m:523 | [vd] v: Pixel formats supported by decoder: videotoolbox_vld yuv420p10le
2024/10/12 18:49:42.343 (13180134) :wrench: PMKMPVClient.m:523 | [vd] v: Codec profile: Main 10 (0x2)
2024/10/12 18:49:42.343 (13180134) :wrench: PMKMPVClient.m:523 | [vd] v: Requesting pixfmt ‘videotoolbox_vld’ from decoder.
2024/10/12 18:49:42.369 (8201956) :heavy_minus_sign: PMKMPVVideoPlayerView.m:84 | Player moved to window (null) (screen: (null))
2024/10/12 18:49:42.371 (8201956) :heavy_minus_sign: PMKMPVVideoPlayerView.m:84 | Player moved to window <PlexApp.PTVWindow: 0x11ff69760; baseClass = UIWindow; frame = (0 0; 1920 1080); autoresize = W+H; gestureRecognizers = <NSArray: 0x302ef7000>; layer = <UIWindowLayer: 0x302eef480>> (screen: <UIScreen: 0x11ff21eb0; bounds: {{0, 0}, {1920, 1080}}; mode: <UIScreenMode: 0x306510500; size = 3840.000000 x 2160.000000>>)
2024/10/12 18:49:42.384 (8201956) :wrench: PMKMPVClient.m:351 | Setting MPV option sub-delay=0
2024/10/12 18:49:42.411 (13180134) :heavy_minus_sign: PMKMPVClient.m:515 | [vd] info: Using hardware decoding (videotoolbox).
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vd] v: Decoder format: 3840x1608 videotoolbox[rgbaf16] bt.2020-ncl/bt.2020/pq/limited/auto SP=7.497537 CL=uhd
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vd] v: Using container aspect ratio.
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [in] 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [userdeint] 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [userdeint] (disabled)
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [autorotate] 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [autorotate] (disabled)
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [convert] 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [convert] (disabled)
2024/10/12 18:49:42.412 (13180134) :wrench: PMKMPVClient.m:523 | [vf] v: [out] 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [af] v: [in] 48000Hz 5.1(side) 6ch s16
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [af] v: [userspeed] 48000Hz 5.1(side) 6ch s16
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [af] v: [userspeed] (disabled)
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [af] v: [convert] 48000Hz 5.1(side) 6ch s16
2024/10/12 18:49:42.413 (8201956) :wrench: PMKMPVClient.m:345 | Setting MPV option aid=“1”
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [ao] v: Trying audio driver ‘avfoundation’
2024/10/12 18:49:42.413 (13180271) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: requested format: 48000 Hz, 5.1(side) channels, s16
2024/10/12 18:49:43.257 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: input mp chmap: 5.1(side)
2024/10/12 18:49:43.257 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: output channel layout:
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: layout: tag: <0>, bitmap: <0>, descriptions <6>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 0: label <1, 0>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 1: label <2, 1>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 2: label <3, 2>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 3: label <4, 3>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 4: label <5, 9>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.258 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: - description 5: label <6, 10>, flags: <0>, coords: <0.000000, 0.000000, 0.000000>
2024/10/12 18:49:43.259 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: device buffer: 1024 samples.
2024/10/12 18:49:43.259 (13180276) :wrench: PMKMPVClient.m:523 | [ao/avfoundation] v: using soft-buffer of 9600 samples.
2024/10/12 18:49:43.259 (13180276) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: AO: [avfoundation] 48000Hz 5.1(side) 6ch s16
2024/10/12 18:49:43.259 (13180276) :wrench: PMKMPVClient.m:523 | [cplayer] v: AO: Description: AVFoundation AVSampleBufferAudioRenderer (macOS/iOS)
2024/10/12 18:49:43.270 (13180275) :wrench: PMKMPVVideoPlayer.m:984 | event: audio-reconfig
2024/10/12 18:49:43.275 (13180275) :wrench: PMKMPVVideoPlayer.m:984 | event: video-reconfig
2024/10/12 18:49:43.275 (13180275) :wrench: PMKMPVClient.m:523 | [af] v: [convert] (disabled)
2024/10/12 18:49:43.275 (13180275) :wrench: PMKMPVClient.m:523 | [af] v: [out] 48000Hz 5.1(side) 6ch s16
2024/10/12 18:49:43.320 (13179929) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: VO: [libmpv] 3840x1608 videotoolbox[rgbaf16]
2024/10/12 18:49:43.320 (13179929) :wrench: PMKMPVVideoPlayer.m:984 | event: video-reconfig
2024/10/12 18:49:43.320 (13179929) :wrench: PMKMPVClient.m:523 | [cplayer] v: VO: Description: render API for libmpv
2024/10/12 18:49:43.320 (13179929) :wrench: PMKMPVClient.m:523 | [vo/libmpv] v: reconfig to 3840x1608 videotoolbox[rgbaf16] rgb/bt.2020/pq/full/display SP=7.497537 CL=uhd
2024/10/12 18:49:43.524 (13180271) :wrench: PMKMPVClient.m:523 | [vo/libmpv] v: mpv_render_context_render() not being called or stuck.
2024/10/12 18:49:43.524 (13180271) :wrench: PMKMPVClient.m:523 | [cplayer] v: first video frame after restart shown
2024/10/12 18:49:43.524 (13180275) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: Track switched:
2024/10/12 18:49:43.524 (13180275) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: (+) Video --vid=1 () (hevc 3840x1608 23.976fps)
2024/10/12 18:49:43.524 (13180275) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: Video --vid=2 [P] ‘z A Jatt Release.png’ (png)
2024/10/12 18:49:43.524 (13180275) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: (+) Audio --aid=1 --alang=eng (
) ‘Jatt’ (ac3 6ch 48000Hz)
2024/10/12 18:49:43.524 (13180275) :heavy_minus_sign: PMKMPVClient.m:515 | [cplayer] info: Subs --sid=1 --slang=eng ‘Jatt’ (subrip)
2024/10/12 18:49:43.525 (8201956) :wrench: PMKMPVClient.m:351 | Setting MPV option sub-delay=0
2024/10/12 18:49:43.528 (13180271) :wrench: PMKMPVClient.m:523 | [cplayer] v: audio ready
2024/10/12 18:49:43.528 (8201956) :wrench: PMKMPVClient.m:345 | Setting MPV option sid=“1”
2024/10/12 18:49:43.528 (13180271) :wrench: PMKMPVVideoPlayer.m:984 | event: playback-restart
2024/10/12 18:49:43.528 (13180271) :wrench: PMKMPVClient.m:523 | [cplayer] v: delaying audio start 0.011000 vs. 0.005000, diff=0.006000
2024/10/12 18:49:43.528 (13180271) :wrench: PMKMPVClient.m:523 | [cplayer] v: playback restart complete @ 0.005000, audio=ready, video=playing
2024/10/12 18:49:43.528 (13180271) :wrench: PMKMPVClient.m:523 | [mkv] v: select track 2
2024/10/12 18:49:43.536 (13180271) :wrench: PMKMPVClient.m:523 | [mkv] v: refresh seek to -10.995000
2024/10/12 18:49:43.536 (13180134) :wrench: PMKMPVClient.m:523 | [mkv] v: execute seek (to -10.995000 flags 32)
2024/10/12 18:49:43.536 (13180134) :wrench: PMKMPVClient.m:523 | [sub/ass] v: libass API version: 0x1600000
2024/10/12 18:49:43.536 (13180134) :wrench: PMKMPVClient.m:523 | [sub/ass] v: libass source: tarball: 0.16.0
2024/10/12 18:49:43.536 (13179929) :wrench: PMKMPVClient.m:523 | [sub/ass] v: Shaper: FriBidi 1.0.12 (SIMPLE) HarfBuzz-ng 4.2.1 (COMPLEX)
2024/10/12 18:49:43.536 (13179929) :wrench: PMKMPVClient.m:523 | [sub/ass] v: Setting up fonts…
2024/10/12 18:49:43.536 (13179929) :wrench: PMKMPVClient.m:523 | [mkv] v: seek done
2024/10/12 18:49:43.537 (13180276) :wrench: PMKMPVClient.m:523 | [sub/ass] v: Using font provider coretext
2024/10/12 18:49:43.537 (13180276) :wrench: PMKMPVClient.m:523 | [sub/ass] v: Done.

According to rtings, there is no Frame 2023, just 2022, and 2024. I’m assuming you bought in 2023 so you have the 2022 model. Its just a poor TV, HDR in name only having a mere 500nit peak brightness. You are better off sticking with SDR content.

Plex devs have neglected to implement Apple’s HDR10+ API. So it is stuck with static metadata stretched over the whole film. So that gets tonemapped down to a dark image when you have such a poorly designed TV with so little brightness to work with.

Prime and Disney have tons of HDR10+ dynamic metadata content, every new release for some time now as well as back catalog has been remastered, scene to scene tonemapping, which is being pass through to your TV.

You could try Infuse, it can do HDR10+, but that means your media has to be HDR10+.

Better off tonemapping totally to SDR mode for Plex in your situation.

When I transcode it to 1080P the brightness levels are fine.

Because it’s tonemapping it all flat and evenly to SDR.

Thanks for your reply.
That could fit to what I see when playing the same content via the Tizen OS Plex Player.

However, even if i turn off HDR10+ support in TVOS i get the same error.
Furthermore, i dont understand why I get the full Brightness when the Dropdown Menu appears.

Feels like a bug. On another TV with HDR the image doesnt change in Brightness when the Dropdown appears.

The Picture should always have the same level of Brightness.

Uploading two example image to showcase the difference (shot with same settings of exposure, ISO and time):


Just wanted to update that this is still the case with the new Plex Version 8.41 updated 21.Oct as well as TVOS 18.1

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