chore: add gitignore, documentation, and LC3 conformance test software
- Add .gitignore for Python, virtual environments, testing artifacts, IDE files, and LC3 test outputs including SQAM audio files - Add AGENTS.md with project context for LC3 implementation testing - Add LC3.TS.p5.pdf test specification document - Add LC3 conformance interoperability test software V1.0.8 with script readme and reference binary symlink
This commit is contained in:
125
README.md
Normal file
125
README.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# LC3 Encoder Qualification
|
||||
|
||||
Tests the `lc3py` encoder from `bumble-auracast` against the LC3 TS p5 conformance suite.
|
||||
**Scope: 15 ENC test cases, no 44.1 kHz** (lc3py does not support 44.1 kHz).
|
||||
|
||||
---
|
||||
|
||||
## 1 — System packages
|
||||
|
||||
```bash
|
||||
# Enable 32-bit architecture (required for wine32 to run LC3.exe)
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update
|
||||
|
||||
sudo apt-get install -y \
|
||||
wine \
|
||||
gcc \
|
||||
sox \
|
||||
libgstreamer1.0-dev \
|
||||
libgstreamer-plugins-base1.0-dev \
|
||||
libgstreamer-plugins-bad1.0-dev \
|
||||
autoconf automake libtool
|
||||
|
||||
sudo apt-get install -y wine32
|
||||
|
||||
# One-time: initialize a 32-bit Wine prefix (LC3.exe is a 32-bit Windows binary)
|
||||
WINEARCH=win32 WINEPREFIX=~/.wine32 wineboot
|
||||
```
|
||||
|
||||
> The runner script (`run_enc_tests.py`) sets `WINEARCH=win32 WINEPREFIX=~/.wine32` automatically.
|
||||
|
||||
---
|
||||
|
||||
## 2 — Build gstPEAQ (one-time)
|
||||
|
||||
gstPEAQ v0.6.1 is the open-source PEAQ implementation used as the ODG metric tool.
|
||||
|
||||
```bash
|
||||
cd /tmp
|
||||
wget https://github.com/HSU-ANT/gstpeaq/archive/refs/tags/version-0.6.1.tar.gz -O gstpeaq-0.6.1.tar.gz
|
||||
tar xzf gstpeaq-0.6.1.tar.gz
|
||||
cd gstpeaq-version-0.6.1
|
||||
|
||||
# Patch build system to skip gtk-doc (not needed for the binary)
|
||||
touch ChangeLog
|
||||
sed -i 's/^GTK_DOC_CHECK/#GTK_DOC_CHECK/' configure.ac
|
||||
echo "" > gtk-doc.make
|
||||
sed -i '81s/CLEANFILES +=/CLEANFILES =/' doc/Makefile.am
|
||||
sed -i 's/GTK_DOC_CHECK(1.10,--flavour no-tmpl)/: # GTK_DOC_CHECK disabled/' configure
|
||||
|
||||
autoreconf -i --force
|
||||
./configure
|
||||
make -C src # build only the binary, skip doc
|
||||
```
|
||||
|
||||
The binary and plugin will be at:
|
||||
- `/tmp/gstpeaq-version-0.6.1/src/peaq`
|
||||
- `/tmp/gstpeaq-version-0.6.1/src/.libs/libgstpeaq.so`
|
||||
|
||||
> These paths are already set in `conf_lc3ts_p5_enc_10ms.cfg` and `conf_lc3ts_p5_enc_75ms.cfg`.
|
||||
> If you build gstPEAQ elsewhere, update `peaq_bin` in both cfg files.
|
||||
|
||||
---
|
||||
|
||||
## 3 — Set up LC3 reference binary (one-time)
|
||||
|
||||
```bash
|
||||
cd /home/pstruebi/repos/lc3_quali
|
||||
SCRIPT_DIR=LC3_conformance_interoperability_test_software_V1.0.8_2024-07-01/LC3_Conformance_Interoperability_Script
|
||||
mkdir -p $SCRIPT_DIR/LC3_bin_current
|
||||
ln -sf $(pwd)/LC3_conformance_interoperability_test_software_V1.0.8_2024-07-01/LC3_Reference_Binary/LC3.exe \
|
||||
$SCRIPT_DIR/LC3_bin_current/LC3.exe
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4 — Install Python venv
|
||||
|
||||
```bash
|
||||
cd /home/pstruebi/repos/lc3_quali
|
||||
poetry install
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5 — Run
|
||||
|
||||
```bash
|
||||
poetry run python qualification/run_enc_tests.py
|
||||
```
|
||||
|
||||
Results are written to `qualification/results/DD_MM_YY_HH_MM/`:
|
||||
- **`SUMMARY.html`** — consultant-ready: all 15 TC IDs with PASS/FAIL
|
||||
- `ENC_*_<ts>.html` — detail reports (ODG per SQAM item)
|
||||
- `conformanceCheck_<ts>.log`
|
||||
- `lc3_conformance_<ts>/` — audio comparison WAVs (`ref_ref.wav` vs `tst_ref.wav`)
|
||||
|
||||
---
|
||||
|
||||
## Test Cases (15 total)
|
||||
|
||||
### 10ms frame duration (7 cases)
|
||||
|
||||
| Test Case ID | kHz | kbps | Config |
|
||||
|---|---|---|---|
|
||||
| LC3/ENC/NB/BV-01-C | 8 | 24 | 10ms |
|
||||
| LC3/ENC/WB/BV-01-C | 16 | 32 | 10ms |
|
||||
| LC3/ENC/SSWB/BV-01-C | 24 | 48 | 10ms |
|
||||
| LC3/ENC/SWB/BV-01-C | 32 | 64 | 10ms |
|
||||
| LC3/ENC/FB/BV-01-C | 48 | 80 | 10ms |
|
||||
| LC3/ENC/FB/BV-02-C | 48 | 96 | 10ms |
|
||||
| LC3/ENC/FB/BV-03-C | 48 | 124 | 10ms |
|
||||
|
||||
### 7.5ms frame duration (8 cases)
|
||||
|
||||
| Test Case ID | kHz | kbps | Config |
|
||||
|---|---|---|---|
|
||||
| LC3/ENC/NB/BV-02-C | 8 | 27.734 | 7.5ms |
|
||||
| LC3/ENC/WB/BV-02-C | 16 | 32 | 7.5ms |
|
||||
| LC3/ENC/SSWB/BV-02-C | 24 | 48 | 7.5ms |
|
||||
| LC3/ENC/SWB/BV-02-C | 32 | 64 | 7.5ms |
|
||||
| LC3/ENC/SWB/BV-03-C | 32 | 61.867 | 7.5ms |
|
||||
| LC3/ENC/FB/BV-07-C | 48 | 80 | 7.5ms |
|
||||
| LC3/ENC/FB/BV-08-C | 48 | 96 | 7.5ms |
|
||||
| LC3/ENC/FB/BV-09-C | 48 | 124.8 | 7.5ms |
|
||||
Reference in New Issue
Block a user