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

Clock drift compensation on sender #675

Closed
14 tasks done
gavv opened this issue Jan 20, 2024 · 0 comments
Closed
14 tasks done

Clock drift compensation on sender #675

gavv opened this issue Jan 20, 2024 · 0 comments
Assignees
Milestone

Comments

@gavv
Copy link
Member

gavv commented Jan 20, 2024

  • Support RFC 6776 required by the two following RFCs
  • Support RFC 6843 to report e2e latency from receiver to sender
  • Add custom XR block to report niq latency from receiver to sender
  • Provide e2e latency to RTCP in receiver pipeline
  • Provide niq latency to RTCP in receiver pipeline
  • Add FeedbackMonitor (similar to LatencyMonitor), integrate it into sender pipeline, and pass to it jitter, e2e latency, and niq latency from RTCP
  • In FeedbackMonitor, use FreqEstimator to compute scaling and pass it to resampler
  • API: replace roc_clock_sync_backend and roc_clock_sync_profile with roc_latency_tuner_backend and roc_latency_tuner_profile
  • API: add roc_latency_tuner_backend and roc_latency_tuner_profile to roc_sender_config
  • API: add target_latency and latency_tolerance to roc_sender_config
  • CLI: replace --clock-backend and --clock-profile with --latency-backend and --latency-profile
  • CLI: replace --sess-latency with --target-latency
  • CLI: add --latency-backend and --latency-profile to roc-send
  • CLI: add --target-latency and --latency-tolerance to roc-send
@gavv gavv mentioned this issue Jan 23, 2024
13 tasks
@gavv gavv self-assigned this Jan 23, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 23, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 23, 2024
- Pass seqnum to RttEstimator
- Return metrics struct from RttEstimator
- Add metrics required by RFC 6843 and RFC 6776
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 23, 2024
- Add support for Delay Metrics XR block (RFC 6843) and
  Measurement Info XR block (RFC 6776)

- Send these blocks from receiver and handle them on sender

This allows to obtain e2e latency on sender and use it for sender-side
clock adjustment, which will be added in future commits.

Currently, receiver doesn't calculate min/max/avg RTT, and just
sends the latest value. This will be fixed in future commits.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 23, 2024
- Add support for Delay Metrics XR block (RFC 6843) and
  Measurement Info XR block (RFC 6776)

- Send these blocks from receiver and handle them on sender

This allows to obtain e2e latency on sender and use it for sender-side
clock adjustment, which will be added in future commits.

Currently, receiver doesn't calculate min/max/avg RTT, and just
sends the latest value. This will be fixed in future commits.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 23, 2024
- Add support for Delay Metrics XR block (RFC 6843) and
  Measurement Info XR block (RFC 6776)

- Send these blocks from receiver and handle them on sender

This allows to obtain e2e latency on sender and use it for sender-side
clock adjustment, which will be added in future commits.

Currently, receiver doesn't calculate min/max/avg RTT, and just
sends the latest value. This will be fixed in future commits.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 24, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
- Replace LatencyMonitorConfig w/ LatencyConfig, which may be also
  used for FeedbackMonitor

- Move target_latency to LatencyConfig

- Use single deduce_defaults() method instead of multiple
  deduce_xxx() calls for each parameter

- Extract ResamplerConfig and move deducing default backend to it

- Invoke deduce_defaults() when constructing pipelines
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
we introduce non-standard XR block "Queue Metrics Block"
(BT=220) which holds Network Incoming Queue Delay.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
- Pass seqnum to RttEstimator
- Return metrics struct from RttEstimator
- Add metrics required by RFC 6843 and RFC 6776
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
- Add support for Delay Metrics XR block (RFC 6843) and
  Measurement Info XR block (RFC 6776)

- Send these blocks from receiver and handle them on sender

This allows to obtain e2e latency on sender and use it for sender-side
clock adjustment, which will be added in future commits.

Currently, receiver doesn't calculate min/max/avg RTT, and just
sends the latest value. This will be fixed in future commits.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
- Replace LatencyMonitorConfig w/ LatencyConfig, which may be also
  used for FeedbackMonitor

- Move target_latency to LatencyConfig

- Use single deduce_defaults() method instead of multiple
  deduce_xxx() calls for each parameter

- Extract ResamplerConfig and move deducing default backend to it

- Invoke deduce_defaults() when constructing pipelines
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
we introduce non-standard XR block "Queue Metrics Block"
(BT=220) which holds Network Incoming Queue Delay.
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 26, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 28, 2024
- Extract LatencyTuner to be reused from LatencyMonitor and
  FeedbackMonitor

- Also reuse LatencyConfig and LatencyMetrics

- Refine LatencyConfig defaults

- Use LinkMeter in LatencyMonitor to obtain jitter

- Latency backend can't be disabled; there is now always a valid
  backend selected, however latency *tuning* can be disabled via
  latency tuner profile

- Receiver reports NIQ length and stalling to sender via a
  non-standard RTCP XR report

- API: replace roc_clock_sync_backend and roc_clock_sync_profile
  with roc_latency_tuner_backend and roc_latency_tuner_profile

- API: add roc_latency_tuner_backend, roc_latency_tuner_profile,
  target_latency, latency_tolerance to sender

- CLI: replace --clock-backend and --clock-profile with
  --latency-backend and --latency-profile

- CLI: rename --sess-latency to --target-latency

- CLI: add --latency-backend, --latency-profile, --target-latency,
  --latency-tolerance to sender
gavv added a commit to gavv/roc-toolkit that referenced this issue Jan 29, 2024
- Extract LatencyTuner to be reused from LatencyMonitor and
  FeedbackMonitor

- Also reuse LatencyConfig and LatencyMetrics

- Refine LatencyConfig defaults

- Use LinkMeter in LatencyMonitor to obtain jitter

- Latency backend can't be disabled; there is now always a valid
  backend selected, however latency *tuning* can be disabled via
  latency tuner profile

- Receiver reports NIQ length and stalling to sender via a
  non-standard RTCP XR report

- API: replace roc_clock_sync_backend and roc_clock_sync_profile
  with roc_latency_tuner_backend and roc_latency_tuner_profile

- API: add roc_latency_tuner_backend, roc_latency_tuner_profile,
  target_latency, latency_tolerance to sender

- CLI: replace --clock-backend and --clock-profile with
  --latency-backend and --latency-profile

- CLI: rename --sess-latency to --target-latency

- CLI: add --latency-backend, --latency-profile, --target-latency,
  --latency-tolerance to sender
@gavv gavv added this to the next milestone Jan 29, 2024
@gavv gavv closed this as completed Jan 29, 2024
gavv added a commit to gavv/roc-toolkit that referenced this issue Feb 20, 2024
Don't forget to pass latency_tuner_backend and latency_tuner_profile
from roc_sender_config to pipeline.

Sponsored-by: waspd
gavv added a commit to gavv/roc-toolkit that referenced this issue Feb 20, 2024
…nfig

Don't forget to pass latency_tuner_backend and latency_tuner_profile
from roc_sender_config to pipeline.

Sponsored-by: waspd
@gavv gavv added this to Roc Toolkit Jul 6, 2024
@gavv gavv moved this to Done in Roc Toolkit Jul 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

1 participant