# 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_*_.html` — detail reports (ODG per SQAM item) - `conformanceCheck_.log` - `lc3_conformance_/` — 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 |