jamulussoftware / jamulussoftware/jamulus

Add Local- and Server- buffererror detection in CChannel

Open
#2,537 4 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

**What is the current behaviour and why should it be changed?**

Adding JitterBuffer error detection for both client and server side errors in CChannel.
(Preparation for issue #2524. As discussed in issue #2524)
At this moment there is only a jitterbuffer error detection for the client side, implemented in CClient.
A better way of detection can be implemented in CChannel and also the protocol will be extended (fully backwards compatible, no new messages.) to provide jitterbuffer error flags for both client and server on the client side.

**Describe possible approaches**

See the discussion in issue #2524.
Pro's:
- Client can now indicate Local buffer underuns as well as Server buffer underruns, making manual buffer setting easier for most users.
- Fully backwards compatible.

Cons:
- Still no server-side buffer underrun indication when connected to old servers (But in this case the client will hide the Server Jitter Buffer Status LED.).

We will use the PROTMESSID_JITT_BUF_SIZE message with buffersize=0 to send buffer underrun information from server to client. (The other way around would also be possible, but I don't see any use for it at the server side.)
The server will always explicitly send a "buffer underrun" message during connection setup, so the client will know that the server supports this new message (since old servers never send it.).
CChannel will have Get-And-Reset functions for both flags for use by CClient.

**Has this feature been discussed and generally agreed?**

See the discussion in issue #2524.

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing jitter-buffer error detection in CClient and the CChannel handling around PROTMESSID_JITT_BUF_SIZE; review issue #2524 for the agreed behavior. Implement the local and server buffer-underrun flags and their Get-And-Reset use by CClient, preserving compatibility with older servers. Done means both statuses are reported correctly and server capability is detected during connection setup.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
audio-video-rtc, networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.