Hva er QOA lydfilformat? Funksjoner, arkitektur og hvordan åpne det
I digital lydteknikk og spillutvikling har det alltid vært utfordrende å balansere filstørrelse, avspillingslatens og CPU-overskudd. Standardformater som MP3, AAC og Ogg Vorbis tilbyr høye komprimeringsforhold, men krever komplekse dekodingspipelines, tung flyttallsaritmetikk og betydelige minneavtrykk. På den andre siden av spekteret gir ukomprimert PCM (.wav) null‑latens avspilling på bekostning av massiv diskbruk og treg levering av ressurser.
QOA (Quite OK Audio)-formatet fyller dette gapet. Opprettet av Dominic Szablewski (skaperen av det mye rosede QOI-bildeformatet), er QOA et åpen kildekode, med tap lydformat tilpasset lynrask dekoding, minimal kompleksitet og forutsigbar minnebruk.
Hva er en QOA-fil?
En fil med .qoa-utvidelsen lagrer komprimert digital lyd ved hjelp av Quite OK Audio-formatet. Den opererer på pulskode-modulert (PCM) lyddata med 16-bit dybde over samplingsfrekvenser fra $1\text{ Hz}$ opp til $16,777,215\text{ Hz}$ og støtter opptil 31 lydkanaler.
I motsetning til psykoakustiske kodeker som er avhengige av frekvensdomene-transformasjoner (som den modifiserte diskrete cosinustransformasjonen eller MDCT), fungerer QOA helt i tidsdomenet. Den komprimerer lyd til et fast forhold på nøyaktig $3.2\text{ bits per sample}$, og oppnår en konstant $5:1$ komprimeringsratio over rå 16-bit lineær PCM.
For standard CD-kvalitetslyd (44,1 kHz, stereo) oppnår en QOA-strøm en nøyaktig, konstant bithastighet på:
$$\text{Bithastighet} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Detaljerte funksjoner i QOA
1. Minimalistisk spesifikasjon og implementering
Tradisjonelle moderne kodeker krever hundrevis av sider med tekniske spesifikasjoner og tusenvis av kodelinjer for å implementeres. I kontrast passer hele QOA-formatspesifikasjonen på en enkeltsides PDF, og den offisielle referanseimplementasjonen (qoa.h) består av omtrent 400 linjer med standard C‑kode.
2. Tidsdomene LMS-prediksjon
QOA unngår beregningsintensive transformasjonsalgoritmer. I stedet bruker den et adaptivt Least Mean Squares (LMS) prediksjonsfilter med fire historiske vekter per kanal. Ved å estimere fremtidige sampleverdier og kun registrere kvantiserte residualdifferanser, leverer QOA transparent perseptuell lydkvalitet uten tung CPU-bruk.
3. Ekstremt rask dekoding
Fordi QOA kun bruker heltallsaritmetikk og lette operasjoner, dekoder den opptil $3\times$ raskere enn Ogg Vorbis og overgår betydelig standard MP3-dekodere. Den dekoder til og med raskere enn Microsoft ADPCM, noe som gjør den ideell for lavstrøm-innfelt maskinvare, mikrokontrollere og sanntids spillmotorer.
4. Strømmingsklar chunk-basert arkitektur
QOA-filer er delt inn i selvstendige rammer som kan inneholde opptil $5,120$ samples per kanal ($256$ segmenter på $20$ samples). Hver ramme har sine egne LMS-filtervekter og historikk, noe som muliggjør umiddelbar søking, nullstraff gjenoppretting fra tapte pakker, og dynamisk sanntidsstrømming uten påkrevd global indeksering.
Viktige egenskaper ved QOA
| Kjennetegn | Spesifikasjon / Detalj |
|---|---|
| Filtype | .qoa |
| Magiske byte | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Utvikler / Skaper | Dominic Szablewski (PhobosLab) |
| Komprimeringstype | Tapende (tidsdomene LMS-prediksjon) |
| Komprimeringsforhold | Fast $5:1$ i forhold til 16-bit PCM |
| Lagring per prøve | Nøyaktig $3.2\text{ bits per sample}$ |
| Bitrate (44,1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282,24\text{ kbps}$ nyttelast) |
| Samplingsfrekvensområde | $1\text{ Hz}$ til $16,777,215\text{ Hz}$ ($24\text{-bit}$ usignert) |
| Støttede kanaler | $1$ til $31$ lydkanaler (Mono, Stereo, 5.1, 7.1, osv.) |
| Header-overhead | 8-byte filheader, 8-byte rammeheader |
| Lisensiering | MIT (Kildekode) / CC0 (Spesifikasjon og logo) |
Hvordan lage og kode QOA-filer
Å kode lyd til QOA er enkelt takket være forhåndsbygde utvikler‑binærfiler og fellesskapets verktøykjeder.
Metode 1: Bruke den offisielle qoaconv CLI
Den primære enkoderen distribueres direkte i det offisielle referanse‑depotet.
- Klone depotet og bygg binæren:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Konverter en ukomprimert WAV-fil til QOA:
./qoaconv input.wav output.qoa - (Valgfritt) Hvis kompilert med
HAS_DRLIBS=true, kanqoaconvogså direkte transkode fra.flac- og.mp3-filer.
Metode 2: Koding i motor (Godot Engine)
Fra og med Godot 4.3 kan spillutviklere importere ukomprimerte .wav-filer og velge QOA-komprimering direkte fra Godot Import-dokken. Dette gir kompakte spillressurser som dekodes nativt med neglisjerbar CPU-latens under tunge spillscener.
Metode 3: Nettbaserte konvertere i nettleser
Flere nettbaserte WebAssembly-verktøy (som de som er vert på qoaformat.org og relaterte åpen kildekode-demoer) lar brukere dra og slippe standardlydfiler og laste ned en kodet .qoa-ressurs lokalt uten å kjøre terminalkommandoer.
Hvordan åpne og spille av QOA-filer
Fordi QOA er et lettvektformat bygget hovedsakelig for kjøretidsintegrasjon, kan konvensjonelle forbrukermediespillere kreve plugins eller dedikerte bygg.
- Dedikert CLI-spiller (
qoaplay): Det offisielle depotet kompileres tilqoaplay, som bruker native lydsystemer (ALSA på Linux, CoreAudio på macOS, WASAPI på Windows) for å spille av.qoa-filer direkte:./qoaplay audio.qoa - Spillrammeverk og motorer:
- Raylib: Naturlig støtte via
raudio-modulen. - Godot Engine: Full naturlig avspillingsstøtte (Godot 4.3+).
- Raylib: Naturlig støtte via
- Medieavspillere og plugins:
- Qmmp: Avansert multimediaspiller med innebygde QOA-dekodingsmoduler.
- OpenCubicPlayer: Klassisk tracker og lydfilspiller som støtter QOA-strømmer.
- Audacious / foobar2000: Støttet via åpen kildekode fellesskapets input‑plugins.
- IDE‑ og utviklerverktøy:
- VS Code: QOA Preview-utvidelsen lar utviklere forhåndsvise og spille av
.qoa-lydklipp direkte i kildekoden sin.
- VS Code: QOA Preview-utvidelsen lar utviklere forhåndsvise og spille av
Ofte stilte spørsmål (FAQ)
Hva står QOA for?
QOA står for Quite OK Audio, et raskt, enkelt, åpen kildekode tapsbasert lydformat.
Er QOA-lyd tapsfri eller med tap?
QOA er et tapsbasert lydkomprimeringsformat, men det opprettholder nesten transparent lydkvalitet for de fleste praktiske bruksområder.
Hvor mye komprimering gir QOA?
QOA komprimerer 16-bits ukomprimert lyd med et konstant forhold på $5:1$ (nøyaktig $3.2\text{ bits per sample}$).
Kan QOA erstatte MP3 eller AAC for generell musikkstrømming?
Nei, QOA prioriterer ultrarask, lettvektig dekoding over maksimal båndbreddebesparelse, noe som gjør den bedre egnet for spill, mikrokontrollere og lavlatensapplikasjoner enn høy‑tetthets web‑streaming.
Har QOA lisens- eller patentavgifter?
Nei, QOA er helt patentrettfri og utgitt under den tillatende MIT‑lisensen, mens spesifikasjonen og logoen tilhører det offentlige domenet (CC0).
Referanse‑URLer og offisielle ressurser
- Offisiell nettside: https://qoaformat.org/
- Offisiell spesifikasjon (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub‑repo: https://github.com/phoboslab/qoa
- Forfatterens tekniske dypdykk: PhobosLab-blogg - QOA kunngjøring og referanseverdier