-
-
Notifications
You must be signed in to change notification settings - Fork 217
RTCP improvements #674
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
Comments
If receiver RTCP endpoint is bound to multicast address, it now uses Report_ToAddress instead of Report_Back mode.
- packet_count: On receiver, derive it from packet_count in SR, and handle 32-bit wraps. On sender, derive it from ext_first_sn and ext_last_sn, and also handle 32-bit wraps - fract_loss: automatically calculate loss ratio since last report based on packet_count and cum_loss
- packet_count: On receiver, derive it from packet_count in SR, and handle 32-bit wraps. On sender, derive it from ext_first_sn and ext_last_sn, and also handle 32-bit wraps - fract_loss: automatically calculate loss ratio since last report based on packet_count and cum_loss
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
Results of first 3 tests - good wifi, bad wifi, and ethernet: https://github.com/roc-streaming/qa/tree/326e7ef46c4e9ec1c98f5af66345432732fc9983/reports/20241230_gh674_clock_offset I think we need to try more aggressive smoothing of clock offset, which is especially notable on the second tests where RTT jitter was high. However, even in that test, clock offset jitter was below 1ms, and 95-percentile of clock offset jitter was 60 microseconds, which I think is already cool! Note: all these tests were done without SCHED_RR (no root) and when input & output are files. I plan to do tests with SCHED_RR separately to see what effect does it have. (BTW we probably want SCHED_RR in both netio and sndio threads, not just netio). PulseAudio & ALSA are to be handled separately as well (I guess not in this issue). My next step will be to pass clock offset to e2e latency, enable latency tuning based on e2e, and build test bench to measure actual latency using signal-estimator. These experiments are going to be quite time consuming, so before I start:
@baranovmv Let me know if you have suggestions. |
Thank you for so thorough evaluation It might be more representative to compute
To be continued... |
Indeed, though probably only rtt? Because our goal is to minimize jitter of clock offset after smoothing, not before. |
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
In order to be able to tune receiver's latency relying on timestamp mapping that we get from RTCP feedback, and UDP::Receive_timestamp, adding these features: * roc-streaminggh-674: Use receive timestamp (RTS) as report time when processing RTCP report; * RTT dumping for debugging (csvplotter ts_offset branch); * SCHED_RR for network io thread (run with root privs).
Follow-up for #14 and #675.
The text was updated successfully, but these errors were encountered: