Skip to content

Decode RFC 6716 CELT PVQ bands#107

Merged
zshang-oai merged 1 commit intomainfrom
codex/celt-pvq-bands
Apr 28, 2026
Merged

Decode RFC 6716 CELT PVQ bands#107
zshang-oai merged 1 commit intomainfrom
codex/celt-pvq-bands

Conversation

@zshang-oai
Copy link
Copy Markdown
Contributor

@zshang-oai zshang-oai commented Apr 24, 2026

Summary

  • Implements PVQ band recursion, CWRS pulse decoding, residual normalization/rotation, and the range-decoder helpers needed by the band decoder.
  • Keeps scoped unused suppressions because this PR intentionally stages the PVQ primitives before the following synthesis/wiring slice consumes them.

RFC / reference notes

  • Continues the CELT layer after RFC 6716 Section 4.3.3 allocation by adding the band-shape decoding path used by Section 4.3.4.
  • Keeps the recursive band structure, CWRS naming, and PVQ math close to the RFC/C reference to keep later conformance debugging tractable.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 24, 2026

Codecov Report

❌ Patch coverage is 81.03704% with 128 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.13%. Comparing base (db0d870) to head (72fe5c1).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
internal/celt/bands.go 78.99% 92 Missing and 21 partials ⚠️
internal/celt/pvq.go 88.57% 5 Missing and 3 partials ⚠️
internal/celt/cwrs.go 87.93% 5 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #107      +/-   ##
==========================================
- Coverage   82.33%   82.13%   -0.20%     
==========================================
  Files          17       20       +3     
  Lines        2694     3369     +675     
==========================================
+ Hits         2218     2767     +549     
- Misses        381      482     +101     
- Partials       95      120      +25     
Flag Coverage Δ
go 82.13% <81.03%> (-0.20%) ⬇️

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

☔ View full report in Codecov by Sentry.
📢 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.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 24, 2026

RFC 6716 / 8251 conformation

Status: fail (informational)

The action extracts the RFC 6716 reference implementation, applies the RFC 8251 decoder update patch, and then builds the patched reference tools.

This check is informational while CELT support is incomplete; the workflow still reports success.

Legend: numeric cells are opus_compare quality percentages; FAIL means the vector did not pass.

rfc6716

rate ch 01 02 03 04 05 06 07 08 09 10 11 12
8000 1 FAIL 59.4 66.5 75.2 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
8000 2 FAIL 57.6 66.1 75.3 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
12000 1 FAIL 83.4 71.9 79.0 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
12000 2 FAIL 83.3 71.3 79.2 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
16000 1 FAIL 88.3 87.9 81.5 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
16000 2 FAIL 90.7 88.1 80.6 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
24000 1 FAIL 87.9 83.1 85.5 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
24000 2 FAIL 90.6 82.8 86.1 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
48000 1 FAIL 88.0 87.5 85.6 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
48000 2 FAIL 90.6 87.8 86.1 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL

rfc8251

rate ch 01 02 03 04 05 06 07 08 09 10 11 12
8000 1 FAIL 59.4 66.5 75.2 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
8000 2 FAIL 57.6 66.1 75.3 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
12000 1 FAIL 83.4 71.9 79.0 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
12000 2 FAIL 83.3 71.3 79.2 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
16000 1 FAIL 88.3 87.9 81.5 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
16000 2 FAIL 90.7 88.1 80.6 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
24000 1 FAIL 87.9 83.1 85.5 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
24000 2 FAIL 90.6 82.8 86.1 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
48000 1 FAIL 88.0 87.5 85.6 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
48000 2 FAIL 90.6 87.8 86.1 FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
Run output
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2 (6.79s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector02 (2.32s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector03 (1.97s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector04 (2.49s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1 (4.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector02 (1.36s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector03 (1.15s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector04 (1.47s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2 (7.82s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector02 (2.67s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector03 (2.26s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector04 (2.88s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector12 (0.01s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1 (6.08s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector02 (2.07s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector03 (1.77s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector04 (2.23s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector12 (0.01s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2 (11.94s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector02 (4.09s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector03 (3.47s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector04 (4.37s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector12 (0.01s)
    --- FAIL: TestRFC6716Conformance/rfc8251 (59.12s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1 (3.19s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector02 (1.09s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector03 (0.92s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector04 (1.17s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2 (6.15s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector02 (2.09s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector03 (1.79s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector04 (2.26s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1 (3.30s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector02 (1.12s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector03 (0.95s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector04 (1.22s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2 (6.42s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector02 (2.20s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector03 (1.85s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector04 (2.37s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1 (3.48s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector02 (1.18s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector03 (1.01s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector04 (1.27s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2 (6.78s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector02 (2.32s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector03 (1.98s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector04 (2.48s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1 (4.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector02 (1.36s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector03 (1.15s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector04 (1.47s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector12 (0.00s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2 (7.80s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector02 (2.67s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector03 (2.26s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector04 (2.86s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector12 (0.01s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1 (6.07s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector02 (2.07s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector03 (1.76s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector04 (2.23s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector12 (0.01s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2 (11.94s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector02 (4.09s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector03 (3.47s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector04 (4.37s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector05 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector06 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector07 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector08 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector09 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector10 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector11 (0.00s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector12 (0.01s)
FAIL
FAIL	github.com/pion/opus	130.677s
FAIL

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds CELT PVQ band-shape decoding primitives (RFC 6716 §4.3.4) and supporting range-decoder helpers, along with targeted unit tests to validate the new PVQ/CWRS/band math and decoding paths.

Changes:

  • Extend the range decoder with SetStorageSize, DecodeCumulative, and UpdateCumulative plus new tests.
  • Introduce CELT CWRS pulse decoding and PVQ residual normalization/rotation helpers with tests.
  • Add recursive PVQ band decoding (quantBand / quantAllBands) and math helpers with tests.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
internal/rangecoding/decoder.go Adds storage truncation support and cumulative decode/update helpers for CELT-style symbols.
internal/rangecoding/decoder_test.go Adds unit tests covering cumulative decoding and storage-size adjustment.
internal/celt/cwrs.go Implements CWRS (PVQ pulse vector) decoding helpers.
internal/celt/cwrs_test.go Adds tests for CWRS recurrence rows and decoding.
internal/celt/pvq.go Implements PVQ residual normalization, spreading rotation, and stereo merge helpers.
internal/celt/pvq_test.go Adds tests for PVQ residual helpers, rotation, alg unquant, and stereo merge.
internal/celt/bands.go Adds recursive CELT band shape decoding (quantBand/quantAllBands) and associated math/Hadamard helpers.
internal/celt/bands_test.go Adds tests covering quantBand/quantAllBands and helper math routines.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/celt/pvq.go
Comment thread internal/celt/cwrs.go Outdated
Comment thread internal/celt/bands.go
Comment thread internal/celt/bands.go Outdated
@zshang-oai zshang-oai force-pushed the codex/celt-pvq-bands branch from 88fac34 to 72fe5c1 Compare April 24, 2026 23:56
@zshang-oai zshang-oai marked this pull request as ready for review April 27, 2026 17:48
@zshang-oai zshang-oai requested review from JoTurk and Sean-Der April 27, 2026 17:48
@zshang-oai zshang-oai merged commit 0012a32 into main Apr 28, 2026
20 checks passed
@zshang-oai zshang-oai deleted the codex/celt-pvq-bands branch April 28, 2026 16:29
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.

3 participants