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 3 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 merged
sunshine pull request: LizardByte/Sunshine#2533 draft

Todo, in no particular order:

  • Add Vulkan headers to CI environment
  • Test decoding on intel (i)gpus
  • 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
    • Removed this check altogether, libplacebo might need some reconfiguration to handle tone mapping gracefully
  • Investigate and possibly resolve color conversion errors
    • Full Range had issues on sunshine's side, fixed in the same 4:4:4 PR
    • Rec.601 should never be requested on third-party renderers because it has different primaries from sRGB

@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.

@ns6089
Copy link
Contributor Author

ns6089 commented Jun 6, 2024

  • switched from fork to official moonlight-common-c submodule
  • rebased against 6.0 reverting library updates that got rid of vulkan/libplacebo
  • added command line option for YUV 4:4:4
  • extended 4:4:4 format selection logic to cover forced codecs

@moi952
Copy link

moi952 commented Jun 7, 2024

Hi @ns6089, this development is planned to be developed on moonlight-android?

@ns6089
Copy link
Contributor Author

ns6089 commented Jun 7, 2024

this development is planned to be developed on moonlight-android?

Not anytime soon, no hardware support.

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

2 participants