-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
feat(win/video): add support for recombined YUV444 encoding #2760
Conversation
Awesomely crazy. Or perhaps not hitting encoding limits at higher resolutions. Like, is my understanding correct that this pixel doubling would not allow for 1440p on (say) older VCE versions that max out at 4K? |
To be honest, I was more thinking of TVs than computers here. It's a mixed bag even there, but still it's not so rare.
You mean if the limit is actually implemented like 4096x2160 (usual old amd) vs 4096x4096 (usual old nvidia)? |
You can't encode 4:2:2 on nvidia gpus, implementing a path exclusively for intel will be too expensive.
I'm already calling it a day 😎 // Y U V
// +-------+ +---+ +---+
// | | | | | |
// | Y | |UR | |VR |
// | | | | | |
// +---+---+ +---+ +---+
// | | |
// |UL |VL |
// | | |
// +---+---+ |
You can't encode 4:4:4 on amd gpus either, and yet this is what this PR is about isn't it? |
Personally, I don't see a point in supporting recombination into 4:2:2 |
I mean, sure, of course this is already miraculous. If any I guess the improvement isn't that clear cut, because unlike with a direct cable connection it's not like there aren't already compression artifacts anyway. So if 4:4:4 couldn't fit in some whatever doubled 4:2:0 4K scenario, just lowering the resolution could also be a possible (and if not any easily immediate) alternative? |
fc48f22
to
3a1115d
Compare
2cc6a6a
to
a4ffe24
Compare
Quality Gate passedIssues Measures |
The code in this pull request is Not a Contribution under LizardByte Individual Contributor License Agreement. The feature itself is completed on sunshine side. |
Description
The continuation of #2533. It's possible to emulate YUV 4:4:4 on gpus that don't support it natively by doubling the YUV 4:2:0 pixel count and running custom recombination shaders on both encoding and decoding side. Like Microsoft did it in MS-RDPEGFX.
Prototype stage. Requires changes on moonlight's side: I currently have custom libplacebo mpv shader implemented for plvk backend, in the future it should be possible to add Direct3D11 and OpenGL shaders.
https://github.com/ns6089/Sunshine/compare/yuv444..yuv444in420
moonlight-common-c pull request: TBD
moonlight-qt pull request: TBD, testing branch https://github.com/ns6089/moonlight-qt/tree/yuv444in420
What works and what doesn't
To Do
Screenshot
Issues Fixed or Closed
Type of Change
.github/...
)Checklist
Branch Updates
LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.