Title: Psychoacoustic audio coding on ARM CPUs
1Psychoacoustic audio coding on ARM CPUs
- Een
- populaire DSP-toepassing
- en een
- populaire embedded architectuur
- nader bekeken.
Gian-Carlo Pascutto
2Inhoud
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Inleiding Situering
- De ARM-architectuur
- Psychoacoustische audio-codering
- De Bacon audio codec
- Een ARM-gebaseerde Bacon player
- Conclusies Vragen
Psychoacoustic audio coding on small ARM CPUs
3Inleiding Situering
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Vraag naar
- Multimedia
- Portable
- Draadloos
- Technologische nood aan
- Performante audio/video codering
- Embedded systemen
- Low power/high performance
- Opgelost door
- ARM microcontrollers
- Psychoacoustische audio codecs
Psychoacoustic audio coding on small ARM CPUs
4ARM architectuur Inhoud
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Ontstaansgeschiedenis
- Specifieke eigenschappen
- Evolutie ARM CPUs
- DSP op ARM
- Programmering
- ARMs in de praktijk
Psychoacoustic audio coding on small ARM CPUs
5Onstaansgeschiedenis
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Ontstaan 1985 (Acorn Computers)
- Vervanging voor 8-bit 6502 CPUs, gebruik in Acorn
PCs - Focus op eenvouding maar performant ontwerp
- Geen doorbraak door dominantie IBM PC
- Verkoop van licenties IP cores
-
Psychoacoustic audio coding on small ARM CPUs
6Specifieke eigenschappen
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- 32-bits RISC ontwerp
- 32-bits instructies 32-bits addressering
- Meeste instructies duren 1 klokcyclus
- MUL en MAC instructies (geen DIV)
- Load-Store architectuur
- 16 registers (14 bruikbaar)
- Configureerbaar little endian/big endian
Psychoacoustic audio coding on small ARM CPUs
7Specifieke eigenschappen
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Barrel shift / rotate
- Gratis beschikbaar op iedere instructie
- Inclusief variabele lengte shifts
- Condition codes
- Mogelijk op iedere instructie
- Wel of niet uitvoeren (skippen) afhankelijk
vanstatusvlaggen. (vb. EQEqual, GEGreater or
Equal, PLPositive) - Keuze wel of niet aanpassen statusvlaggen voor
volgende instructie - Pre/postindexering
- Na load instructie automatische update
indexregister
Psychoacoustic audio coding on small ARM CPUs
8Evolutie ARM CPUs
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM7/ARMv4 (1995)
- ARMv4T Thumb
- Thumb
- Nieuwe 16-bit instructieset
- Minder registers toegankelijk, geen barrel
shifter, geen condition codes, - Meer code nodig maar slechts half zo groot
gemiddeld - 30 code size besparing - Performantie-25 tot 100 (!)
Psychoacoustic audio coding on small ARM CPUs
9Evolutie ARM CPUs
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM9/ARMv5 (1997)
- Langere pipeline (5 ipv. 3 ? hogere
kloksnelheden) - ARMv5E DSP extensies
- Snelle 16-bit multiplies, saturation
- ARMv5J Jazelle (2000)
- Java bytecode direct uitvoeren
Psychoacoustic audio coding on small ARM CPUs
10Evolutie ARM CPUs
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Toekomst
- ARM10, ARM11 / ARMv6
- Langere pipeline, hogere kloksnelheid
- Extra multimedia instructies (SIMD, cfr. MMX/SSE)
- ARM Cortex
- Thumb-2 ARM performantie met Thumb code size
- Intel XScale
- tot 1.2Ghz, 1000 MIPS _at_ 1W
Psychoacoustic audio coding on small ARM CPUs
11DSP op ARM
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Fixed point
- Snelle 32 bits berekeningen
- Barrel shifter
- Load/Store architectuur
- Vele registers goed gebruiken
- Optimalisaties
- Anders voor elke ARM variant (zelfs MAC )
- Niet-compatible SIMD extensies WMMX (Intel) vs
NEON (ARM Ltd.)
Psychoacoustic audio coding on small ARM CPUs
12Programmering
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Keuze voor C
- flexibeler, portable, ARMltgtThumb
- check de output van de compiler
- Kleine optimalisaties
- Gebruik 32-bit variabelen (int)
- Vermijden van delingen
- Pointers ipv. array-indexes
- Voer variabelen in
Psychoacoustic audio coding on small ARM CPUs
13ARM in de praktijk
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM7TDMI Flash
- Goedkope microcontrollers van Atmel, Analog
Devices, Philips, OKI, Cirrus, - Vervangen 8051, AVR, PIC
- Texas Instruments OMAP
- Dual core ARM DSP
- PDA, GSM
- Intel XScale
- PDA, auto GPS, RAID kaarten,
- Apple iPod
- Dual core 2 x ARM7TDMI
Psychoacoustic audio coding on small ARM CPUs
14Psychoacoustische audiocodering
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Wat?
- Inleidende principes
- Tijd ? Frequentie
- Quantisering Entropy coding
- Kwaliteitsevaluatie
Psychoacoustic audio coding on small ARM CPUs
15Wat?
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Compacte codering van audiosignalen door
- Gebruik kennis fysiek-psychologische aspecten
gehoorssysteem - Verwijderen redundantie
Psychoacoustic audio coding on small ARM CPUs
16Principes
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Critical bands / Barks
- Gedrag gehoorssysteem ifv. Frequentie
- Zenuwcellen van nabijgelegen frequenties worden
tegelijk geprikkeld - Hogere frequenties ? bredere banden
- Simultane maskering
- Gelijktijdige waarname meerdere signalen sterk
signaal maskeert zwak - Afhankelijk aard van het signaal (toon/ruis) ?
6dB tot 25dB SMR
Psychoacoustic audio coding on small ARM CPUs
17Principes
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Absolute Threshold of Hearing (ATH)
- Te stil signaal is onhoorbaar
- Spreading
- Cfr. simultane maskering, tussen verschillende
banden - Tijdsdomeineffecten (pre-echo)
- 2-3 ms maskering VOOR signaal
- 50-300 ms maskering NA signaal
Psychoacoustic audio coding on small ARM CPUs
18Tijd ? Frequentie (Filterbank)
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Subbanding
- QMF
- PQMF
- Wavelets
- Transforms
- Betere frequentieresolutie
- Slechte tijdsresolutie ? pre-echo
- Block switching en/of TNS
- Hogere coding gain voor typische audiosignalen
- FFT
- MDCT (DCT-IV window overlap)
- Summum van audiocodering
Psychoacoustic audio coding on small ARM CPUs
19Quantisering Entropy coding
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Quantisering Normalisering Afronding
- Gecontroleerd per band door psychoacoustisch
model - Entropy coding
- Directe codering
- Huffman coding
- Huffman coding v. koppels
- VQ, Arithmetic coding
Psychoacoustic audio coding on small ARM CPUs
20Kwaliteitsevaluatie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Psychoacoustische techniek
- Methode moet werking gehoorsysteem volgen
- Subjectieve beoordeling
- Door mensen
- Probleem placebo effecten
- Oplossing blinde tests
- Duurt lang, moeilijk te reproduceren
- Objectieve beoordeling
- EAQUAL (ITU BS. 1387)
- Snel, reproduceerbaar, onvermoeibaar
- Heuristisch, soms grote fouten
Psychoacoustic audio coding on small ARM CPUs
21Bacon
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Verantwoording
- Ontwerpdoelen
- Filterbank
- Psychoacoustisch model
- Quantisatie
- Lossless coding
- Truuks
Psychoacoustic audio coding on small ARM CPUs
22Verantwoording
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Bestaande codecs hebben veel bagage
- MP3 hybride filterbank, gt16kHz, mist een paar
moderne truuks - AAC LC, Main, LTP, SSR, pulse coding, IS,
verschillende windows - Vorbis redundante normalisaties, complexe
entropy coding, grote blocksizes - Gebrek aan KISS principe
- Complexiteit van implementatie kleine factor bij
performantie-evaluatie - Foutkans naarmate complexiteit
- Beter met benefit of hindsight
- Experimenteren kennis opdoen
Psychoacoustic audio coding on small ARM CPUs
23Ontwerpdoelen
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Minimale complexiteit in design implementatie
- Kwalitatief gt MP3
- Geschikt voor kleine ARM microcontrollers
- Zo laag mogelijke RAM/ROM vereisten
- Decodeerbaar met lt60Mhz ARM7TDMI
- Bruikbaar in Thumb mode
Psychoacoustic audio coding on small ARM CPUs
24Filterbank
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- MDCT op 1024 samples
- Vermijden block switching
- Wavelets
- Switching MDCT/Wavelets
- Nieuwe methode MDWT
- Temporal Noise Shaping
- Dualiteit DCT in tijd/frequentie
- LPC filter in frequentiedomein
- Quantisatieruis evenredig signaalsterkte
Psychoacoustic audio coding on small ARM CPUs
25Psychoacoustisch model
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Vrij standaard, cfr. MPEG model 1
- Gebaseerd op Equivalent Rectangular Bandwidth
(ERB) - Nieuwer systeem dan Barks
- Banden 2 ERB wijd ? 21 bands
- Mid/Side vs. Left/Right per band
Psychoacoustic audio coding on small ARM CPUs
26Quantisatie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Schaalfactor per band
- 1.5dB resolutie
- Vaste quantiser
- 512 waarden, power-law
- 2-loop systeem voor vinden optimale quantisatie
- Inner loop bitrate controle
- Outer loop controle quantisatieruis aan
psychoacoustisch model
Psychoacoustic audio coding on small ARM CPUs
27Lossless coding
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Gequantiseerde data
- Per band vaste bitlengte
- gt5 bits directe codering
- 3 tot 5 bits Huffman
- 1 en 2 bits Huffman op groepen
- Schaalfactoren
- Verschillen Huffman coderen
- Bitlengtes
- Verschillen Huffman coderen
- Mid/Side beslissingen
- Directe codering
Psychoacoustic audio coding on small ARM CPUs
28Truuks
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- PNS
- Ruisbanden detecteren
- Alleen energieniveau opslaan
- Winst afhankelijk van risico
- LastVal
- Laatste gekwantiseerde waarde / 0
- Alle informatie die op banden of data hierna
slaat moet niet opgeslagen worden - Winst 2-4kbps
Psychoacoustic audio coding on small ARM CPUs
29Truuks
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- 32 x 32 64 bit multiplies
- Nodig voor gt 16 bit precisie in fixed point
decoding - Geen equivalent in C
- Library call (traag)
- Inline assembler (niet flexibel)
- Hulp bieden aan compiler door functie te maken
- static const int MUL_C(const int A, const int B)
- return (((long long)A) B) gtgt COEF_BITS
-
Psychoacoustic audio coding on small ARM CPUs
30Een ARM player voor Bacon
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Texas Instruments OMAP 5912
- Atmel AT91SAM7
- Circuit design
- PCB design
- Status
Psychoacoustic audio coding on small ARM CPUs
31OMAP 5912
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM9 C55x DSP
- Kostprijs 26 tot 50 / stuk
- Ontwikkelbord
- OMAP chip op 192Mhz
- 32M RAM, 32M Flash ROM
- 24-bit 96kHz DAC/ADC
- Serieel/Ethernet/USB
- CompactFlash socket
- ARM Linux
- Fexibel (Linux kennis zeer bruikbaar)
- Beschikbare software niet altijd even betrouwbaar
Psychoacoustic audio coding on small ARM CPUs
32Atmel AT91SAM7
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM7TDMI microcontroller
- Flash-based
- 8-64k RAM
- 32-256k ROM
- 3.5 tot 9 Euro / stuk
- USB RS232, I2C,
- SSC nodig voor aansturing I2S DAC
- Eigen ontwerp voor bord
Psychoacoustic audio coding on small ARM CPUs
33Circuit design
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
34PCB design
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
35Status
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Power, Klok, PLL, I/O poorten, JTAG
- getest werkend
- Seriele poort
- fout bij solderen chip (opgelost)
- signalen kloppen niet
- SSC/DAC
- nog niet getest
Psychoacoustic audio coding on small ARM CPUs
36Conclusies
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- ARM
- Snel in opmars
- Aanbod hardware/software verbetert continue
- Voor oudere modellen (ARM7, ARM9) is veel
goedkoop beschikbaar - PCB design
- LQFP SMD chips met 64 pinnen zijn niet
gemakkelijk in omgang - Veel ervaring opgedaan in kleine dingen
Psychoacoustic audio coding on small ARM CPUs
37Conclusies
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Bestaande codecs
- Weg met overengineering!
- ISO standaarden niet heilig
- Wavelets lijken een dead end
- Bacon
- Eigen ontwerp zeer leerzaam
- Nog veel ruimte voor verbetering, zeer geschikt
voor experimentatie - Performantie / ontwerpdoelen?
Psychoacoustic audio coding on small ARM CPUs
38Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
- Centrino 1.7Ghz laptop, Windows XP
- Foobar2000 0.9.1 audio player
- 128kbps CBR 44.1kHz stereo
Decoder x realtime
Bacon 195x
AAC 172x
Vorbis 153x
MP3 130x
Psychoacoustic audio coding on small ARM CPUs
39Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Decoder x realtime Mhz
Bacon, full precision 4,40 44
Bacon, reduced precision 4,80 40
Bacon, reduced precision (Thumb) 4,45 43
MP3, ARM assembler 4,86 40
MP3, full precision 0,65 297
MP3, reduced precision 4,20 46
Vorbis, ARM assembler 4,51 43
Vorbis, full precision 1,86 103
Vorbis, reduced precision 4,85 40
AAC, ARM assembler 3,30 58
AAC, full precision 3,25 59
Psychoacoustic audio coding on small ARM CPUs
40Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Decoder Code RAM ROM
Bacon (Thumb) 5828 11516 13888
Bacon (ARM) 7960 11516 13888
MP3 (Helix) 21000 23816 13446
AAC (Helix) 20120 28864 27128
Vorbis (Tremor) 35952 81920 48428
MP3 (MAD) 36184 50000 50688
Psychoacoustic audio coding on small ARM CPUs
41Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
42Vragen?
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs