Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Support HDR for Windows and MacOS #393

Open
cgarst opened this issue Aug 19, 2024 · 43 comments
Open

[Feature Request] Support HDR for Windows and MacOS #393

cgarst opened this issue Aug 19, 2024 · 43 comments
Assignees
Labels
enhancement New feature or request

Comments

@cgarst
Copy link

cgarst commented Aug 19, 2024

Describe the bug
When switching to "H265 HDR (PS5 only)" on a Windows machine with HDR display, the stream opens with a black display. Uncertain from documentation is HDR is intended for Windows or only Steam Deck.

Debug Log
chiaki_session_2024-08-19_02-20-49-553553 - Copy.log

To Reproduce
Steps to reproduce the behavior:

  1. Switch codec to "H265 HDR (PS5 only)" on an HDR Windows system
  2. Connect to PS5
  3. Observe black video

Expected behavior
An HDR stream appears similarly to the official remote play app

Screenshots
#000000

Desktop (please complete the following information):

  • OS: Windows 11
  • Version: 23H2
  • Device: Asus Zephyrus ROG G14 2024, using AMD iGPU Radeon 780m
  • chiaki-ng Version 1.8.1

Additional context
HDR is working in official remote play app on same device.

@jbaiter
Copy link
Contributor

jbaiter commented Aug 19, 2024

HDR is currently only supported and tested on SteamOS (and maybe with some hackery, other Linux systems). There's nothing that prevents Windows or MacOS support, is just that nobody has yet done the work required to get it running.

@cgarst
Copy link
Author

cgarst commented Aug 19, 2024

Makes sense. A documentation opportunity also exists for things like this.

The github.io doc site could benefit from a having a features page with a table indicating what chiaki-ng's features are, and which platforms each is supported on. The fork has been built up so much at this point (hooray!) that the advantages and use cases can be confusing for new users.

If there is appetite for this doc I could put something together and PR.

@streetpea streetpea changed the title [BUG] Black screen with HDR in Windows [BUG] Support HDR for Windows Aug 19, 2024
@streetpea streetpea added the enhancement New feature or request label Aug 19, 2024
@streetpea streetpea self-assigned this Aug 19, 2024
@streetpea
Copy link
Owner

@cgarst theoretically libplacebo supports HDR on Windows as mpv has hdr in Windows using libplacebo. However, it was just never tested on our end and there is likely some configuration that needs to be done, etc. to get it working. I'll try with my Windows PC connected to an HDR monitor and get back to you. As for the other features, they should pretty much all be cross-platform.

@streetpea
Copy link
Owner

streetpea commented Aug 27, 2024

For MacOS it correctly works but it crashes when the application is closed when HDR is selected. Tested on m1 MacBook Pro with internal hdr screen

@streetpea streetpea changed the title [BUG] Support HDR for Windows [BUG] Support HDR for Windows and MacOS Aug 27, 2024
@streetpea
Copy link
Owner

@nowrep i noticed it crashes even when not connected to an hdr monitor if H265 HDR is selected as the codec and streaming begins. Once you quit the stream and try to close the app the app crashes. Could you look at this since I remember you had a Mac system?

@nowrep
Copy link
Contributor

nowrep commented Aug 27, 2024

I don't have a mac to easily test this, sorry. I suggest posting here the crash log from macos. And maybe also using debug build.

@streetpea streetpea changed the title [BUG] Support HDR for Windows and MacOS [Feature Request] Support HDR for Windows and MacOS Aug 27, 2024
@streetpea
Copy link
Owner

streetpea commented Aug 27, 2024

@nowrep here is the bt from the crash when using HDR. I also attached the log from the crash using H265 HDR as the codec crash-h265-hdr.log as well as a log from a non-crash close using H265 as the codec non-crash-h265-sdr.log

(lldb) bt
* thread #17, name = 'render', stop reason = EXC_BAD_ACCESS (code=1, address=0x3eadde7804a0)
  * frame #0: 0x00007ff813011e2f libobjc.A.dylib`objc_release + 31
    frame #1: 0x00007ff813015dea libobjc.A.dylib`AutoreleasePoolPage::releaseUntil(objc_object**) + 164
    frame #2: 0x00007ff813012d6f libobjc.A.dylib`objc_autoreleasePoolPop + 168
    frame #3: 0x00007ff813019e61 libobjc.A.dylib`AutoreleasePoolPage::tls_dealloc(void*) + 91
    frame #4: 0x00007ff81317a567 libsystem_pthread.dylib`_pthread_tsd_cleanup + 487
    frame #5: 0x00007ff81317cb89 libsystem_pthread.dylib`_pthread_exit + 70
    frame #6: 0x00007ff81317c4ec libsystem_pthread.dylib`_pthread_start + 136
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15

also here is a bt of all threads

(lldb) bt all
  thread #1, queue = 'com.apple.main-thread'
    frame #0: 0x000000010521506b QtQml`QQmlData::disconnectNotifiers(QQmlData::DeleteNotifyList) + 261
    frame #1: 0x00000001052144ec QtQml`QQmlData::markAsDeleted(QObject*) + 140
    frame #2: 0x0000000104b9c1d0 QtQuick`QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() + 14
    frame #3: 0x000000010010a77a chiaki`QmlMainWindow::~QmlMainWindow(this=0x00007ff7bfefe240) at qmlmainwindow.cpp:120:5
    frame #4: 0x000000010010ad45 chiaki`QmlMainWindow::~QmlMainWindow(this=0x00007ff7bfefe240) at qmlmainwindow.cpp:112:1
    frame #5: 0x0000000100038dfe chiaki`RunMain(app=0x00007ff7bfeff5f0, settings=0x00007ff7bfefefd0) at main.cpp:287:1
    frame #6: 0x0000000100037bd8 chiaki`real_main(argc=1, argv=0x00007ff7bfeff808) at main.cpp:158:10
    frame #7: 0x00000001000367a2 chiaki`main(argc=1, argv=0x00007ff7bfeff808) at main.cpp:4:43
    frame #8: 0x0000000100a3152e dyld`start + 462
  thread #2
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #3
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #5, name = 'AMCP Logging Spool'
    frame #0: 0x00007ff81313f976 libsystem_kernel.dylib`semaphore_wait_trap + 10
    frame #1: 0x00007ff81bc802e6 caulk`caulk::mach::semaphore::wait_or_error() + 16
    frame #2: 0x00007ff81bc68148 caulk`caulk::concurrent::details::worker_thread::run() + 36
    frame #3: 0x00007ff81bc67e0c caulk`void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
    frame #4: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #5: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #8, name = 'QQmlThread'
    frame #0: 0x00007ff81314606a libsystem_kernel.dylib`poll + 10
    frame #1: 0x000000010578c3c2 QtCore`qt_safe_poll(pollfd*, unsigned int, timespec const*) + 567
    frame #2: 0x000000010578d2fd QtCore`QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 635
    frame #3: 0x0000000105662c2d QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 367
    frame #4: 0x000000010570a32e QtCore`QThread::exec() + 160
    frame #5: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #9, name = 'frame'
    frame #0: 0x00007ff81314606a libsystem_kernel.dylib`poll + 10
    frame #1: 0x000000010578c3c2 QtCore`qt_safe_poll(pollfd*, unsigned int, timespec const*) + 567
    frame #2: 0x000000010578d2fd QtCore`QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 635
    frame #3: 0x0000000105662c2d QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 367
    frame #4: 0x000000010570a32e QtCore`QThread::exec() + 160
    frame #5: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #10, name = 'QThread'
    frame #0: 0x00007ff81314606a libsystem_kernel.dylib`poll + 10
    frame #1: 0x000000010578c3c2 QtCore`qt_safe_poll(pollfd*, unsigned int, timespec const*) + 567
    frame #2: 0x000000010578d2fd QtCore`QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 635
    frame #3: 0x0000000105662c2d QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 367
    frame #4: 0x000000010570a32e QtCore`QThread::exec() + 160
    frame #5: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #12
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317caa4 libsystem_pthread.dylib`_pthread_cond_wait + 1302
    frame #2: 0x0000000100172f50 chiaki`chiaki_cond_timedwait(cond=0x000000010e92a9b0, mutex=0x000000010e92a9e0, timeout_ms=500) at thread.c:294:10
    frame #3: 0x000000010017305b chiaki`chiaki_cond_timedwait_pred(cond=0x000000010e92a9b0, mutex=0x000000010e92a9e0, timeout_ms=500, check_pred=(chiaki`bool_pred_cond_check_pred at thread.c:413), check_pred_user=0x000000010e92a9b0) at thread.c:332:25
    frame #4: 0x00000001001732e0 chiaki`chiaki_bool_pred_cond_timedwait(cond=0x000000010e92a9b0, timeout_ms=500) at thread.c:425:9
    frame #5: 0x000000010018c6c2 chiaki`discovery_service_thread_func(user=0x000000010e92a868) at discoveryservice.c:157:9
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #14
    frame #0: 0x00007ff813147d1a libsystem_kernel.dylib`__select + 10
    frame #1: 0x000000010018b09b chiaki`chiaki_stop_pipe_select_single(stop_pipe=0x000070000524ff78, fd=13, write=false, timeout_ms=18446744073709551615) at stoppipe.c:153:7
    frame #2: 0x0000000100189ff2 chiaki`discovery_thread_func(user=0x000070000524ff68) at discovery.c:326:25
    frame #3: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #4: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #15, name = 'QDBusConnectionManager'
    frame #0: 0x00007ff81314606a libsystem_kernel.dylib`poll + 10
    frame #1: 0x000000010578c3c2 QtCore`qt_safe_poll(pollfd*, unsigned int, timespec const*) + 567
    frame #2: 0x000000010578d2fd QtCore`QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 635
    frame #3: 0x0000000105662c2d QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 367
    frame #4: 0x000000010570a32e QtCore`QThread::exec() + 160
    frame #5: 0x0000000101f158dc QtDBus`QDBusConnectionManager::run() + 22
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
* thread #17, name = 'render', stop reason = EXC_BAD_ACCESS (code=1, address=0x3eadde8ee6e0)
  * frame #0: 0x00007ff813011e2f libobjc.A.dylib`objc_release + 31
    frame #1: 0x00007ff813015dea libobjc.A.dylib`AutoreleasePoolPage::releaseUntil(objc_object**) + 164
    frame #2: 0x00007ff813012d6f libobjc.A.dylib`objc_autoreleasePoolPop + 168
    frame #3: 0x00007ff813019e61 libobjc.A.dylib`AutoreleasePoolPage::tls_dealloc(void*) + 91
    frame #4: 0x00007ff81317a567 libsystem_pthread.dylib`_pthread_tsd_cleanup + 487
    frame #5: 0x00007ff81317cb89 libsystem_pthread.dylib`_pthread_exit + 70
    frame #6: 0x00007ff81317c4ec libsystem_pthread.dylib`_pthread_start + 136
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #18, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #21, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #24, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #28, name = 'com.apple.NSEventThread'
    frame #0: 0x00007ff81313f93a libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007ff81313fca8 libsystem_kernel.dylib`mach_msg + 56
    frame #2: 0x00007ff81324329d CoreFoundation`__CFRunLoopServiceMachPort + 319
    frame #3: 0x00007ff813241928 CoreFoundation`__CFRunLoopRun + 1276
    frame #4: 0x00007ff813240d6c CoreFoundation`CFRunLoopRunSpecific + 562
    frame #5: 0x00007ff815ded572 AppKit`_NSEventThread + 132
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #30
    frame #0: 0x00007ff813177f48 libsystem_pthread.dylib`start_wqthread
  thread #33
    frame #0: 0x00007ff813177f48 libsystem_pthread.dylib`start_wqthread
  thread #34, queue = 'NSCGSDisableUpdates'
    frame #0: 0x00007ff81313f98e libsystem_kernel.dylib`semaphore_timedwait_trap + 10
    frame #1: 0x00007ff812fc4848 libdispatch.dylib`_dispatch_sema4_timedwait + 72
    frame #2: 0x00007ff812fc4c75 libdispatch.dylib`_dispatch_semaphore_wait_slow + 58
    frame #3: 0x00007ff8181a9f1e SkyLight`CGSUpdateManager::enable_updates_common() + 1038
    frame #4: 0x00007ff8181aa96e SkyLight`SLSReenableUpdateTokenWithSeed + 130
    frame #5: 0x00007ff812fc30cc libdispatch.dylib`_dispatch_call_block_and_release + 12
    frame #6: 0x00007ff812fc4317 libdispatch.dylib`_dispatch_client_callout + 8
    frame #7: 0x00007ff812fca317 libdispatch.dylib`_dispatch_lane_serial_drain + 672
    frame #8: 0x00007ff812fcadfd libdispatch.dylib`_dispatch_lane_invoke + 366
    frame #9: 0x00007ff812fd4eee libdispatch.dylib`_dispatch_workloop_worker_thread + 753
    frame #10: 0x00007ff813178fd0 libsystem_pthread.dylib`_pthread_wqthread + 326
    frame #11: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #35, queue = 'com.apple.SkyLight.UpdateManager.SerialSema'
    frame #0: 0x00007ff81313f976 libsystem_kernel.dylib`semaphore_wait_trap + 10
    frame #1: 0x00007ff8181aa12f SkyLight`invocation function for block in (anonymous namespace)::InterprocessSerialSemaphore::asyncWait(void (int) block_pointer) + 35
    frame #2: 0x00007ff812fc30cc libdispatch.dylib`_dispatch_call_block_and_release + 12
    frame #3: 0x00007ff812fc4317 libdispatch.dylib`_dispatch_client_callout + 8
    frame #4: 0x00007ff812fca317 libdispatch.dylib`_dispatch_lane_serial_drain + 672
    frame #5: 0x00007ff812fcadfd libdispatch.dylib`_dispatch_lane_invoke + 366
    frame #6: 0x00007ff812fd4eee libdispatch.dylib`_dispatch_workloop_worker_thread + 753
    frame #7: 0x00007ff813178fd0 libsystem_pthread.dylib`_pthread_wqthread + 326
    frame #8: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #38
    frame #0: 0x00007ff813177f48 libsystem_pthread.dylib`start_wqthread
  thread #45
    frame #0: 0x00007ff81313f976 libsystem_kernel.dylib`semaphore_wait_trap + 10
    frame #1: 0x00007ff81bc802e6 caulk`caulk::mach::semaphore::wait_or_error() + 16
    frame #2: 0x00007ff81bc68148 caulk`caulk::concurrent::details::worker_thread::run() + 36
    frame #3: 0x00007ff81bc67e0c caulk`void* caulk::thread_proxy<std::__1::tuple<caulk::thread::attributes, void (caulk::concurrent::details::worker_thread::*)(), std::__1::tuple<caulk::concurrent::details::worker_thread*> > >(void*) + 41
    frame #4: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #5: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #49, name = 'com.apple.coremedia.rootQueue.47'
    frame #0: 0x00007ff81313f98e libsystem_kernel.dylib`semaphore_timedwait_trap + 10
    frame #1: 0x00007ff812fc4848 libdispatch.dylib`_dispatch_sema4_timedwait + 72
    frame #2: 0x00007ff812fc4c75 libdispatch.dylib`_dispatch_semaphore_wait_slow + 58
    frame #3: 0x00007ff812fd38ef libdispatch.dylib`_dispatch_worker_thread + 308
    frame #4: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #5: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #50
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #51
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #52
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #53
    frame #0: 0x0000000000000000
  thread #54
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #55
    frame #0: 0x00007ff81314101a libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007ff813179034 libsystem_pthread.dylib`_pthread_wqthread + 426
    frame #2: 0x00007ff813177f57 libsystem_pthread.dylib`start_wqthread + 15
  thread #56, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #57, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #58, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #59, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #60, name = 'Thread (pooled)'
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317ca6f libsystem_pthread.dylib`_pthread_cond_wait + 1249
    frame #2: 0x0000000105798b1e QtCore`QWaitConditionPrivate::wait_relative(QDeadlineTimer) + 148
    frame #3: 0x0000000105798893 QtCore`QWaitConditionPrivate::wait(QDeadlineTimer) + 69
    frame #4: 0x00000001057987fc QtCore`QWaitCondition::wait(QMutex*, QDeadlineTimer) + 84
    frame #5: 0x0000000105793b88 QtCore`QThreadPoolThread::run() + 586
    frame #6: 0x0000000105791216 QtCore`QThreadPrivate::start(void*) + 328
    frame #7: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #8: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #61
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317caa4 libsystem_pthread.dylib`_pthread_cond_wait + 1302
    frame #2: 0x0000000100172f50 chiaki`chiaki_cond_timedwait(cond=0x000000010e92a7f0, mutex=0x000000010e92a820, timeout_ms=500) at thread.c:294:10
    frame #3: 0x000000010017305b chiaki`chiaki_cond_timedwait_pred(cond=0x000000010e92a7f0, mutex=0x000000010e92a820, timeout_ms=500, check_pred=(chiaki`bool_pred_cond_check_pred at thread.c:413), check_pred_user=0x000000010e92a7f0) at thread.c:332:25
    frame #4: 0x00000001001732e0 chiaki`chiaki_bool_pred_cond_timedwait(cond=0x000000010e92a7f0, timeout_ms=500) at thread.c:425:9
    frame #5: 0x000000010018c6c2 chiaki`discovery_service_thread_func(user=0x000000010e92a6a8) at discoveryservice.c:157:9
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #62
    frame #0: 0x00007ff813147d1a libsystem_kernel.dylib`__select + 10
    frame #1: 0x000000010018b09b chiaki`chiaki_stop_pipe_select_single(stop_pipe=0x0000700005873f78, fd=36, write=false, timeout_ms=18446744073709551615) at stoppipe.c:153:7
    frame #2: 0x0000000100189ff2 chiaki`discovery_thread_func(user=0x0000700005873f68) at discovery.c:326:25
    frame #3: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #4: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #63
    frame #0: 0x00007ff8131423aa libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007ff81317caa4 libsystem_pthread.dylib`_pthread_cond_wait + 1302
    frame #2: 0x0000000100172f50 chiaki`chiaki_cond_timedwait(cond=0x000000010e92a9b0, mutex=0x000000010e92a9e0, timeout_ms=500) at thread.c:294:10
    frame #3: 0x000000010017305b chiaki`chiaki_cond_timedwait_pred(cond=0x000000010e92a9b0, mutex=0x000000010e92a9e0, timeout_ms=500, check_pred=(chiaki`bool_pred_cond_check_pred at thread.c:413), check_pred_user=0x000000010e92a9b0) at thread.c:332:25
    frame #4: 0x00000001001732e0 chiaki`chiaki_bool_pred_cond_timedwait(cond=0x000000010e92a9b0, timeout_ms=500) at thread.c:425:9
    frame #5: 0x000000010018c6c2 chiaki`discovery_service_thread_func(user=0x000000010e92a868) at discoveryservice.c:157:9
    frame #6: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #7: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15
  thread #64
    frame #0: 0x00007ff813147d1a libsystem_kernel.dylib`__select + 10
    frame #1: 0x000000010018b09b chiaki`chiaki_stop_pipe_select_single(stop_pipe=0x0000700005c08f78, fd=39, write=false, timeout_ms=18446744073709551615) at stoppipe.c:153:7
    frame #2: 0x0000000100189ff2 chiaki`discovery_thread_func(user=0x0000700005c08f68) at discovery.c:326:25
    frame #3: 0x00007ff81317c4e1 libsystem_pthread.dylib`_pthread_start + 125
    frame #4: 0x00007ff813177f6b libsystem_pthread.dylib`thread_start + 15

@streetpea
Copy link
Owner

streetpea commented Sep 3, 2024

Testing on windows 11 22H2 HDR works with amd radeon 23.19.12-240220a-403852C-AMD-Software-Adrenaline-Adition and windows driver 31.0.21912.14. Also I used d3d11va for hw decoder bc my computer doesn’t support Vulkan. @cgarst just confirming you enabled hdr for your hdr compatible monitor in windows settings and have downloaded the latest amd drivers via https://www.amd.com/en/support/download/drivers.html? You can update the driver via the app on that page once installed.

@cgarst
Copy link
Author

cgarst commented Sep 3, 2024

@streetpea Good news - my HDR is working as well now when I select d3d11va decoder. The "auto" decoder option uses Vulkan which causes a black screen on here. I thought I tried d3d11va before but maybe there was some other issue going on during that test.

My driver is the latest version vetted by Asus for this laptop listed as "31.0.22060.5000 (Adrenalin 23.20.60.05) DCH / Win11 64".

Thanks for looking into this!

@streetpea
Copy link
Owner

@cgarst @nowrep vulkan hw decode w/ HDR not working appears to be an issue with libplacebo, see: haasn/libplacebo#272 and HDR rendering using vulkan and the amd driver on Windows. Ideally this would work as vulkan is better than d3d11va on Windows because it has zero-copy.

@streetpea
Copy link
Owner

@cgarst just to confirm Vulkan works you if you don't select hdr 265 as the codec (I.e., you use h265 instead)?

@cgarst
Copy link
Author

cgarst commented Sep 5, 2024

@streetpea Yes, can confirm selecting H265 (not HDR) with Vulkan works.

@streetpea
Copy link
Owner

@nowrep @cgarst I opened an issue for libplacebo for problems with windows vulkan hw decoder w/ HDR here: haasn/libplacebo#287

@MapleHinata
Copy link

MapleHinata commented Sep 6, 2024

On my end, while the stream does work on d3d11va, it results in a washed out HDR image.
Here's an HDR JXR showing the issue, you may open it on a HDR-compatible photo viewer and a verbose log.
(The JXR can be opened with the default Windows 11 Photo Viewer, or with https://github.com/SpecialKO/SKIV for something that works on Windows 10 )
chiaki-ng 2024-09-06 12_51_27 PM.zip
chiaki_session_2024-09-06_12-55-13-252252.log

I'm experiencing this issue on Windows 11 24H2 (build 10.0.26100.1591.ge_release_svc_prod3.240820-2119), with an NVIDIA RTX 3070 running on the latest driver (560.94)

@streetpea
Copy link
Owner

@MapleHinata are you sure you are activating hdr in the associated game? Please go to the menu of the game and confirm hdr options are toggleable. Many times this requires the hdr monitor/tv connected to the ps5 to be on (there must be an hdr monitor/tv connected to the ps5 to enable hdr images to be sent to chiaki-ng bc that is how the ps5 knows to create hdr frames). Otherwise it is likely that you are streaming sdr content to the hdr colorspace (i.e., pc has hdr activated but ps5 isn’t generating hdr images).

@MapleHinata
Copy link

MapleHinata commented Sep 6, 2024

@streetpea Yes, I'm certain HDR is enabled, it works under the official Remote Play Client, on my Steam Deck OLED with Chiaki, and, while I can't go to the PS5 Settings menu under Chiaki, games show up HDR calibration options.

chiaki-ng 2024-09-06 1_24_33 PM.zip
chiaki-ng 2024-09-06 1_28_08 PM.zip

Here's captures of Honkai: Star Rail, showing off the HDR calibration options

@MapleHinata
Copy link

Ok, i figured out the problem, apologies, i sent an older log by accident.
chiaki_session_2024-09-06_13-59-47-263263.log

Pay attention here:
[2024-09-06 13:59:49:719719] [D] [libplacebo] (Re)creating 1920x1080x0 texture with format rgba16hf: src/renderer.c:2185
The video is being decoded under with the VK_FORMAT_R16G16B16A16_SFLOAT texture format, which is a floating point 16-bit format, however, we're outputting in a Swapchain with this configuration:
[2024-09-06 13:59:49:716716] [I] [libplacebo] Picked surface configuration 5: VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_HDR10_ST2084_EXT
Which is an unsigned 10-bit format, there is a color space mishmash between what is being decoded and what is being displayed.

If i use a tool to force Chiaki to output with a 16-bit swapchain, it renders correctly.
I also noticed the UI is broken when outputting in HDR, take a look:
VK_FORMAT_R16G16B16A16_SFLOAT.zip
VK_FORMAT_A2B10G10R10_UNORM_PACK32.zip

@MapleHinata
Copy link

MapleHinata commented Sep 6, 2024

I'm also attaching below a DebugView of Chiaki
Chiaki-Ng_DebugView.log

This seems to be a libplacebo bug? Why is preferring HDR10 (VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_HDR10_ST2084_EXT) over scRGB (VK_FORMAT_R16G16B16A16_SFLOAT VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT), which is the format Windows uses for HDR natively, especially when it's decoding video with VK_FORMAT_R16G16B16A16_SFLOAT anyway...

@streetpea
Copy link
Owner

streetpea commented Sep 6, 2024

@MapleHinata i don’t believe scrgb is supported by libplacebo for Vulkan. See https://github.com/haasn/libplacebo/blob/efb89342b0c19b9773226624651839686172e88b/src/vulkan/swapchain.c#L93 Meaning VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT is skipped here https://github.com/haasn/libplacebo/blob/efb89342b0c19b9773226624651839686172e88b/src/vulkan/swapchain.c#L163 and a relevant comment here haasn/libplacebo#11 (comment) @MapleHinata You could make an issue to support scrgb with libplacebo if you would like.

@streetpea
Copy link
Owner

@MapleHinata not sure what you mean by decoding in 16bit the decoder format is 10 bit P010LE see

? AV_PIX_FMT_P010LE
if a hw decoder is used and YUV420P10LE if no hw decoder is used

@streetpea
Copy link
Owner

@nowrep for the MacOS HDR bug it appears to be when invalidating the quick_render and quitting and waiting for the thread to end + deleting the parent. If I comment that code out it doesn't crash c8931e2. Obviously, this is incorrect but maybe could help narrow down what's causing this.

@lyndonguitar
Copy link

@MapleHinata are you sure you are activating hdr in the associated game? Please go to the menu of the game and confirm hdr options are toggleable. Many times this requires the hdr monitor/tv connected to the ps5 to be on (there must be an hdr monitor/tv connected to the ps5 to enable hdr images to be sent to chiaki-ng bc that is how the ps5 knows to create hdr frames). Otherwise it is likely that you are streaming sdr content to the hdr colorspace (i.e., pc has hdr activated but ps5 isn’t generating hdr images).

I had just this issue and can confirm the monitor/TV is indeed off and theres no HDR in the game. is it not possible to force PS5 to stream HDR even with the Display Device for the PS5 is off?

I am under the impression that its not, since Remote play is not designed with HDR in mind (PS Portal doesnt have HDR). But if there's a workaround i'd love to know about it.

@streetpea
Copy link
Owner

streetpea commented Oct 12, 2024

@lyndonguitar remote play was built with hdr in mind (for ps5) and hdr is explicitly supported via remote play. It’s just that remote play can only stream what the console is giving it and the ps5 itself only knows to use hdr when the given tv tells it that it can (it’s supported). Otherwise, it would be displaying an unsupported format to the tv and would look washed out (because no tone mapping is taking place). PCs do the same thing. It’s just that with a pc you can install a dummy sw that emulates the hdr signal (in essence explicitly overriding the built in protection yourself so that you can force the system to do what you want with the knowledge that you don’t care if the stream to the pc screen itself looks like crap bc you’re remote playing) but you can’t install that on ps5 bc it’s a closed system. Potentially, Sony could add in the ps5 fw that if hdr is enabled via remote play force hdr on and display that content (prioritizing it over the display on the tv which may not even be in use) but they haven’t done that for the ps5 (at least not in the games I tested)

@lyndonguitar as for your question of streaming remotely using hdr when the tv is off it depends on the tv. Ultimately, the answer is that if the tv sends the message that it’s hdr compatible while off (or rest mode) then the ps5 will stream hdr when the tv is off. Otherwise it won’t. Some tvs do, others don’t. For example, from user feedback the lg oled tvs before c2 (prior to 2022 model) don’t send the signal when off, but lg oled tvs starting with c2 (2022 model on) do send the signal when off.

As for the portal they probably wanted to keep costs down as much as possible and an lcd screen is cheaper than an hdr oled one.

@kalafalas
Copy link

kalafalas commented Nov 3, 2024

I am having an issue with my M3 MacBook Pro. When I select HDR it does not engage HDR on my built in display, causing a washed-out image. When viewing HDR in other apps like photos it properly makes the display brighter

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas can you post the log output with verbose logging enabled? Also what are your stream settings (stream tab in settings) for your PS5 (hdr isn’t supported for ps4)

@kalafalas
Copy link

Sure! Thanks for your help :) I am streaming a PS5, HDR works fine when streaming to remote play on iOS

Screenshot 2024-11-02 at 5 18 12 PM

chiaki_session_2024-11-02_17-15-53-535535.log

@streetpea
Copy link
Owner

@kalafalas in your logs it says it is using hdr

[2024-11-02 17:16:08:251251] [I] [libplacebo] Picked surface configuration 58: VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_HDR10_ST2084_EXT
[2024-11-02 17:16:08:251251] [D] [libplacebo] (Re)creating 960x540x0 texture with format rg16: src/renderer.c:1652

@kalafalas
Copy link

@kalafalas in your logs it says it is using hdr


[2024-11-02 17:16:08:251251] [I] [libplacebo] Picked surface configuration 58: VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_HDR10_ST2084_EXT

[2024-11-02 17:16:08:251251] [D] [libplacebo] (Re)creating 960x540x0 texture with format rg16: src/renderer.c:1652

Yeah it seems like it's sending the HDR stream which is why it's washed out, but macOS is still displaying the app in SDR, washing everything out instead of increasing the brightness

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas that log is for the display not for the stream from the PlayStation. You can tell the stream itself is using HDR from this log:

[2024-11-02 17:16:07:861861] [V] LaunchSpec: {"sessionId":"sessionId4321","streamResolutions":[{"resolution":{"width":1920,"height":1080},"maxFps":60,"score":10}],"network":{"bwKbpsSent":60000,"bwLoss":0.001000,"mtu":1454,"rtt":4,"ports":[53,2053]},"slotId":1,"appSpecification":{"minFps":30,"minBandwidth":0,"extTitleId":"ps3","version":1,"timeLimit":1,"startTimeout":100,"afkTimeout":100,"afkTimeoutDisconnect":100},"konan":{"ps3AccessToken":"accessToken","ps3RefreshToken":"refreshToken"},"requestGameSpecification":{"model":"bravia_tv","platform":"android","audioChannels":"5.1","language":"sp","acceptButton":"X","connectedControllers":["xinput","ds3","ds4"],"yuvCoefficient":"bt601","videoEncoderProfile":"hw4.1","audioEncoderProfile":"audio1","adaptiveStreamMode": "resize"},"userProfile":{"onlineId":"psnId","npId":"npId","region":"US","languagesUsed":["en","jp"]},"videoCodec":"hevc","dynamicRange":"HDR","

Specifically the end that says dynamic range: hdr
and the display only updates to an hdr colorspace after it receives an hdr stream

@kalafalas
Copy link

@kalafalas that log is for the display not for the stream from the PlayStation. You can tell the stream itself is using HDR from this log:

[2024-11-02 17:16:07:861861] [V] LaunchSpec: {"sessionId":"sessionId4321","streamResolutions":[{"resolution":{"width":1920,"height":1080},"maxFps":60,"score":10}],"network":{"bwKbpsSent":60000,"bwLoss":0.001000,"mtu":1454,"rtt":4,"ports":[53,2053]},"slotId":1,"appSpecification":{"minFps":30,"minBandwidth":0,"extTitleId":"ps3","version":1,"timeLimit":1,"startTimeout":100,"afkTimeout":100,"afkTimeoutDisconnect":100},"konan":{"ps3AccessToken":"accessToken","ps3RefreshToken":"refreshToken"},"requestGameSpecification":{"model":"bravia_tv","platform":"android","audioChannels":"5.1","language":"sp","acceptButton":"X","connectedControllers":["xinput","ds3","ds4"],"yuvCoefficient":"bt601","videoEncoderProfile":"hw4.1","audioEncoderProfile":"audio1","adaptiveStreamMode": "resize"},"userProfile":{"onlineId":"psnId","npId":"npId","region":"US","languagesUsed":["en","jp"]},"videoCodec":"hevc","dynamicRange":"HDR","

Specifically the end that says dynamic range: hdr and the display only updates to an hdr colorspace after it receives an hdr stream

Then why doesn't it work?

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas when I tested on my M1 Mac it seemed to work but crashed on closing the app as mentioned above. Are you playing an HDR game and is your connected hdr tv on (some tvs work without it on but for testing turning it on eliminates that being the issue. That is required for an hdr signal to actually be sent from the PlayStation since this only happens if a connected tv sends a signal to the PlayStation telling it that hdr is supported. Otherwise, it will be enabled in settings but won’t actually send an hdr signal. If it still doesn’t work in that case I guess you could mess with your display settings and see if setting it to hdr10 helps at all.

@kalafalas
Copy link

kalafalas commented Nov 3, 2024

@kalafalas when I tested on my M1 Mac it seemed to work but crashed on closing the app as mentioned above. Are you playing an HDR game and is your connected hdr tv on?

Yes, I'm playing an hdr game with an hdr tv connected and hdr is displaying properly when I remote in via iOS.

Ok I just tried something new. I went into the video custom render settings > color and set brightness to 0.05 and contrast to 1.2 and it seems to be displaying how I expect now, maybe a bit flatter than it's supposed to be. Not sure why

@streetpea
Copy link
Owner

@kalafalas were you using custom renderer settings before?

@kalafalas
Copy link

@kalafalas were you using custom renderer settings before?

Nope

@streetpea
Copy link
Owner

It sounds like what you’re doing is toning down the brightness so it’s within the sdr range.

@kalafalas
Copy link

It sounds like what you’re doing is toning down the brightness so it’s within the sdr range.

These custom settings result in a much brighter presentation than the surrounding SDR interface shrug

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

What you’re describing sounds like it’s using hdr when the screen doesn’t support it (at least not at the brightness level it’s using). In other words, it’s outputting a brightness the screen can’t fulfill making everything washed out. If you were using an sdr colorspace it would tonemap fixing this. Can you check your display settings for the display? It sounds like maybe it is outputting hdr but it’s not properly configured so it’s setting a nits level beyond what the display supports. So when you turn down the brightness, it’s finally hitting the nits range of the display and so is no longer washed out.

@kalafalas
Copy link

What you’re describing sounds like it’s using hdr when the screen doesn’t support it (at least not at the brightness level it’s using). In other words, it’s outputting a brightness the screen can’t fulfill making everything washed out. If you were using an sdr colorspace it would tonemap fixing this. Can you check your display settings for the display? It sounds like maybe it is outputting hdr but it’s not properly configured so it’s setting a nits level beyond what the display supports. So when you turn down the brightness, it’s finally hitting the nits range of the display and so is no longer washed out.

Other hdr apps on my Mac do not have this issue, like photos or QuickTime.

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas I just retested and it works fine on my M1 MacBook Pro running MacOS Sonoma. It’s not washed out.

@streetpea
Copy link
Owner

@kalafalas do you have optimize video streaming while on battery turned on by chance?

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas also do you have your ps5 set to output hdr at 1600 nits (you can change this by configuring hdr in the ps5 settings)

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas please try HDR video (P3-ST 2084 as the preset) since I don’t think it’s xdr capable (just hdr capable). When I switched from hdr to xdr it got washed out as you described.

@streetpea
Copy link
Owner

streetpea commented Nov 3, 2024

@kalafalas also HDR no longer causes a crash at exit on MacOS with this build [Note: You need to be signed in to GitHub to download]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

7 participants