Psychoacoustic audio coding on ARM CPUs - PowerPoint PPT Presentation

About This Presentation
Title:

Psychoacoustic audio coding on ARM CPUs

Description:

Psychoacoustic audio coding on ARM CPUs Een populaire DSP-toepassing en een populaire embedded architectuur nader bekeken. Gian-Carlo Pascutto Inhoud Inleiding ... – PowerPoint PPT presentation

Number of Views:74
Avg rating:3.0/5.0
Slides: 43
Provided by: GianCarlo6
Learn more at: https://sjeng.org
Category:

less

Transcript and Presenter's Notes

Title: Psychoacoustic audio coding on ARM CPUs


1
Psychoacoustic audio coding on ARM CPUs
  • Een
  • populaire DSP-toepassing
  • en een
  • populaire embedded architectuur
  • nader bekeken.

Gian-Carlo Pascutto
2
Inhoud
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
  1. Inleiding Situering
  2. De ARM-architectuur
  3. Psychoacoustische audio-codering
  4. De Bacon audio codec
  5. Een ARM-gebaseerde Bacon player
  6. Conclusies Vragen

Psychoacoustic audio coding on small ARM CPUs
3
Inleiding 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
4
ARM 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
5
Onstaansgeschiedenis
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
6
Specifieke 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
7
Specifieke 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
8
Evolutie 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
9
Evolutie 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
10
Evolutie 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
11
DSP 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
12
Programmering
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
13
ARM 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
14
Psychoacoustische audiocodering
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
  1. Wat?
  2. Inleidende principes
  3. Tijd ? Frequentie
  4. Quantisering Entropy coding
  5. Kwaliteitsevaluatie

Psychoacoustic audio coding on small ARM CPUs
15
Wat?
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
16
Principes
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
17
Principes
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
18
Tijd ? 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
19
Quantisering 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
20
Kwaliteitsevaluatie
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
21
Bacon
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
22
Verantwoording
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
23
Ontwerpdoelen
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
24
Filterbank
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
25
Psychoacoustisch 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
26
Quantisatie
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
27
Lossless 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
28
Truuks
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
29
Truuks
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
30
Een 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
31
OMAP 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
32
Atmel 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
33
Circuit design
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
34
PCB design
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
35
Status
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
36
Conclusies
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
37
Conclusies
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
38
Performantie
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
39
Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
  • 192Mhz ARM9E

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
40
Performantie
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
41
Performantie
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
Psychoacoustic audio coding on small ARM CPUs
42
Vragen?
Situering
ARM arch.
Psy. audio coding
Bacon
ARM Player
Vragen
  • ?

Psychoacoustic audio coding on small ARM CPUs
Write a Comment
User Comments (0)
About PowerShow.com