-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Implement VideoToolbox-powered H.264 encoder for macOS #2263
base: devel
Are you sure you want to change the base?
Conversation
- Based on https://github.com/jsorg71/xrdp/tree/dynamic_monitor - Tested with xorgxrdp - Tested with vnc - Only works with single monitor. - Update documentation to clarify the difference between MSTSC and Microsoft Remote Desktop. - Compatible with NVENC and xorgxrdp_helper - Compatible with Nvidia. - Updates to include ms-rdpedisp.h header for the 2.2.2 specification of the protocol. - State machine for resizing. - Mechanisms to make sure the key frame is always sent on resize. - Adds new struct that shares the number of monitors with xrdp_client_info.h - Modification to the original resize setup that works with /gfx. - YAMI compat. - Updating to librfxcodec branch that is also a merge from mainline. - Made sure RFX progressive works. Depends on neutrinolabs/xorgxrdp#183
@jsorg71 and I are working on how to merge in everything into devel, but I'm afraid it might be a while. There's a lot to test and make sure is right. I suggest taking the pieces from mainline merge and working with us to build a plan on what should go first, and what can wait. |
I agree with @Nexarian's comment above. I'm happy to contribute to the review when you think the time is right. In the meantime, the CI pipeline should at least now be working on this PR. |
|
@unstabler - one way to solve this might be to re-exec xrdp after the xrdp I'm currently working on a branch where I've implemented some of what we'd need for this. If you're interested, let me know and I'll open a feature request where I can add more detail. |
I was also working on this part: team-unstablers#1 . However, I was afraid that my work did not fit the overall direction of this project, so I forked it under the name xrdp-tumod. If I complete team-unstablers#1 , I will post a PR on xrdp as well. |
Thanks for the update. I'm currently looking at splitting sesman into two executables to fix some long-standing problems. I've got to solve some of the same problems you have to get it working securely. If you want me to review anything, let me know. We probably don't want these to drift too far apart. |
Then, if you don't mind, I would like to request a partial review of team-unstablers#1, although the work is not that advanced yet. (+ can i post / move this PR to here?) Also, I need to reconstruct the (sorry for repost!) |
To reconstruct a You can either leave the file descriptor open and pass the number over, or use I've got examples of both in my split_session_driver branch, but be aware this is changing quite a lot at the moment. |
Changes / Notes
This PR is based / depends on Nexarian/xrdp/mainline_merge
This PR adds H.264/yuv420 support for macOS.
This PR contains Obj-C codes; these codes may not meet coding convention of this repository. (I thought it had to be written in Objective-C, but it wasn't.)Initialization of VTCompressionSession will fail if
fork=true
inxrdp.ini
TODO
kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder
to true