jamulussoftware / jamulussoftware/jamulus

Improve the jitter buffer

Open
#545 17 comments 0 reactions 0 assignees View on GitHub
feature request
Dominant language
C
Stars
1.1k
Forks
248
Avg merge
2d 3h
Merged PRs (30d)
9

Description

The idea is:
A new jitter buffer uses a timing histogram to compute the actual jitter relative to the audio device or system clock timer.
A bit sequence will be added to all transmitted frames to improve the jitter histogram computation.

Open issues:
- What about compatibility to old Jamulus servers and clients?
- How does the new auto jitter buffer algorithm behave? For what situation is it optimized? See, e.g., https://github.com/corrados/jamulus/issues/417.
- The old algorithm was designed to measure the block error rate for different jitter buffer sizes. What is the metric for the new auto jitter buffer algorithm to set the buffer size?
- We are using an unused bit in the OPUS bit stream. Question: Why is this bit not used? Is it a reserved bit? Do we have a reference to the OPUS specification document, where this bit is mentioned? Is there a risk that at a later version of OPUS that this bit is then used by OPUS and we cannot upgrade Jamulus to a new OPUS version?
- A documentation of the algorithm should be added so that others can understand what's going on and can improve/tune the new algorithm.

A first patch is already available: https://github.com/corrados/jamulus/pull/539.

See also the discussion in the pull request: https://github.com/corrados/jamulus/pull/529#issuecomment-678292903

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the first patch in pull request #539 and the discussion in pull request #529. Examine the proposed timing histogram, transmitted-frame bit sequence, compatibility with older clients and servers, and OPUS bit usage. Done requires a settled algorithm and metric, resolved compatibility and specification questions, and documentation of the algorithm.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.