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

Support YUV 4:4:4 streaming #1282

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

Conversation

ns6089
Copy link
Contributor

@ns6089 ns6089 commented May 16, 2024

moonlight_yuv444

yuv444_option

Add support for YUV 4:4:4 streaming

moonlight-common-c pull request: moonlight-stream/moonlight-common-c#91
sunshine pull request: LizardByte/Sunshine#2533

Todo, in no particular order:

  • Add Vulkan headers to CI environment
  • Implement "YUV 4:4:4" option on settings page
    • implemented as dumb switch, no intelligent graying out
  • Generate and include missing blobs of encoded video data used in decoder availability auto-detection
    • may want to revise the methodology
  • Change plvk renderer heuristics to support 10-bit SDR video decoding on SDR displays, currently it tests for VK_COLOR_SPACE_HDR10_ST2084_EXT and it fails when display is not in HDR mode
    • may not be possible without wider changes, moonlight doesn't seem to separate between 10-bit SDR and HDR when testing/announcing support
  • Investigate and possibly resolve color conversion errors on nvidia gpus
    • nvenc seems to produce wrong colors when encoding full range YUV from direct3d11 surfaces, this problem is not unique to 4:4:4 and appears in 4:2:0 as well
  • Test decoding on intel (i)gpus

@ns6089
Copy link
Contributor Author

ns6089 commented May 18, 2024

@cgutman I probably can't do more on moonlight side (moonlight-common-c included) without feedback. Format selection logic appears overcomplicated to me, so I've probably missed some corner cases, and you might prefer to do some things differently altogether. Also if you prefer, you can simply take this over after 5.1 is released, this may prevent the needless back-and-forth.

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

Successfully merging this pull request may close these issues.

None yet

1 participant