Skip to content

Add SILK gain quantization#162

Merged
thomas-vilte merged 2 commits into
pion:mainfrom
thomas-vilte:feat/silk-gains
Jul 23, 2026
Merged

Add SILK gain quantization#162
thomas-vilte merged 2 commits into
pion:mainfrom
thomas-vilte:feat/silk-gains

Conversation

@thomas-vilte

Copy link
Copy Markdown
Member

Description

adds quantizeGains — per-subframe log-domain gain quantization with hysteresis (silk_gains_quant): independent 6-bit gain index for the first subframe of a frame (when not delta-coded), delta index otherwise, with a double-step mechanism so large gain jumps can still be reached within the delta range

ported from gain_quant.c

this one needed a small structural change, not just a straight extraction: quantizeGains was a method on *Encoder (kept the running previousLogGain on the struct), but that type doesn't exist in this package yet — same blocker as find_pitch_lags.go/encodeNLSF/quantLTPGains before it. Instead of deferring the whole file (there'd be nothing left for this PR), I turned it into a plain function that takes previousLogGain as an explicit *int32 in/out parameter, mirroring the pattern pitchAnalysisCore already uses for ltpCorr in this same package. encodeSubframeGains/emitGainIndices (the range-coder wiring) are what's still deferred to the orchestration piece

tests replay the decoder's reconstruction math directly against the returned indices instead of a full Encoder→bitstream→Decoder round trip, same approach as the NLSF piece (#160)

Reference issue

part of the SILK encoder series (#160)

Co-authored-by: François Allais <francois.allais@hotmail.com>
@thomas-vilte
thomas-vilte requested a review from FrantaBOT July 22, 2026 16:42
@codecov

codecov Bot commented Jul 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.31%. Comparing base (12f8137) to head (e573bce).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #162      +/-   ##
==========================================
+ Coverage   89.27%   89.31%   +0.04%     
==========================================
  Files          44       45       +1     
  Lines        8783     8817      +34     
==========================================
+ Hits         7841     7875      +34     
  Misses        707      707              
  Partials      235      235              
Flag Coverage Δ
go 89.31% <100.00%> (+0.04%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@thomas-vilte
thomas-vilte merged commit 9d51863 into pion:main Jul 23, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants