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

RTCP improvements #674

Open
3 of 13 tasks
gavv opened this issue Jan 20, 2024 · 0 comments
Open
3 of 13 tasks

RTCP improvements #674

gavv opened this issue Jan 20, 2024 · 0 comments

Comments

@gavv
Copy link
Member

gavv commented Jan 20, 2024

Follow-up for #14 and #675.

  • Refine packet counter calculation. 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. (add rtcp::PacketCounter)
  • Add fract_loss calculation - loss ratio since last report. (add rtcp::LossEstimator)
  • Use receive timestamp (RTS) as report time when processing RTCP report.
  • Support multiple sources on sender (for cases like RaptorQ).
  • Implement rtcp::IntervalComputer (computes packet generation interval according to algorithm from RFC 3550) and use in rtcp::Communicator instead of hard-coded 200ms report interval.
  • Add sliding window to rtcp::RttEstimator. Compute moving minimum RTT, and average clock_shift based on it. Adjust communicator RTT tests to ensure that sliding window improves RTT & clock offset estimation precision.
  • Implement RTCP BYE exchange. Handle exit by signal and ask pipeline to generate BYE. Processing of BYE is already implemented.
  • Fix RTCP multicast support. If receiver RTCP endpoint is bound to multicast address, it should use Report_ToAddress instead of Report_Back mode.
  • Always collect metrics for all receivers in FeedbackMonitor. If single-receiver mode is enabled, additionally create latency tuner, otherwise just collect metrics. Needed for Metrics API #681.
  • Implement local SSRC change in FeedbackMonitor when latency goes out of bounds (to initiate session restart on remote side).
  • Add tests with real captured packets.
  • Schedule pipeline refresh() according to nearest deadline returned from RTCP.
  • Handle system clock jumps in pipeline (since it breaks RTCP).
@gavv gavv added this to Frontlog in kanban board Jan 20, 2024
@gavv gavv changed the title RTCP support improvements RTCP improvements Jan 23, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 30, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 31, 2024
If receiver RTCP endpoint is bound to multicast address, it
now uses Report_ToAddress instead of Report_Back mode.
This was referenced Jan 31, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Feb 5, 2024
- 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
gavv added a commit to gavv/roc-toolkit that referenced this issue Feb 5, 2024
- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

1 participant