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

Use different frame rates for H.264 and RFX #347

Merged
merged 1 commit into from
Nov 21, 2024

Conversation

metalefty
Copy link
Member

An enterprise user requests this. Some users in the company report that current 25Hz frame rates (40ms between frames) are noticeably laggy even when clients and servers are placed in under a 1ms network. Not all people feel laggy but some people are sensitive to screen latency.

I also feel 25Hz is noticeably laggy when network RTT >30-40ms.

Now we have H.264, a video codec which takes interframe differences. So, a higher frame rate does not necessarily consume more network bandwidth. In contrast, RFX doesn't take interframe differences. 2x frame rates might be twice the network bandwidth. This is the reason for using different frame rates per codec.

I'm going to make the frame interval value configurable. Where's the best place to put the configuration? xorg.conf? client_info and pass from xrdp?

@matt335672 Let me know your opinion.

@matt335672
Copy link
Member

It's a quite complex question.

The point you make about different users having different sensitivities is interesting. That would suggest having a per-client configuration, but there's nothing in the specification to allow for that.

I think the best place to put the configuration (for now) may be in the [Xorg] section of xorg.ini, and then to pass it to xorgxrdp. That gives sites a bit more flexibility to set up different configurations for different users. It's easier to put it the configuration in xorg.conf, but much harder to change if we do that.

Code so far looks fine, BTW.

@metalefty
Copy link
Member Author

I think they provide separate VM instances for xrdp server per user. Therefore, it is not necessary to have a configuration for each client. It would be nice to have such a per-client configuration but high framerate also satisfies non-sensitive users.

I think the best place to put the configuration (for now) may be in the [Xorg] section of xorg.ini, and then to pass it to xorgxrdp.

Do you mean command line arguments of Xorg (xorgxrdp)?

@matt335672
Copy link
Member

I was thinking more along the lines of (for example):-

;
; Session types
;

[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
port=-1
code=20
# Needed for 0.9.x
ip=127.0.0.1
#keycode_set=base
MinH264Refresh=16
MinRfxRefresh=32

When we connect to xorgxrdp we can send the values over. That lets the users play with different values without restarting the session.

@metalefty metalefty marked this pull request as ready for review November 18, 2024 14:33
@metalefty
Copy link
Member Author

@matt335672 Can you have a look at this and neutrinolabs/xrdp#3318?

@matt335672
Copy link
Member

Will do tomorrow (UK time).

@matt335672
Copy link
Member

LGTM!

@metalefty metalefty merged commit 1b6cd72 into neutrinolabs:devel Nov 21, 2024
8 checks passed
@metalefty metalefty deleted the frame_rates branch November 21, 2024 14:15
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.

2 participants