Skip to content

Decode RFC 6716 CELT TF and allocation header#104

Merged
zshang-oai merged 1 commit intomainfrom
codex/celt-tf-allocation-header
Apr 23, 2026
Merged

Decode RFC 6716 CELT TF and allocation header#104
zshang-oai merged 1 commit intomainfrom
codex/celt-tf-allocation-header

Conversation

@zshang-oai
Copy link
Copy Markdown
Contributor

Summary

  • Adds RFC 6716 CELT TF/allocation-header decoding on top of the merged coarse-energy PR.
  • Decodes per-band tf_change values, optional tf_select, spread, dynamic band boost, and allocation trim.
  • Adds targeted unit coverage for TF changes, spread decisions, dynamic allocation boosts, allocation trim, and the allocation-header side-info flow.

RFC / reference notes

  • The side-info ordering follows RFC 6716 Section 4.3 and Table 56, with allocation-header decoding after coarse energy.
  • Time/frequency resolution changes follow RFC 6716 Section 4.3.1 and Tables 60-63.
  • Dynamic allocation and allocation trim are decoded in 1/8-bit units following RFC 6716 Section 4.3.3 and the C reference allocation-header flow.

Validation

  • git diff --check
  • GOCACHE=/tmp/opus-go-build-cache go test ./...
  • GOCACHE=/tmp/opus-go-build-cache go vet ./...
  • GOCACHE=/tmp/opus-go-build-cache go test -cover ./...
  • GOCACHE=/tmp/opus-go-build-cache golangci-lint run ./...

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 22, 2026

Codecov Report

❌ Patch coverage is 96.84211% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.43%. Comparing base (5889a8a) to head (9f69fe5).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
internal/celt/frame.go 96.84% 1 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #104      +/-   ##
==========================================
+ Coverage   84.08%   84.43%   +0.34%     
==========================================
  Files          16       16              
  Lines        3217     3308      +91     
==========================================
+ Hits         2705     2793      +88     
- Misses        447      448       +1     
- Partials       65       67       +2     
Flag Coverage Δ
go 84.43% <96.84%> (+0.34%) ⬆️

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 22, 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 (8.37s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector02 (2.86s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector03 (2.43s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_16000/channels_2/testvector04 (3.07s)
            --- 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.90s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector02 (1.67s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector03 (1.41s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_1/testvector04 (1.81s)
            --- 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 (9.61s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector02 (3.29s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector03 (2.78s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_24000/channels_2/testvector04 (3.53s)
            --- 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.00s)
        --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1 (7.44s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector02 (2.54s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector03 (2.16s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_1/testvector04 (2.73s)
            --- 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 (14.73s)
            --- FAIL: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector02 (5.04s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector03 (4.27s)
            --- PASS: TestRFC6716Conformance/rfc6716/rate_48000/channels_2/testvector04 (5.40s)
            --- 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 (72.63s)
        --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1 (3.87s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector02 (1.31s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector03 (1.13s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_1/testvector04 (1.43s)
            --- 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 (7.57s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector02 (2.58s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector03 (2.20s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_8000/channels_2/testvector04 (2.78s)
            --- 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 (4.02s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector02 (1.37s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector03 (1.16s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_1/testvector04 (1.49s)
            --- 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 (7.87s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector02 (2.69s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector03 (2.28s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_12000/channels_2/testvector04 (2.89s)
            --- 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 (4.25s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector02 (1.45s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector03 (1.24s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_1/testvector04 (1.56s)
            --- 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 (8.37s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector02 (2.86s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector03 (2.43s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_16000/channels_2/testvector04 (3.07s)
            --- 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.88s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector02 (1.66s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector03 (1.41s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_1/testvector04 (1.80s)
            --- 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 (9.61s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector02 (3.29s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector03 (2.78s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_24000/channels_2/testvector04 (3.53s)
            --- 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 (7.44s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector02 (2.54s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector03 (2.16s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_1/testvector04 (2.73s)
            --- 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 (14.75s)
            --- FAIL: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector01 (0.00s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector02 (5.04s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector03 (4.28s)
            --- PASS: TestRFC6716Conformance/rfc8251/rate_48000/channels_2/testvector04 (5.42s)
            --- 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	157.024s
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

This PR extends the CELT frame side-info decoder to cover RFC 6716’s time/frequency resolution and allocation-header fields, building on the existing coarse-energy decoding.

Changes:

  • Add decoding for per-band TF changes (including optional tf_select) and spread decision.
  • Add decoding for dynamic allocation boosts (bounded by RFC caps) and allocation trim.
  • Add unit tests covering TF changes, spread, dynamic allocation boosts, and allocation trim.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
internal/celt/tables.go Adds RFC lookup tables for TF selection mapping and dynamic allocation cap bounds.
internal/celt/frame.go Implements allocation-header decoding (TF changes, spread, dynamic allocation, allocation trim) and stores results in frameSideInfo.
internal/celt/frame_test.go Adds targeted unit tests and supporting range-decoder test helpers for new decode paths.

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

Comment thread internal/celt/frame_test.go Outdated
@zshang-oai zshang-oai force-pushed the codex/celt-tf-allocation-header branch from 6e48800 to f636c9b Compare April 23, 2026 04:32
@zshang-oai zshang-oai marked this pull request as ready for review April 23, 2026 05:08
@zshang-oai zshang-oai requested review from JoTurk and Sean-Der April 23, 2026 05:08
@zshang-oai zshang-oai force-pushed the codex/celt-tf-allocation-header branch from f636c9b to 9f69fe5 Compare April 23, 2026 05:10
@zshang-oai zshang-oai merged commit 4b0a40b into main Apr 23, 2026
28 of 29 checks passed
@zshang-oai zshang-oai deleted the codex/celt-tf-allocation-header branch April 23, 2026 16:31
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