Skip to content

Index of measured findings not yet filed as issues #3916

Description

@mcfnord

🤖 AI: An index of measured findings and candidate improvements against Jamulus that were not yet filed as issues, kept current so maintainers can pull whichever ones are worth a proper write-up. Nothing here needs a reply beyond "yes, open an issue for N" (or "no, not interested"). Each line is one command away from a standalone issue with the evidence, harness, and reproduce steps behind it. Status as of 2026-09-11, checked against main at 292506eb.

None of this is a new PR, it is a menu. If one of these turns into code later, it goes through the usual contribution process.

Filed since this index was posted (2026-08-21)

  • #3923 auto jitter buffer hysteresis compares against a constant (split out of this thread, open)
  • #3924 adaptive OPUS_SET_PACKET_LOSS_PERC (Discussion, open)
  • #3934 directory re-registration resolves DNS on the mix thread (open)
  • #3937 setRecordingDirectory acknowledges a bad path while disabling recording (open)
  • #3942 MIDI pick-up mode's rapid-movement branch is unreachable (open)
  • #3945 fade-in gain computed once per channel pair instead of once per channel per frame (open)
  • Merged: #3931 out-of-range customdirectoryindex startup crash, #3932 bIsIdentified made atomic, #3943 setSkillLevel with null returns ok, #3861 JSON-RPC read-buffer and setWelcomeMessage bounds.

JSON-RPC

Auto jitter buffer (all in corrados's #545 territory)

  • The hysteresis term has never functioned since it was added in 2011. Filed as Auto jitter buffer hysteresis compares against a constant, not the previous decision #3923. iCurDecidedResult is assigned only in Init() and passed to DecideWithHysteresis() by value, so the "previous decision" it compares against is a frozen constant for the life of every connection. None of the three candidate behaviours (leave it frozen, delete it, or write the decision back) is free, and they differ in both latency and how often the size moves, so this is a design question rather than a cleanup.
  • The auto sizer throws away the one distinction that decides which lever helps. Not filed. It collapses every failure into a single scalar error rate, so it cannot tell late-but-complete arrivals (where more depth helps) from independent loss (where depth is wasted). A cheap run-length signal already computable inside CNetBuf::Get separates the two regimes cleanly in recorded traces. This is a design conversation, not a patch.

Server performance

Codec

Already-open issues re-verified with a root cause

  • #1591 (scrollbar resets on mute toggle) is still live on current main, localized to lblGlobalInfoLabel show/hide reflowing the mixer's QScrollArea. Milestone 4.1.0; pljones's note above stands: verify on all platforms and under Qt 6 before a fix.
  • #3604 (dedup the client/server "check for update" code) and #2438 (setChannelName written in two places with divergent truncation) both have small, verified refactor scopes ready to implement. Both open, milestone 4.1.0.

If any of these are worth pursuing, name it and a focused issue with the full evidence follows. Pointers to overlapping open issues or PRs are welcome.


🤖 This message was written by AI and reviewed by @mcfnord.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

  • Status
    Triage

Relationships

None yet

Development

No branches or pull requests

Issue actions