Skip to content

Add adaptive spreading and intensity hysteresis#138

Open
thomas-vilte wants to merge 1 commit into
mainfrom
feat/opus-adaptive-spread
Open

Add adaptive spreading and intensity hysteresis#138
thomas-vilte wants to merge 1 commit into
mainfrom
feat/opus-adaptive-spread

Conversation

@thomas-vilte

Copy link
Copy Markdown
Contributor

Description

The encoder was hardcoding spread=NORMAL every frame. This PR makes it actually look at the MDCT spectrum and decide how much spreading the PVQ needs.

Added spreadingDecision() which computes a peak-to-mean energy ratio per band — tonal signals (one bin dominates) score high, noise-like signals score low. The result feeds a recursive inter-frame average and then hysteresisDecision() to avoid chattering at threshold crossings. Same idea as libopus spreading_decision in celt_encoder.c but in float32 with a uniform band weight, since the tonality-based weight is disabled in libopus production anyway.

Also added a ±1 dead band for the intensity stereo start band so it can only move one step per frame instead of jumping around.

Reference issue

Fixes #...

@codecov

codecov Bot commented Jun 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.28571% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.86%. Comparing base (ed324a7) to head (74d221d).

Files with missing lines Patch % Lines
internal/celt/encoder.go 76.47% 2 Missing and 2 partials ⚠️
internal/celt/analysis.go 92.59% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #138      +/-   ##
==========================================
+ Coverage   86.85%   86.86%   +0.01%     
==========================================
  Files          30       31       +1     
  Lines        6967     7022      +55     
==========================================
+ Hits         6051     6100      +49     
- Misses        704      707       +3     
- Partials      212      215       +3     
Flag Coverage Δ
go 86.86% <89.28%> (+0.01%) ⬆️

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.

@github-actions

Copy link
Copy Markdown

RFC 6716 / 8251 conformation

Status: pass

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

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

Inputs use the shared RFC 6716 / RFC 8251 bitstream corpus; accepted references follow RFC 8251 Section 11.

rate ch 01 02 03 04 05 06 07 08 09 10 11 12
8000 1 91.4 59.7 66.3 75.1 75.0 67.8 76.0 70.0 75.5 85.9 91.0 43.4
8000 2 93.3 57.6 66.1 75.3 75.2 67.9 76.0 70.4 76.2 86.0 93.0 43.7
12000 1 95.6 83.4 71.8 79.1 77.0 69.0 85.1 81.6 84.8 88.1 94.9 66.0
12000 2 96.0 83.3 71.3 79.2 77.3 69.1 85.1 81.8 85.2 87.0 95.8 66.1
16000 1 95.3 91.4 88.1 81.6 77.2 68.9 89.9 86.2 78.8 89.5 96.3 56.5
16000 2 94.7 90.7 88.1 80.6 77.6 69.1 89.8 87.6 78.9 87.5 96.4 56.7
24000 1 96.7 92.0 83.2 85.9 77.5 68.4 93.9 92.4 89.2 95.4 97.9 68.5
24000 2 96.8 90.6 82.8 86.1 77.8 68.8 93.9 93.5 92.1 87.7 98.1 68.6
48000 1 98.4 92.1 87.7 85.9 77.4 68.3 98.1 96.2 95.9 96.0 98.4 88.8
48000 2 99.8 90.6 87.8 86.1 77.7 68.6 99.6 93.7 94.4 87.7 99.7 88.9
Run output
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector09
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector03: Opus quality metric: 71.3 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector08
TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector10: Opus quality metric: 86.0 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector07
TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector09: Opus quality metric: 76.2 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector06
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector09: Opus quality metric: 85.2 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector05
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector07: Opus quality metric: 85.1 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector04
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector08: Opus quality metric: 81.8 %
=== CONT  TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector06
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector06: Opus quality metric: 69.1 %
=== CONT  TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector07
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector05: Opus quality metric: 77.3 %
=== CONT  TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector02
TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector06: Opus quality metric: 67.9 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector11
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector04: Opus quality metric: 79.2 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector02
TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector07: Opus quality metric: 76.0 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector01
TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector11: Opus quality metric: 94.9 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector12
TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector02: Opus quality metric: 90.7 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector09
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector02: Opus quality metric: 83.3 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector10
TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector12: Opus quality metric: 66.0 %
=== CONT  TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector05
TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector01: Opus quality metric: 96.0 %
=== CONT  TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector08
TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector09: Opus quality metric: 84.8 %
TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector10: Opus quality metric: 88.1 %
TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector08: Opus quality metric: 81.6 %
TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector05: Opus quality metric: 75.2 %
Opus conformance matrix
Legend: numeric cells are opus_compare quality percentages; FAIL means the vector did not pass.
Inputs use the shared RFC 6716 / RFC 8251 bitstream corpus; accepted references follow RFC 8251 Section 11.
+----------+----+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| rate     | ch | 01    | 02    | 03    | 04    | 05    | 06    | 07    | 08    | 09    | 10    | 11    | 12    |
+----------+----+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 8000     | 1  | 91.4  | 59.7  | 66.3  | 75.1  | 75.0  | 67.8  | 76.0  | 70.0  | 75.5  | 85.9  | 91.0  | 43.4  |
| 8000     | 2  | 93.3  | 57.6  | 66.1  | 75.3  | 75.2  | 67.9  | 76.0  | 70.4  | 76.2  | 86.0  | 93.0  | 43.7  |
| 12000    | 1  | 95.6  | 83.4  | 71.8  | 79.1  | 77.0  | 69.0  | 85.1  | 81.6  | 84.8  | 88.1  | 94.9  | 66.0  |
| 12000    | 2  | 96.0  | 83.3  | 71.3  | 79.2  | 77.3  | 69.1  | 85.1  | 81.8  | 85.2  | 87.0  | 95.8  | 66.1  |
| 16000    | 1  | 95.3  | 91.4  | 88.1  | 81.6  | 77.2  | 68.9  | 89.9  | 86.2  | 78.8  | 89.5  | 96.3  | 56.5  |
| 16000    | 2  | 94.7  | 90.7  | 88.1  | 80.6  | 77.6  | 69.1  | 89.8  | 87.6  | 78.9  | 87.5  | 96.4  | 56.7  |
| 24000    | 1  | 96.7  | 92.0  | 83.2  | 85.9  | 77.5  | 68.4  | 93.9  | 92.4  | 89.2  | 95.4  | 97.9  | 68.5  |
| 24000    | 2  | 96.8  | 90.6  | 82.8  | 86.1  | 77.8  | 68.8  | 93.9  | 93.5  | 92.1  | 87.7  | 98.1  | 68.6  |
| 48000    | 1  | 98.4  | 92.1  | 87.7  | 85.9  | 77.4  | 68.3  | 98.1  | 96.2  | 95.9  | 96.0  | 98.4  | 88.8  |
| 48000    | 2  | 99.8  | 90.6  | 87.8  | 86.1  | 77.7  | 68.6  | 99.6  | 93.7  | 94.4  | 87.7  | 99.7  | 88.9  |
+----------+----+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+
--- PASS: TestRFC6716Conformance (110.33s)
    --- PASS: TestRFC6716Conformance/vectors (0.00s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector07 (1.57s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector01 (2.07s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector04 (3.33s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector03 (2.64s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector01 (4.29s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector02 (3.09s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector12 (1.69s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector11 (2.01s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector01 (3.83s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector10 (2.23s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector09 (1.89s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector08 (1.79s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector07 (1.53s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector06 (1.68s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector05 (1.81s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector04 (1.70s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector03 (1.35s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_1/testvector02 (1.57s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector07 (3.65s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector12 (6.43s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector11 (7.36s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector10 (7.88s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector09 (6.74s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector08 (6.59s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector07 (5.52s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector06 (6.16s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector05 (6.76s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector03 (5.08s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector04 (6.42s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector02 (5.99s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector12 (3.23s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector11 (3.73s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_2/testvector01 (7.27s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector09 (3.46s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector10 (4.02s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector08 (3.33s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector07 (2.80s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector06 (3.14s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector05 (3.39s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector03 (2.57s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector04 (3.25s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector02 (3.03s)
        --- PASS: TestRFC6716Conformance/vectors/rate_48000/channels_1/testvector01 (3.72s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector12 (4.19s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector11 (4.84s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector10 (5.23s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector09 (4.49s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector08 (4.36s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector12 (1.85s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector11 (2.17s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector10 (4.33s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector09 (2.06s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector10 (2.40s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector07 (1.64s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector08 (1.96s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector06 (1.83s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector03 (1.47s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector04 (1.85s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector05 (1.99s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector02 (1.73s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_1/testvector01 (2.21s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector12 (3.43s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector04 (2.14s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector11 (4.00s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector06 (4.08s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector03 (3.32s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector04 (4.21s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector05 (4.41s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector12 (2.13s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector02 (3.94s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector11 (2.51s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_2/testvector01 (4.81s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector09 (2.34s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector10 (2.73s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector08 (2.23s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector07 (1.88s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector06 (2.11s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector05 (2.26s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector03 (1.69s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector02 (1.99s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector09 (3.92s)
        --- PASS: TestRFC6716Conformance/vectors/rate_24000/channels_1/testvector01 (2.52s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector12 (3.64s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector11 (4.22s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector12 (3.30s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector10 (4.59s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector06 (1.75s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector04 (1.78s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector05 (1.88s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector03 (1.40s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector02 (1.62s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector01 (2.09s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector07 (3.19s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector08 (3.81s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector05 (3.87s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector06 (3.54s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector03 (2.91s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector08 (3.45s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector04 (3.66s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector11 (3.93s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector03 (2.71s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector10 (4.17s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector09 (3.59s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector09 (3.71s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector07 (3.01s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector08 (3.60s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector06 (3.36s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector05 (3.65s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector06 (3.22s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector04 (3.45s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector07 (2.90s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector11 (2.06s)
        --- PASS: TestRFC6716Conformance/vectors/rate_16000/channels_2/testvector02 (3.41s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector02 (3.22s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector12 (1.74s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_2/testvector01 (3.99s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector09 (1.95s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector10 (2.27s)
        --- PASS: TestRFC6716Conformance/vectors/rate_12000/channels_1/testvector08 (1.60s)
        --- PASS: TestRFC6716Conformance/vectors/rate_8000/channels_2/testvector05 (2.93s)
=== RUN   TestRFC6716ConformanceEncoder
=== RUN   TestRFC6716ConformanceEncoder/mono_sine
TestRFC6716ConformanceEncoder/mono_sine: Opus quality metric: 99.8 %
TestRFC6716ConformanceEncoder/mono_sine: Go encoder vs original: below quality threshold, weighted error 42.726823 (delay 229 samples)
TestRFC6716ConformanceEncoder/mono_sine: reference encoder vs original: below quality threshold, weighted error 0.300608 (delay 312 samples)
=== RUN   TestRFC6716ConformanceEncoder/stereo_tones
TestRFC6716ConformanceEncoder/stereo_tones: Opus quality metric: 99.9 %
TestRFC6716ConformanceEncoder/stereo_tones: Go encoder vs original: below quality threshold, weighted error 33.504677 (delay 337 samples)
TestRFC6716ConformanceEncoder/stereo_tones: reference encoder vs original: below quality threshold, weighted error 0.383133 (delay 312 samples)
=== RUN   TestRFC6716ConformanceEncoder/stereo_wide
TestRFC6716ConformanceEncoder/stereo_wide: Opus quality metric: 99.9 %
TestRFC6716ConformanceEncoder/stereo_wide: Go encoder vs original: below quality threshold, weighted error 79.795163 (delay 232 samples)
TestRFC6716ConformanceEncoder/stereo_wide: reference encoder vs original: below quality threshold, weighted error 0.611077 (delay 312 samples)
=== RUN   TestRFC6716ConformanceEncoder/stereo_broadband_low_bitrate
TestRFC6716ConformanceEncoder/stereo_broadband_low_bitrate: Opus quality metric: 100.0 %
TestRFC6716ConformanceEncoder/stereo_broadband_low_bitrate: Go encoder vs original: below quality threshold, weighted error 2.316849 (delay 106 samples)
TestRFC6716ConformanceEncoder/stereo_broadband_low_bitrate: reference encoder vs original: below quality threshold, weighted error 0.910593 (delay 1712 samples)
--- PASS: TestRFC6716ConformanceEncoder (16.79s)
    --- PASS: TestRFC6716ConformanceEncoder/mono_sine (1.36s)
    --- PASS: TestRFC6716ConformanceEncoder/stereo_tones (1.38s)
    --- PASS: TestRFC6716ConformanceEncoder/stereo_wide (1.38s)
    --- PASS: TestRFC6716ConformanceEncoder/stereo_broadband_low_bitrate (1.36s)
PASS
ok  	github.com/pion/opus	127.118s

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