NO341186B1 - Selektiv anvendelse ved bruk av flere entropimodeller i adaptiv koding og dekoding - Google Patents

Selektiv anvendelse ved bruk av flere entropimodeller i adaptiv koding og dekoding Download PDF

Info

Publication number
NO341186B1
NO341186B1 NO20076261A NO20076261A NO341186B1 NO 341186 B1 NO341186 B1 NO 341186B1 NO 20076261 A NO20076261 A NO 20076261A NO 20076261 A NO20076261 A NO 20076261A NO 341186 B1 NO341186 B1 NO 341186B1
Authority
NO
Norway
Prior art keywords
entropy
model
several
encoder
models
Prior art date
Application number
NO20076261A
Other languages
English (en)
Other versions
NO20076261L (no
Inventor
Wei-Ge Chen
Sanjeev Mehrotra
Original Assignee
Microsoft Technology Licensing Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing Llc filed Critical Microsoft Technology Licensing Llc
Publication of NO20076261L publication Critical patent/NO20076261L/no
Publication of NO341186B1 publication Critical patent/NO341186B1/no

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Theoretical Computer Science (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

BAKGRUNN
Ingeniører anvender en rekke forskjellige metoder for å behandle digital lyd på en effektiv måte samtidig som kvaliteten til den digitale lyden bevares. For å forstå disse metodene er det nyttig å forstå hvordan lydinformasjon blir representert og behandlet i en datamaskin.
I. Representasjon av lydinformasjon i en datamaskin
En datamaskin behandler lydinformasjon som en sekvens av tall som representerer lydinformasjonen. For eksempel kan ett enkelt tall representere et lyd-sample, som er en amplitudeverdi på et gitt tidspunkt. Flere faktorer påvirker kvaliteten til lydinformasjon, omfattende samplingsdybde, samplingsrate og kanalmodus.
Samplingsdybde (eller presisjon) angir området av tall som anvendes for å representere et sample. Jo flere mulige verdier for hvert sample, jo høyere er kvaliteten fordi tallet kan fange opp mer detaljerte variasjoner i amplituden. For eksempel har et åtte-bits sample 256 mulige verdier, mens et 16-bits sample har 65536 mulige verdier.
Samplingsraten (vanligvis målt som antallet sampler i sekundet) påvirker også kvaliteten. Jo høyere samplingsrate, jo høyere kvalitet fordi flere lydfrek-venser kan representeres. Eksempler på vanlige samplingsrater er 8000, 11025, 22050, 32000, 44100, 48000 og 96000 sampler/sekund.
Mono og stereo er to vanlige kanalmodi for lyd. I monomodus eksisterer lydinformasjon i én kanal. I stereomodus eksisterer lydinformasjon i to kanaler, vanligvis angitt som venstre og høyre kanal. Andre modi med flere kanaler, så som 5.1-kanal, 7.1-kanal eller 9.1-kanal surroundlyd ("1" angir en subwoofer-eller lavfrekvenseffekt-kanal), finnes også. Tabell 1 viser noen lydformater med forskjellig kvalitetsnivå, sammen med tilhørende bitratekrav for ubehandlede data.
Tabell 1: Bitrater for lydinformasjon av forskjellig kvalitet
Surroundlyd har typisk enda høyere bitrate for ubehandlede data. Som kan sees i tabell 1 er en kostnad for å oppnå lydinformasjon av høy kvalitet høy bitrate. Høykvalitets lydinformasjon krever store mengder datalagringsplass og over-føringskapasitet. Bedrifter og forbrukere anvender imidlertid i økende grad datamaskiner for å lage, distribuere og spille av høykvalitets lydinnhold.
II. Behandling av lydinformasjon i en datamaskin
Mange datamaskiner og datanettverk har ikke ressurser til å behandle utbe-handlet digital lyd. Komprimering (også kalt koding eller koding) reduserer kostnaden forbundet med lagring og overføring av lydinformasjon ved å gjøre om informasjonen til en form som krever lavere bitrate. Komprimering kan være tapsfri (der kvaliteten ikke forringes) eller tapsbeheftet (der kvaliteten forringes, men bitratereduksjonen etter påfølgende tapsfri komprimering er større). Tapsfri komprimering anvendes for eksempel for å generere en tilnærming til opprinnelig lydinformasjon, og tilnærmingen blir så tapsfritt komprimert. Dekomprimering (også kalt dekoding) gjenoppretter en rekonstruert versjon av den opprinnelige informasjonen fra den komprimerte formen.
Ett mål med lydkomprimering er å representere lydsignalene digitalt for å
oppnå maksimal oppfattet signalkvalitet med færrest mulig bit. Med dette som mål anvender forskjellige av dagens lydkodingssystemer perseptuelle modeller. Koder-og dekodersystemer omfatter versjoner av Microsoft Corporations WMA-(Windows Media Audio)-koder og -dekoder og WMA Pro-kodere og dekodere. Andre systemer spesifiseres av versjoner av standarden Motion Picture Experts Group, Audio Layer 3 (MP3), standarden Motion Picture Experts Group 2, Advanced Audio Coding ("AAC") samt Dolby AC3. Slike systemer anvender typisk en kombinasjon av tapsbeheftet og tapsfri komprimering og dekomprimering.
A. Tapsbeheftet komprimering og tilhørende dekomprimering
Tradisjonelt anvender en lydkoder en rekke forskjellige tapsbeheftede komprimeringsmetoder. Disse tapsbeheftede komprimeringsmetodene omfatter typisk perseptuell modellering/vekting og kvantisering etter en frekvenstransformasjon. Den tilhørende dekomprimeringen omfatter invers kvantisering, invers vekting og inverse frekvenstransformasjoner.
Frekvenstransformasjonsmetoder gjør om data til en form som gjør det enklere å skille oppfatningsmessig viktig informasjon fra oppfatningsmessig uviktig informasjon. For å få best mulig oppfattet kvalitet for en gitt bitrate kan den mindre viktige informasjonen så gjennomgå mer tapsbeheftet komprimering mens den viktigere informasjonen bevares. En frekvenstransformasjon mottar typisk lydsampler og gjør dem om til data i frekvensdomenet, noen ganger kalt frekvens-koeffisienter eller spektralkoeffisienter.
Perseptuell modellering omfatter behandling av lyddata i henhold til en modell av menneskets hørselssystem for å bedre den oppfattede kvaliteten til det rekonstruerte lydsignalet for en gitt bitrate. Med bruk av resultatene av den perseptuelle modelleringen skaper en koder støy (f.eks. kvantiseringsstøy) i lyddataene med det mål å minimere hørbarheten av støyen for en gitt bitrate.
Kvantisering avbilder intervaller av innmatede verdier til enkeltverdier og gir således irreversibelt tap av informasjon, men gjør det også mulig for en koder styre utmatingens kvalitet og bitrate. Noen ganger utfører koderen kvantisering sammen med en hastighetsstyringsenhet som tilpasser kvantiseringen for å styre bitraten og/eller kvaliteten. Det finnes forskjellige typer kvantisering, omfattende adaptiv og ikke-adaptiv, skalar og vektoriell, uniform og ikke-uniform. Perseptuell vekting kan betraktes som en form for ikke-uniform kvantisering.
Invers kvantisering og invers vekting rekonstruer de vektede, kvantiserte frekvenskoeffisientdataene til en tilnærming av de opprinnelige frekvenskoeffisientdataene. En invers frekvenstransformasjon gjør så om de rekonstruerte frekvenskoeffisientdataene til rekonstruerte lydsampler i tidsdomenet.
B. Tapsfri komprimering og dekomprimering
Tradisjonelt anvender en lydkoder én eller flere av en rekke forskjellige tapsfrie komprimeringsmetoder, som også kalles entropikodingsmetoder. Generelt omfatter tapsfrie komprimeringsmetoder løpelengde-koding (run-length encoding), variabel lengde-koding og aritmetisk koding. De tilhørende dekomprimeringsmetodene (også kalt entropidekodingsmetoder) omfatter løpe-lengde-dekoding, variabel lengde-dekoding og aritmetisk dekoding.
Løpelengde-koding er en enkel, velkjent komprimeringsmetode. I hovedtrekk bytter løpelengde-koding ut en sekvens (dvs. et løp) av umiddelbart følgende symboler med samme verdi med sekvensens verdi og lengde. I løpelengde-dekoding blir sekvensen av umiddelbart følgende symboler rekonstruert fra sekvensverdien og sekvenslengden. En rekke forskjellige varianter av løpelengde-koding/-dekoding er utviklet.
Sekvensnivå-koding er tilsvarende som løpelengde-koding i at sekvenser av umiddelbart følgende symboler med samme verdi blir erstattet med løpe-lengder. Verdien til sekvensene er den dominerende verdien (f.eks. 0) i dataene, og sekvenser skilles av ett eller flere nivåer med en annen verdi (f.eks. en verdi forskjellig fra null).
Resultatene av løpelengde-koding (f.eks. sekvensverdier og sekvens-lengder) eller sekvensnivå-koding kan kodes med variabel lengde for å redusere bitraten ytterligere. I så fall blir de innkodede dataene lengde-dekodet før løpe-lengde-dekoding.
Variabel lengde-koding er en annen velkjent komprimeringsmetode. I hovedtrekk knytter en VLC-(Variable Length Code)-tabell VLC-kodertil unike symbolverdier (eller unike kombinasjoner av verdier). Huffman-koder er en vanlig type VLC-kode. Kortere koder tildeles til mer sannsynlige symbolverdier, og lengre koder tildeles til mindre sannsynlige symbolverdier. Sannsynlighetene blir beregnet for typiske eksempler på et gitt innhold. Alternativt blir sannsynlighetene beregnet for data som akkurat er kodet inn eller data som skal kodes inn, hvorved VLC-kodene tilpasser seg de endrende sannsynlighetene for de unike symbolverdiene. Sammenliknet med statisk variabel lengde-koding reduserer adaptiv variabel lengde-koding vanligvis bitraten for komprimerte data ved å innlemme mer nøyaktige sannsynligheter for dataene, men det vil også kunne være nød-vendig å sende ekstra informasjon som spesifiserer VLC-kodene.
For å kode inn symboler erstatter en variabel lengde-koder symbolverdier med VLC-kodene for symbolverdiene i VLC-tabellen. For å dekode erstatter en variabel lengde-dekoder VLC-kodene med symbolverdiene for VLC-kodene.
I skalar variabel lengde-koding knytter en VLC-tabell én enkelt VLC-kode til én verdi, for eksempel et direkte nivå for en kvantisert dataverdi. I vektoriell variabel lengde-koding knytter en VLC-tabell én enkelt VLC-kode til en kombinasjon av verdier, for eksempel en gruppe av direkte nivåer for kvantiserte dataverdier i en gitt rekkefølge. Vektoriell variabel lengde-koding kan gi en høyere bitratereduksjon enn skalar variabel lengde-koding (f.eks. ved å la koderen utnytte sannsynligheter fraksjonert i binære VLC-koder). På den annen side kan VLC-tabellen for vektoriell variabel lengde-koding være ekstremt stor når enkeltkoder representerer store grupper av symboler eller symboler har store områder av oppnåelige verdier (som følge av det store antallet mulige kombinasjoner), slik at det kreves mye minne og databehandlingsressurser for å beregne VLC-tabellen og finne VLC-koder. En rekke forskjellige varianter av variabel lengde-koding/-dekoding er utviklet.
Aritmetisk koding er en annen velkjent komprimeringsmetode. Aritmetisk koding benyttes noen ganger i anvendelser der det optimale antallet bit for å kode inn et gitt inngangssymbol ikke er et heltall, og i tilfeller der det eksisterer en statistisk korrelasjon mellom bestemte individuelle inngangssymboler. Aritmetisk koding omfatter i hovedtrekk det å representere en inngangssekvens som ett enkelt tall innenfor et gitt intervall. Tallet er typisk et rasjonalt tall mellom 0 og 1. Symboler i inngangssekvensen knyttes til intervaller som spenner over deler av rommet mellom 0 og 1. Intervallene beregnes basert på sannsynligheten for at det aktuelle symbolet forekommer i inngangssekvensen. Det rasjonale tallet som anvendes for å representere inngangssekvensen beregnes ved å referere til intervallene. Sannsynlighetsfordelinger for inngangssymboler er derfor viktige i aritmetiske kodingsmetoder.
I kontekstbasert aritmetisk koding knyttes forskjellige sannsynlighetsfordelinger for inngangssymbolene til forskjellige kontekster. Sannsynlighetsfordelingen som anvendes for å kode inn inngangssekvensen, endrer seg når konteksten endrer seg. Konteksten kan beregnes ved å måle forskjellige faktorer som forventes å påvirke sannsynligheten for at et gitt inngangssymbol forekommer i en inngangssekvens.
US 6154572 A beskriver et bilde kompresjonssystem som omfatter en vektor generator og en hierarkisk vektor kvantiseringstabell som sender ut omsluttet kode. Vektor generatoren konverterer et bilde til bilde-vektorer som representerer respektive blokker av bilde-punkter. Tabellen gir beregningsfri transformasjon og komprimering av bilde-vektorer.
US 5253053 A beskriver en fremgangsmåte og et apparat for dekoding av et kodeord (VLC) med variabel lengde ved å lese en VLC som har en maksimal lengde på X-bits. VLC er brukt som en indeks inn i en første tabell der den første tabellen inneholder dekodede verdier for alle mulige VLC-er med Y bits som ikke er lik en verdi i et første sett av verdier. Y er typisk mindre enn X, og omfatter, i den foretrukne utførelsesform, de mest signifikante bitene i VLC. Hvis de første y bits av VLC ikke er lik en verdi i et første sett av verdier blir en andre verdi hentet fra den første tabellen. Hvis de første y bits av VLC er lik en hvilken som helst verdi i et første sett av verdier, da blir en peker til en andre tabell returnert fra den første tabellen.
US 2005015249 A1 beskriver en lyd koder som utfører adaptiv entropi koding av lyd-data. For eksempel, en lyd koder veksler mellom variabel dimensjon vektor Huffman-koding på direkte nivåer av kvantiserte lyd-data og kjøre-nivå koding av løpelengder og nivåer av kvantiserte lyd-data. Koderen kan bruke, for eksempel, kontekstbasert aritmetisk koding for koding av kjørelengder og nivåer. Koderen kan bestemme når det skal byttes mellom kodings moduser ved å telle påfølgende koeffisienter som har en dominerende verdi (for eksempel null). En lyd dekoder utfører tilsvarende adaptive entropi dekoding.
Gitt viktigheten av komprimering og dekomprimering for behandling av medier er det ikke overraskende at komprimering og dekomprimering har vært viet mye oppmerksomhet. Til tross for de mange fordelene med kjente metoder og systemer for tapsfri komprimering og dekomprimering mangler de imidlertid en rekke fordeler som oppnås med fremgangsmåtene og systemene beskrevet her.
OPPSUMMERING
Fremgangsmåter og verktøy for selektiv bruk av flere entropimodeller ved adaptiv koding og dekoding er beskrevet her. For eksempel kan selektiv bruk av flere entropimodeller i betydelig grad redusere ressursbruken for flere fordelinger/VLC-tabeller. Samtidig oppnås mye av kodingsgevinsten forbundet med bruk av de flere fordelingene/VLC-tabellene.
Ifølge et første sett av fremgangsmåter og verktøy velger et verktøy, så som en koder eller dekoder, for symboler, en entropimodell fra et første sett av modeller som omfatter flere entropimodeller. Hver av de flere entropimodellene i det første modellsettet omfatter et modellskiftepunkt for å bytte til et annet sett av modeller som omfatter én eller flere entropimodeller. Verktøyet behandler symbolene ved anvendelse av den valgte entropimodellen og mater ut resultater fra behandlingen.
Hver av den ene eller de flere entropimodellene i det andre modellsettet kan selv omfatte et modellskiftepunkt for å bytte til et annet modellsett. Hver av de flere entropimodellene i det første modellsettet kan videre omfatte et andre modellskiftepunkt for å skifte til et annet modellsett. Mer generelt kan hver av de flere entropimodellene i det første modellsettet omfatte null eller flere modellskiftepunkt for å bytte til ett eller flere andre modellsett (hvert sett i det eller de andre modellsettene kan selv omfatte null eller flere entropimodeller). På en rekursiv måte, for et gitt modellsett fra det eller de andre modellsettene, kan entropimodellen(e) for dette modellsettet innlemme null eller flere modellskiftepunkt for å bytte til et eller flere ytterligere andre modellsett, osv.
Ifølge et andre sett av fremgangsmåter og verktøy genererer et system entropimodeller. Systemet grupperer sannsynlighetsfordelinger i henhold til et første kostnadsmål (så som midlere kvadratfeil), og danner med det foreløpige grupper. Systemet forfiner de foreløpige gruppene i henhold til et andre kostnadsmål (for eksempel relativ entropi) som er forskjellig fra det første kostnadsmålet, og danner med det endelige grupper. Systemet setter så entropimodellene i hvert fall delvis basert på de endelige gruppene.
Ifølge et tredje sett av fremgangsmåter og verktøy frembringer et system sannsynlighetsfordelinger for symbolverdier. Systemet genererer entropimodeller.
I forbindelse med dette begrenser systemet flere mindre sannsynlige symbolverdier til å ha en felles betinget fordeling på tvers av sannsynlighetsfordelingene, uten å begrense flere mer sannsynlige symbolverdier på denne måten.
Foreliggende oppfinnelse er særlig egnet til å tilveiebringe en fremgangsmåte for utførelse i en koder eller i en dekoder omfattende trinnene: forflere symboler, å velge en entropimodell fra et første modellsett som omfatter flere entropimodeller, hver av de flere entropimodellene i det første modellsettet inkluderer et modellskiftepunkt for skifte til et andre modellsett som omfatter én eller flere entropimodeller, hvor de flere symbolene er for kvantiserte spektralkoeffisienter for lyd-data;
og hvor valg av en entropimodell er basert på å vurdere resultatene av koding ved å bruke de flere entropimodellene;
å prosessere de flere symbolene med den valgte entropimodellen; og å sende ut resultatene av prosesseringen;
hvor de flere entropimodellene i det første modellsettet, og den ene eller flere entropimodeller i det andre modellsettet, reflekterer sannsynlighetsfordelinger for aritmetisk koding og / eller dekoding, og hvor de flere entropimodellene i det første modellsettet reflekterer sannsynlighetsfordelingene til de mer sannsynlige symboler, og de flere entropimodellene i det andre modellsettet reflektere sannsynlighetsfordelingene til de mindre sannsynlige symboler;
og hvor et modellskiftepunkt etterfølges hvis den valgte sannsynlighetsfordelingen ikke omfatter det respektive symbolet blant de flere symbolene.
Foreliggende oppfinnelse er videre egnet til å tilveiebringe et system som omfatter en koder eller dekoder, videre omfattende: en innretning for å skaffe sannsynlighetsfordelinger for flere symbolverdier, hvor symbolverdiene er for kvantiserte spektrale koeffisienter for lyd-data;
og
innretning for å generere entropimodeller, inkludert å begrense de flere mindre sannsynlige symbolverdier til å ha en felles betinget fordelingen over sannsynlighetsfordelingene uten derved å begrense de flere mer sannsynlige symbolverdier,
innretning for å velge en entropimodell fra et første modellsett som omfatter flere entropimodeller, idet hver av de flere entropimodeller i det første modellsettet inkluderer et modellskiftepunkt for å skifte til et andre sett av modeller som omfatter én eller flere entropimodeller, hvor det å velge en
entropi-modellen er basert på å vurdere resultatene av koding ved hjelp av flere entropimodeller;
innretning for å behandle de flere symbolene ved hjelp av den valgte entropi-modellen; og
innretning for å sende ut resultatene av prosesseringen;
hvor de flere entropimodeller i det første modellsettet og den ene eller flere entropimodeller i den andre modellsettet reflektere
sannsynlighetsfordelinger for aritmetisk koding og / eller dekoding; og hvor de flere entropimodeller i det første modellsettet reflektere sannsynlighetsfordelingene av de mer sannsynlige symboler, og de flere entropimodeller i det andre modellsettet reflekterer
sannsynlighetsfordelingene til de mindre sannsynlige symboler; og hvor et modellskiftepunkt følges hvis den valgte sannsynlighetsfordelingen ikke omfatter det respektive symbolet blant de flere symbolverdier.
De ovenfor angitte og andre mål, særtrekk og fordeler med oppfinnelsen vil tydeliggjøres av den følgende detaljerte beskrivelsen, som er gitt under henvisning til de vedlagte figurene.
KORT BESKRIVELSE AV FIGURENE
Figur 1 er et blokkdiagram som illustrerer et generalisert kjøremiljø som forskjellige beskrevne utførelsesformer kan realiseres med. Figurene 2, 3, 4, 5, 6 og 7 er blokkdiagrammer som illustrerer generaliserte kodere og/eller dekodere som forskjellige beskrevne utførelsesformer kan realiseres med. Figurene 8a og 8b er diagrammer som henholdsvis viser et lydsignal med flere kanaler og en tilhørende vindusstruktur. Figurene 9 og 10 er blokkdiagrammer som henholdsvis viser en koder og en dekoder, med tidsmessig støyutforming. Figurene 11 og 12 er blokkdiagrammer som henholdsvis viser en koder og en dekoder, med koeffisientberegning for å redusere bitrate. Figurene 13 og 14 er flytdiagrammer som viser metoder for beregning av kvantiserte spektralkoeffisienter, henholdsvis ved koding og dekoding. Figurene 15a og 15b er diagrammer som henholdsvis viser et periodisk lydsignal i tidsdomenet og motsvarende spektralkoeffisienter. Figurene 16 og 17 er blokkdiagrammer som henholdsvis viser en koder og en dekoder, med omordning av koeffisienter. Figurene 18a til 18c er flytdiagrammer som viser fremgangsmåter for omordning av spektralkoeffisienter før entropikoding. Figurene 19a til 19c er flytdiagrammer som viser fremgangsmåter for omordning av spektralkoeffisienter etter entropidekoding. Figur 20 er et diagram som viser spektralkoeffisientene i figur 15b etter omordning. Figur 21 er et diagram som viser kodingsgevinst som følge av koeffisientomordning innenfor underrammer i et eksempel på lydfil. Figur 22 er et diagram som viser hierarkisk organiserte entropimodeller. Figur 23 er et diagram som viser Huffman-koder for tilnærmede fordelinger av symbolverdier. Figurene 24 og 25 er flytdiagrammer som viser fremgangsmåter for gruppering av treningsvektorer for sannsynlighetsfordelinger. Figur 26 er et flytdiagram som viser en fremgangsmåte for koding med selektiv bruk av flere entropimodeller. Figur 27 er et flytdiagram som viser en fremgangsmåte for dekoding med selektiv bruk av flere entropimodeller.
DETALJERT BESKRIVELSE
Forskjellige fremgangsmåter og verktøy for entropikoding/-dekoding og tilhørende databehandling er beskrevet. Disse fremgangsmåtene og verktøyene letter generering, distribusjon og avspilling av høykvalitets lydinnhold, selv ved veldig lave bitrater.
De forskjellige fremgangsmåter og verktøy beskrevet her kan anvendes uavhengig av hverandre. Noen av fremgangsmåtene og verktøyene kan anvendes sammen (f.eks. i forskjellige faser i en kombinert kodings- og/eller dekodings-prosess).
Forskjellige fremgangsmåter er beskrevet nedenfor under henvisning til flytdiagrammer som illustrerer fremgangsmåtetrinn. De forskjellige fremgangs-måtetrinnene vist i flytdiagrammene kan kombineres til færre trinn eller deles opp i flere trinn. For enkelhets skyld er forbindelsen mellom trinn vist i et gitt flytdiagram og trinn beskrevet andre steder ofte ikke vist. I mange tilfeller kan trinnene i et flytdiagram bli utført i andre rekkefølger.
I. Eksempler på kjøremiljøer for kodere og/eller dekodere
Figur 1 viser et generalisert eksempel på et passende databehandlingsmiljø
(100) der flere av de beskrevne utførelsesformene kan realiseres. Databehandlingsmiljøet (100) er ikke ment å antyde noen som helst begrensning når det gjelder oppfinnelsens anvendelsesområde eller funksjonalitet, ettersom de beskrevne fremgangsmåter og verktøy kan realiseres i en rekke forskjellige generelle eller spesialiserte databehandlingsmiljøer.
Som vist i figur 1 omfatter databehandlingsmiljøet (100) minst én proses-seringsenhet (110) og minne (120). I figur 1 er denne mest grunnleggende arkitekturen (130) inneholdt innenfor en stiplet linje. Prosesseringsenheten (110) eksekverer datamaskinutførbare instruksjoner, og kan være en reell eller en virtuell prosessor. I et flerprosessorsystem eksekverer flere prosesseringsenheter datamaskinutførbare instruksjoner for å øke prosesseringskraften. Minnet (120) kan være volatilt minne (f.eks. registre, hurtigbufre, RAM), ikke-volatilt minne (f.eks. ROM, EEPROM, flashminne, etc.) eller en kombinasjon av de to. Minnet
(120) lagrer programvare (180) som implementerer en lydkoder og/eller -dekoder som anvender én eller flere av fremgangsmåtene beskrevet her.
Et databehandlingsmiljø kan ha ytterligere funksjoner. For eksempel omfatter databehandlingsmiljøet (100) lagre (140), én eller flere innmatings-anordninger (150), én eller flere utmatingsanordninger (160) og én eller flere kom-munikasjonsforbindelser (170). En sammenkoblingsmekanisme (ikke vist), så som en buss, en kontroller eller et nettverk, kobler sammen komponentene i databehandlingsmiljøet (100). Operativsystemprogramvaren (ikke vist) skaper typisk et kjøremiljø for annen programvare som kjører i databehandlingsmiljøet (100), og samordner aktiviteter i komponentene i databehandlingsmiljøet (100).
Lageret (140) kan være flyttbart eller stasjonært, og omfatter magnetplate-lagre, magnetbånd eller -kasetter, CD-ROM, DVD eller et hvilket som helst annet medium som kan anvendes for å lagre informasjon og som kan aksesseres innenfor databehandlingsmiljøet (100). Lageret (140) lagrer instruksjoner for program-varen (180).
Innmatingsanordningen(e) (150) kan være en berøringsbasert innmatingsanordning så som et tastatur, en mus, en innmatingspenn eller en styrekule, en talebasert innmatingsanordning, en skanneranordning eller en annen anordning som formidler innmating til databehandlingsmiljøet (100). For koding av lyd eller video kan innmatingsanordningen(e) (150) være en mikrofon, et lydkort, et TV-tunerkort eller en tilsvarende anordning som mottar lyd- eller videoinnmating i analog eller digital form, eller et CD-ROM eller CD-RW som leser inn lyd- eller videosampler til databehandlingsmiljøet (100). Utmatingsanordningen(e) (160) kan være en fremvisningsanordning, en skriver, høyttalere, en CD-brenner eller en annen anordning som formidler utmating fra databehandlingsmiljøet (100).
Kommunikasjonsforbindelsen(e) (170) muliggjør kommunikasjon over et
kommunikasjonsmedium med en annen databehandlingsentitet. Kommunikasjons-mediet overfører informasjon så som datamaskinutførbare instruksjoner, innmating eller utmating av lyd eller video, eller andre data i et modulert datasignal. Et modulert datasignal er et signal som får én eller flere av sine egenskaper satt eller endret på en slik måte at det kodes inn informasjon i signalet. Som et eksempel, og ikke begrensning omfatter kommunikasjonsmedier kabelbaserte eller trådløse innretninger realisert med en elektrisk, optisk, RF-basert, infrarødt-basert, akustisk eller annen bærer.
Fremgangsmåtene og verktøyene kan beskrives i den generelle sammen-hengen datamaskinlesbare medier. Datamaskinlesbare medier er hvilke som helst tilgjengelige medier som kan aksesseres innenfor et databehandlingsmiljø. Som et eksempel, og ikke en begrensning kan datamaskinlesbare medier i databehandlingsmiljøet (100) omfatte minne (120), lagre (140), kommunikasjonsmedier og enhver kombinasjon av de ovennevnte.
Fremgangsmåtene og verktøyene kan beskrives i den generelle sammen-hengen datamaskinutførbare instruksjoner, så som de inneholdt i programmoduler, som eksekveres i et databehandlingsmiljø på en fysisk eller virtuell prosessor. Generelt omfatter programmoduler rutiner, programmer, biblioteker, objekter, klasser, komponenter, datastrukturer, etc. som utfører bestemte opp- gaver eller implementerer bestemte abstrakte datatyper. Programmodulenes funksjonalitet kan kombineres eller deles mellom programmoduler som ønsket i forskjellige utførelsesformer. Datamaskinutførbare instruksjoner for programmoduler kan bli eksekvert i et lokalt eller distribuert databehandlingsmiljø.
For presentasjonsformå! anvender den detaljerte beskrivelsen ord som
"signalisere", "bestemme" og "anvende" for å beskrive datamaskinoperasjoner i et databehandlingsmiljø. Disse ordene er høynivå abstraksjoner av operasjoner som utføres av en datamaskin, og må ikke forveksles med handlinger som utføres av et menneske. De faktiske datamaskinoperasjonene som svarer til disse ordene varierer avhengig av utførelse.
II. Eksempler på kodere og dekodere
Figur 2 viser en første lydkoder (200) der én eller flere beskrevne utførelsesformer kan realiseres. Koderen (200) er en transformasjonsbasert, perseptuell lydkoder (200). Figur 3 viser en tilhørende lyddekoder (300). Figur 4 viser en andre lydkoder (400) der én eller flere beskrevne utførelsesformer kan realiseres. Også denne koderen (400) er en transformasjonsbasert, perseptuell lydkoder, men koderen (400) omfatter ytterligere moduler for behandling av flerkanallyd. Figur 5 viser en tilhørende lyddekoder (500). Figur 6 viser en mer generalisert media koder (600) der én eller flere beskrevne utførelsesformer kan realiseres. Figur 7 viser en tilhørende media dekoder (700).
Selv om systemene vist i figurene 2 til 7 er generaliserte, har hvert av dem egenskaper som finnes i virkelige systemer. I alle figurene angir relasjonene vist mellom moduler innenfor koderne og dekoderne flyt av informasjon i koderne og dekoderne; andre relasjoner er for enkelhets skyld ikke vist. Avhengig av utførelse og typen komprimering som ønskes kan koder- eller dekodermoduler legges til, utelates, deles inn i flere moduler, kombineres med andre moduler og/eller er-stattes med like moduler. I alternative utførelsesformer kan kodere eller dekodere med forskjellige moduler og/eller andre oppbygninger behandle lyddata eller andre typer data i henhold til én eller flere beskrevne utførelsesformer. For eksempel kan moduler i figurene 2 til 7 som behandler spektralkoeffisienter kun anvendes å behandle koeffisienter i et basisbånd eller ett eller flere grunnfrekvensområder (så som lavere frekvenser) mens andre moduler (ikke vist) behandler spektralkoeffisienter i andre frekvensområder (så som høyere frekvenser).
A. Første lydkoder
I hovedtrekk mottar koderen (200) en tidsserie av innmatede lydsampler
(205) med en gitt samplingsdybde og -rate. De innmatede lydsamplene (205) er for flerkanallyd (f.eks. stereo) eller monolyd. Koderen (200) komprimerer lydsamplene (205) og multiplekser informasjon generert av de forskjellige modulene i koderen (200), og mater ut en bitstrøm (295) i et format så som WMA, ASF (Advanced Streaming Format) eller et annet format.
Frekvensomformeren (210) mottar lydsamplene (205) og gjør dem om til data i frekvensdomenet. For eksempel kan frekvensomformeren (210) dele opp lydsamplene (205) i blokker, som kan ha variabel størrelse for å muliggjøre variabel tidsoppløsning. Blokker kan overlappes for å redusere oppfattbare diskonti-nuiteter mellom blokker som ellers vil kunne innføres ved påfølgende kvantisering. Frekvensomformeren (210) anvender, på blokker, tidsvarierende MLT (Modulated Lapped Transform), modulert DCT (MDCT), en annen variant av MLT eller DCT, eller en annen type modulert eller ikke-modulert, overlappende eller ikke-overlappende frekvenstransformasjon, eller anvender underbånd eller wavelet-koding. Frekvensomformeren (210) mater ut blokker av spektralkoeffisientdata og mater ut metainformasjon så som blokkstørrelsertil multiplekseren ("MUX") (280).
For lyddata med flere kanaler kan flerkanalsomformeren (220) gjøre om de flere opprinnelige, uavhengig kodede kanalene til felleskodede kanaler. Alternativt kan flerkanalsomformeren (220) slippe de venstre og høyre kanalene gjennom som uavhengig kodede kanaler. Flerkanalsomformeren (220) genererer metainformasjon til MUX (280) som angir hvilken kanalmodus som er anvendt. Koderen
(200) kan anvende fler-kanals om-matrisering på en blokk av lyd-data etter en fler-kanal-transformasjon.
Persepsjonsmodelleringsenheten (230) modellerer egenskaper ved menneskets hørselssystem for å bedre den oppfattede kvaliteten til det rekonstruerte lydsignalet for en gitt bitrate. Persepsjonsmodelleringsenheten (230) kan anvende en hvilken som helst av forskjellige hørselsmodeller.
Persepsjonsmodelleringsenheten (230) mater ut informasjon som vektingsenheten (240) anvender for å utforme støy i lyddataene for å redusere støyens hørbarhet. Ved anvendelse av en hvilken som helst av forskjellige metoder kan vektingsenheten (240) for eksempel generere vektingsfaktorer (noen ganger kalt skaleringsfaktorer) for kvantiseringsmatriser (noen ganger kalt masker) basert på den mottatte informasjonen. Vektingsenheten (240) anvender da vektingsfaktorene på dataene mottatt fra flerkanalsomformeren (220). Et sett av vektingsfaktorer kan bli komprimert til en mer effektiv representasjon.
Kvantiseringsenheten (250) kvantiserer utmatingen fra vektingsenheten
(240) og genererer kvantiserte koeffisientdata til entropikoderen (260) og metainformasjon omfattende kvantiseringstrinn-størrelse til MUX (280). I figur 2 er kvantiseringsenheten (250) en adaptiv, uniform skalar kvantiseringsenhet. Kvantiseringsenheten (250) anvender samme kvantiseringstrinn-størrelse på alle spektralkoeffisienter, men kvantiseringstrinn-størrelsen kan endre seg fra én iterasjon i en kvantiseringssløyfe til den neste og påvirke bitraten til utmatingen fra entropikoderen (260). Andre typer kvantisering er ikke-uniform, vektoriell kvantisering og/eller ikke-adaptiv kvantisering.
Entropikoderen (260) komprimerer tapsfritt kvantiserte koeffisientdata mottatt fra kvantiseringsenheten (250), for eksempel ved å utføre sekvensnivå-koding og vektoriell variabel lengde-koding. Forskjellige mekanismer for entropikoding (eventuelt omfattende preprosessering) i noen utførelsesformer er beskrevet nærmere i kapitlene III til V. Alternativt kan entropikoderen (260) anvende en annen form for eller kombinasjon av entropikodingsmekanismer. Entropikoderen (260) kan beregne antallet bit som anvendes for koding av lydinformasjon og sende denne informasjonen til hastighets-/kvalitetsstyringsenheten (270).
Styringsenheten (270) jobber sammen med kvantiseringsenheten (250) for å styre bitraten og/eller kvaliteten til utmatingen fra koderen (200). Styringsenheten (270) mater ut kvantiseringstrinn-størrelsen til kvantiseringsenheten (250) med det mål å imøtekomme bitrate- og kvalitetsbegrensninger.
I tillegg kan koderen (200) anvende støysubstitusjon og/eller båndtrun-kering på en blokk av lyddata.
MUX (280) multiplekser metainformasjonen mottatt fra de andre modulene i lydkoderen (200) sammen med de entropikodede dataene mottatt fra entropikoderen (260). MUX (280) kan omfatte et virtuelt buffer som lagrer bitstrømmen
(295) som skal mates ut fra koderen (200).
B. Første lyddekoder
I hovedtrekk mottar dekoderen (300) en bitstrøm (305) av komprimert lydinformasjon omfattende entropikodede data og metainformasjon, fra hvilken dekoderen (300) rekonstruerer lydsampler (395).
Demultiplekseren ("DEMUX") (310) parser informasjon i bitstrømmen (305) og sender informasjon til moduler i dekoderen (300). DEMUX (310) omfatter ett eller flere bufre for å kompensere for kortsiktige variasjoner i bitraten som følge av fluktuasjoner i lydens kompleksitet, pulsvariasjoner i nettverket (network jitter) og/eller andre faktorer.
Entropidekoderen (320) dekomprimerer tapsfritt entropikode mottatt fra DEMUX (310), og genererer kvantiserte spektralkoeffisientdata. Entropidekoderen
(320) anvender typisk den omvendte av entropikodingsmetoden anvendt i koderen. Forskjellige mekanismer for entropidekoding i noen utførelsesformer er beskrevet nærmere i kapitlene III til V.
Den inverse kvantiseringsenheten (330) mottar kvantiseringstrinn-størrelse fra DEMUX (310), og mottar kvantiserte spektralkoeffisientdata fra entropidekoderen (320). Den inverse kvantiseringsenheten (330) anvender kvanti-seringstrinn-størrelsen på de kvantiserte frekvenskoeffisientdataene for delvis å rekonstruere frekvenskoeffisientdataene, eller utfører invers kvantisering på annen måte.
Fra DEMUX (310) mottar støygeneratoren (340) informasjon som angir hvilke bånd i en blokk av data som er støysubstituert samt eventuelle parametere for støyens form. Støygeneratoren (340) genererer mønstrene for de angitte båndene og sender informasjonen til den inverse vektingsenheten (350).
Den inverse vektingsenheten (350) mottar vektingsfaktorene fra DEMUX
(310), mønstre for eventuelle støysubstituerte bånd fra støygeneratoren (340) og de delvis rekonstruerte frekvenskoeffisientdataene fra den inverse kvantiseringsenheten (330). Om nødvendig dekomprimerer den inverse vektingsenheten (350) vektingsfaktorene. Den inverse vektingsenheten (350) anvender vektingsfaktorene på de delvis rekonstruerte frekvenskoeffisientdataene for bånd som ikke har blitt støysubstituert. Den inverse vektingsenheten (350) legger så til støymønstrene mottatt fra støygeneratoren (340) for de støysubstituerte båndene.
Den inverse flerkanalsomformeren (360) mottar de rekonstruerte spektralkoeffisientdataene fra den inverse vektingsenheten (350) samt kanalmodus-informasjon fra DEMUX (310). Dersom flerkanallyd går i uavhengig kodede kanaler, slipper den inverse flerkanalsomformeren (360) kanalene gjennom. Dersom fler-kanaldata går i felleskodede kanaler, gjør den inverse flerkanalsomformeren (360) om dataene til uavhengig kodede kanaler.
Den inverse frekvensomformeren (370) mottar spektralkoeffisientdataene matet ut fra flerkanalsomformeren (360) og metainformasjon så som blokkstør-relserfra DEMUX (310). Den inverse frekvensomformeren (370) anvender den inverse av frekvenstransformasjonen anvendt i koderen, og mater ut blokker av rekonstruerte lydsampler (395).
C. Andre lydkoder
Med henvisning til figur 4 mottar koderen (400) en tidsserie av innmatede lydsampler (405) med en gitt samplingsdybde og -rate. De innmatede lydsamplene
(405) er for flerkanallyd (f.eks. stereo, surround) eller monolyd. Koderen (400) komprimerer lydsamplene (405) og multiplekser informasjon generert av de forskjellige modulene i koderen (400) og mater ut en bitstrøm (495) i et format så som et WMA Pro-format eller et annet format.
Koderen (400) velger mellom forskjellige kodingsmodi for lydsamplene
(405). I figur 4 skifter koderen (400) mellom en blandet/ren tapsfri kodingsmodus og en tapsbeheftet kodingsmodus. Den tapsfri kodingsmodusen omfatter den blandede/rent tapsfri koderen (472) og anvendes typisk for høykvalitets komprimering (med høy bitrate). Den tapsbeheftede kodingsmodusen omfatter komponenter så som vektingsenheten (442) og kvantiseringsenheten (460), og anvendes typisk for komprimering med regulerbar kvalitet (og styrt bitrate). Valget avhenger av brukerinnmating eller andre kriterier.
For tapsbeheftet koding av lyddata med flere kanaler kan flerkanalspreprosessoren (410) eventuelt lage nye matriser for (rematrix) tidsdomene-lydsamplene
(405). I noen utførelsesformer lager flerkanalspreprosessoren (410) selektivt nye matriser for lydsamplene (405) for å droppe én eller flere kodede kanaler eller øke korrelasjonen mellom kanaler i koderen (400), men likevel muliggjøre rekonstruksjon (i en eller annen form) i dekoderen (500). Flerkanalspreprosessoren
(410) kan sende metainformasjon så som instruksjoner for fler-kanalpostproses-sering til MUX (490).
Vindusmodulen (420) deler opp en ramme av innmatede lydsampler (405) i underrammeblokker (vinduer). Vinduene kan ha tidsvarierende størrelse og vindusformfunksjoner. Når koderen (400) anvender tapsbeheftet koding, muliggjør vinduer med variabel størrelse variabel tidsoppløsning. Vindusmodulen (420) mater ut blokker av oppdelte data og mater ut metainformasjon så som blokk-størrelser til MUX (490).
I figur 4 deler tile-struktureringsenheten (422) inn rammer av flerkanallyd på kanalbasis. Tile-struktureringsenheten (422) deler uavhengig inn hver kanal i rammen dersom kvaliteten/bitraten tillater det. For eksempel kan tile-struktureringsenheten (422) gruppere vinduer av samme størrelse som sammenfaller i tid som en tile.
Frekvensomformeren (430) mottar lydsampler og gjør dem om til data i frekvensdomenet ved anvendelse av en transformasjon så som beskrevet over for frekvensomformeren (210) i figur 2. Frekvensomformeren (430) mater ut blokker av spektralkoeffisientdata til vektingsenheten (442) og mater ut metainformasjon så som blokkstørrelser til MUX (490). Frekvensomformeren (430) mater ut både frekvenskoeffisientene og metainformasjonen til persepsjonsmodelleringsenheten
(440). Persepsjonsmodelleringsenheten (440) modellerer egenskaper ved menneskets hørselssystem, og behandler lyddata i henhold til en hørselsmodell.
Vektingsenheten (442) genererer vektingsfaktorer for kvantiseringsmatriser basert på informasjonen mottatt fra persepsjonsmodelleringsenheten (440). Vektingsenheten (442) anvender vektingsfaktorene på dataene mottatt fra frekvensomformeren (430). Vektingsenheten (442) mater ut metainformasjon så som kvantiseringsmatriser og kanalvektingsfaktorer til MUX (490), og kvanti-seringsmatrisene kan bli komprimert.
For lyddata med flere kanaler kan flerkanalsomformeren (450) anvende en flerkanalstransformasjon. For eksempel kan flerkanalsomformeren (450) selektivt og på en fleksibel måte anvende flerkanalstransformasjonen på noen av, men ikke alle kanalene og/eller kvantiseringsbåndene i tilen. Flerkanalsomformeren (450) anvender selektivt forhåndsdefinerte matriser eller tilpassede matriser, og an vender effektiv komprimering på de tilpassede matrisene. Flerkanalsomformeren
(450) genererer metainformasjon til MUX (490) som for eksempel angir de an-vendte flerkanalstransformasjonene og flerkanalstransformerte deler av tiles.
Kvantiseringsenheten (460) kvantiserer utmatingen fra flerkanalsomformeren (450) og genererer kvantiserte koeffisientdata til entropikoderen (470) og metainformasjon omfattende kvantiseringstrinn-størrelsertil MUX (490). I figur 4 er kvantiseringsenheten (460) en adaptiv, uniform, skalar kvantiseringsenhet som beregner en kvantiseringsfaktor for hver tile, men kvantiseringsenheten (460) vil i stedet kunne utføre en annen type kvantisering.
Entropikoderen (470) komprimerer tapsfritt kvantiserte koeffisientdata mottatt fra kvantiseringsenheten (460), i hovedtrekk som beskrevet over i forbindelse med entropikoderen (260) i figur 2. Forskjellige mekanismer for entropikoding (eventuelt omfattende preprosessering) i noen utførelsesformer er beskrevet nærmere i kapitlene III til V.
Styringsenheten (480) samvirker med kvantiseringsenheten (460) for å styre bitraten og/eller kvaliteten til utmatingen fra koderen (400). Styringsenheten
(480) mater ut kvantiseringsfaktorene til kvantiseringsenheten (460) med det mål å imøtekomme kvalitets- og/eller bitratebegrensninger.
Den blandede/rent tapsfri koderen (472) og den tilhørende entropikoderen
(474) komprimerer lyddata for den blandede/rent tapsfri kodingsmodusen. Koderen (400) anvender den blandede/rent tapsfri kodingsmodusen for en hel sekvens eller skifter mellom kodingsmodi for hver ramme, hver blokk, hver tile, eller på annen måte.
MUX (490) multiplekser metainformasjonen mottatt fra de andre modulene i lydkoderen (400) sammen med de entropikodede dataene mottatt fra entropi-koderne (470, 474). MUX (490) omfatter ett eller flere bufre for hastighetsstyring eller andre formål.
D. Andre lyddekoder
Med henvisning til figur 5 mottar den andre lyddekoderen (500) en bitstrøm
(505) med komprimert lydinformasjon. Bitstrømmen (505) omfatter entropikodede data så vel som metainformasjon som dekoderen (500) rekonstruerer lydsampler
(595) fra.
DEMUX (510) parser informasjon i bitstrømmen (505) og sender informasjon til modulene i dekoderen (500). DEMUX (510) omfatter ett eller flere bufre for å kompensere for kortsiktige variasjoner i bitraten som følge av fluktuasjoner i lydens kompleksitet, pulsvariasjon i nettverket og/eller andre faktorer.
Entropidekoderen (520) dekomprimerer tapsfritt entropikoder mottatt fra DEMUX (510), typisk ved å anvende de omvendte av entropikodingsmetodene anvendt i koderen (400). Ved dekoding av data komprimert i tapsbeheftet kodingsmodus genererer entropidekoderen (520) kvantiserte spektralkoeffisientdata. Forskjellige mekanismer for entropidekoding i noen utførelsesformer er beskrevet nærmere i kapitlene III til V.
Den blandede/rent tapsfri dekoderen (522) og én eller flere tilhørende entropidekodere (520) dekomprimerer tapsfritt innkodede lyddata for den blandede/rent tapsfri kodingsmodusen.
Tilestruktur-dekoderen (530) mottar og, om nødvendig, dekoder informasjon som angir mønstrene i tiler for rammer fra DEMUX (590). Tilemønsterinformasjonen kan være entropikodet eller parametrisert på annen måte. Tilestruktur-dekoderen (530) sender så tilemønsterinformasjonen til forskjellige andre moduler i dekoderen (500).
Den inverse flerkanalsomformeren (540) mottar de kvantiserte spektralkoeffisientdataene fra entropidekoderen (520) så vel som tilestrukturinformasjon fra tilestruktur-dekoderen (530) og metainformasjon fra DEMUX (510), som for eksempel angir hvilken flerkanalstransformasjon som er anvendt og transformerte deler av tiles. Med bruk av denne informasjonen de-komprimerer den inverse fler-kanalomformeren (540) transformasjonsmatrisen som nødvendig, og anvender selektivt og på en fleksibel måte én eller flere inverse flerkanalstransformasjoner på lyddataene.
Den inverse kvantiseringsenheten/vektingsenheten (550) mottar tile- og kanalkvantiseringsfaktorer så vel som kvantiseringsmatriser fra DEMUX (510), og mottar kvantiserte spektralkoeffisientdata fra den inverse flerkanalsomformeren
(540). Den inverse kvantiseringsenheten/vektingsenheten (550) dekomprimerer den mottatte kvantiseringsfaktoren/matriseinformasjonen som nødvendig, og utfører så invers kvantisering og vekting.
Den inverse frekvensomformeren (560) mottar spektralkoeffisientdataene matet ut fra den inverse kvantiseringsenheten/vektingsenheten (550) samt metainformasjon fra DEMUX (510) og tilemønsterinformasjon fra tilestruktur-dekoderen
(530). Den inverse frekvensomformeren (570) anvender den inverse av frekvenstransformasjonen anvendt i koderen og mater ut blokker til overlapperen/adderen
(570). I tillegg til å motta tilemønsterinformasjon fra tilestruktur-dekoderen (530) mottar overlapperen/adderen (570) dekodet informasjon fra den inverse frekvensomformeren (560) og/eller den blandede/rent tapsfri dekoderen (522). Over-lapperen/adderen (570) overlapper og legger til lyddata som nødvendig og setter inn rammer eller andre sekvenser av lyddata innkodet med forskjellige modi.
Flerkanalspostprosessoren (580) kan eventuelt omgenerere matrisene for tidsdomene-lydsampler matet ut fra overlapperen/adderen (570). For bitstrøm-styrt postprosessering varierer postprosesseringstransformasjonsmatrisene med tiden og signaliseres eller innlemmes i bitstrømmen (505).
E. Generalisert media-koder
Figur 6 viser deler av en generalisert media-koder (600) som koder inn lyd, video eller annet mediainnhold. For enkelhets skyld er forskjellige moduler i koderen (600) og visse typer metainformasjon, som kan avhenge av typen medieinnhold, ikke vist.
I likhet med koderne (200, 400) henholdsvis vist i figurene 2 og 4 er koderen (600) transformasjonsbasert, ettersom innmatingen vist i figur 6 er ukvantiserte spektralkoeffisienter (605). I noen utførelsesformer blir imidlertid én eller flere av entropikodingsmekanismene beskrevet her (f.eks. en mekanisme beskrevet i kapittel V) utført for andre typer innmating.
Kvantiseringsenheten (620) kvantiserer koeffisientene (605) og genererer med det kvantiserte koeffisientdata. For eksempel kan kvantiseringsenheten (620) være en adaptiv, uniform, skalar kvantiseringsenhet eller en annen type kvantiseringsenhet.
Entropikoding-pre-prosessoren (640) utfører selektiv preprosessering før entropikoding. For eksempel kan preprosessoren (640) utføre koeffisientberegning på kvantiserte spektralkoeffisienter, som beskrevet i kapittel III. Eventuelt kan preprosessoren (640) omordne kvantiserte spektralkoeffisienter, som beskrevet i kapittel IV. Alternativt kan preprosessoren (640) utføre en annen form for preprosessering.
I tillegg til preprosesserte koeffisienter mater preprosessoren (640) ut metainformasjon til ut-bitstrømmen (695) som beskriver preprosesseringen. Metainformasjonen kan for eksempel omfatte beregningsfaktorer anvendt ved koeffisientberegning, som beskrevet i kapittel III. Eventuelt kan metainformasjonen omfatte informasjon anvendt ved omordning av kvantiserte spektralkoeffisienter, som beskrevet i kapittel IV.
Entropikoderen (660) komprimerer tapsfritt kvantiserte koeffisientdata, for eksempel ved å utføre sekvensnivå-koding og vektoriell variabel lengde-koding. Kapittel V beskriver mekanismer for adaptiv entropikoding. Alternativt kan entropikoderen (660) anvende andre typer eller kombinasjoner av entropikodingsmekanismer.
Selv om figur 6 bare viser at preprosessoren (640) forsyner innmating til entropikoderen (660) og utfører preprosessering uten tilbakemelding fra entropikoderen (660), kan entropikoderen (660) alternativt gi tilbakemelding til preprosessoren (640), som preprosessoren (640) anvender for å tilpasse preprosesseringen. For eksempel kan preprosessoren (640) justere koeffisientomordningen basert på tilbakemelding fra entropikoderen (660) slik at innmatingen til entropikoderen (660) er bedre tilpasset en entropikodingsmodell.
F. Generalisert media-dekoder
Figur 7 viser deler av en generalisert media-dekoder (700) som dekoder lyd, video eller annet mediainnhold. For enkelhets skyld er forskjellige moduler i dekoderen (700) og forskjellige typer metainformasjon, som kan avhenge av typen mediainnhold, ikke vist.
I likhet med dekoderne (300, 500) henholdsvis vist i figurene 3 og 5 er dekoderen (700) transformasjonsbasert, ettersom utmatingen vist i figur 7 er rekonstruerte spektralkoeffisienter (705). I noen utførelsesformer blir imidlertid én eller flere av entropidekodingsmekanismene beskrevet her (f.eks. en mekanisme beskrevet i kapittel V) utført for en annen type utmating.
Entropidekoderen (760) dekomprimerer tapsfritt kvantiserte koeffisientdata, for eksempel ved å utføre sekvensnivå-dekoding og vektoriell variabel lengde-dekoding. Kapittel V beskriver mekanismer for adaptiv entropidekoding. Alternativt kan entropidekoderen (760) anvende andre typer eller kombinasjoner av entropi-dekodingsmekanismer.
Entropidekoding-postprosessoren (740) utfører selektiv postprosessering etter entropidekoding. For eksempel kan postprosessoren (740) utføre koeffisientberegning på kvantiserte spektralkoeffisienter, som beskrevet i kapittel III. Eventuelt kan postprosessoren (740) omordne kvantiserte spektralkoeffisienter, som beskrevet i kapittel IV. Alternativt kan postprosessoren (740) utføre en annen form for postprosessering.
I tillegg til entropidekodede koeffisienter mottar postprosessoren (740) metainformasjon fra bitstrømmen (795) som beskriver postprosesseringen. For eksempel kan metainformasjonen omfatte beregningsfaktorer anvendt i koeffisientberegningen, som beskrevet i kapittel III. Eventuelt kan metainformasjonen omfatte informasjon anvendt ved omordning av kvantiserte spektralkoeffisienter, som beskrevet i kapittel IV.
Den inverse kvantiseringsenheten (720) utfører invers kvantisering, og genererer med det rekonstruerte koeffisientdata (705). For eksempel kan den inverse kvantiseringsenheten (720) være en adaptiv, uniform, skalar invers kvantiseringsenhet eller en annen type kvantiseringsenhet.
III. Beregning av koeffisienter i spektraldomenet for koding og dekoding
En lydkoder anvender ofte transformasjonskoding etterfulgt av kvantisering og entropikoding for å oppnå komprimering. Når det anvendes en fast transformasjon er det for noen lydsignalmønstre en korrelasjon mellom nabokoeffisienter etter transformasjonen. Forskjellige fremgangsmåter og verktøy er beskrevet nedenfor som utnytter denne korrelasjonen for å øke kodingseffektiviteten. Spesielt utfører i noen utførelsesformer en koder så som en av de vist i figurene 2, 4 eller 6 koeffisientberegning på kvantiserte spektralkoeffisienter under koding. En tilhørende dekoder (så som en av de vist i figurene 3, 5 eller 7) utfører koeffisientberegning på kvantiserte spektralkoeffisienter under dekoding.
A. Eksempel på problemområde
I en typisk lydkoder som komprimerer lyd som en bølgeform, blir et innmatet lydsignal transformert ved anvendelse av en MDCT-transformasjon med variabel vindusstørrelse eller en annen transformasjon med variabel vindus-størrelse. Anta for eksempel at vindusanalyse av stereolyden vist i figur 8a resulterer i vindusstrukturen vist i figur 8b. I alminnelighet vil en slik vindusstruktur redusere pre-ekko og post-ekko i det dekodede signalet (ved å anvende kortere vinduer for transiente segmenter) samtidig som den reduserer den generelle kodingseffektiviteten (ved å anvende lengre vinduer for andre segmenter). Ett mål med vindusanalysen er å identifisere vindusgrenser slik at signalet innenfor et hvilket som helst gitt vindu er hovedsaklig stasjonært.
Spektralkoeffisientene blir kvantisert før eller etter en kanaltransformasjon. Tradisjonelt antas det at det ikke er noen lineær korrelasjon mellom spektralkoeffisientene i en underramme eller et annet vindu. I stedet antas det at spektralkoeffisientene vanligvis har en høyere ordens statistisk relasjon, som kodere forsøker å utnytte under entropikoding.
I praksis er flere antagelser som ligger implisitt i denne kodingen ugyldige under forskjellige omstendigheter. For visse typer og mønstre av lydsignaler er for eksempel ikke spektralkoeffisienter for en underramme eller et annet vindu nød-vendigvis ukorrelert. Av mange av de samme grunner som et signal i et vindu kan være ikkestasjonært (se nedenfor), kan spektralkoeffisientene være lineært kor-relert. Dagens bølgeformbaserte kodere utnytter ikke denne korrelasjonen ved entropikoding.
Som et annet eksempel, når vindusanalyse anvendes på visse lydsignaler, er ikke signalet innenfor et gitt vindu nødvendigvis stasjonært. Dersom innmatet lyd endrer seg mye over tid (f.eks. for et talesignal), kan selv korte vinduer være utilstrekkelig til å isolere transiente segmenter. Eventuelt, dersom bufferet i en hastighetsstyringsenhet er fullt, kan styringsenheten tvinge koderen til å anvende større vinduer for å redusere bitraten, selv om mindre vinduer ellers ville blitt anvendt. Eventuelt, dersom en overgang er langsom, kan vindusanalyse være ute av stand til å detektere transienten, slik at det ikke blir innført kortere vinduer. Eventuelt kan vindusanalyse beskytte mot pre-ekko innført kun av én transient for hver ramme, og ikke andre transienter i rammen. Eventuelt kan signalet innenfor et vindu være ikkestasjonært av andre grunner.
Skaleringsfaktorer kan bidra til å styre spektralfordelingen av forvrengninger. Som for tidsfordeling av forvrengninger innfører imidlertid enkel kvantisering over et spektrum forvrengning som er konstant over en hel trans- formasjonsblokk, noe som kan forårsake hørbar forvrengning i tidssegmenter av en ramme.
TNS (Temporal Noise Shaping) er en teknologi i visse varianter av MPEG som anvender en prediktiv metode i frekvensdomenet for å danne kvantiserings-støy over tid. I TNS anvender en koder et beregningsfilter på spektralkoeffisienter og kvantiserer det filtrerte signalet for å begrense utglattingen av kvantiset rngsstøy over et helt tidsvindu. Figurene 9 og 10 viser TNS henholdsvis i en koder og en dekoder.
Med henvisning til figur 9 beregner koderen forskjellen mellom en ukvanti-sert spektralkoeffisient (905) og en prediktor, som er en kombinasjon av to tidligere rekonstruerte koeffisienter. For kombinasjonen blir to rekonstruerte, tids-forsinkede koeffisienter (i forsinkelser 910 og 912) begge multiplisert med en beregningsfaktor (911, 913) og addert sammen. Beregningsfaktorene (911, 913) blir kvantisert og innlemmet i bitstrømmen (995). Kvantiseringsenheten (970) kvantiserer differanseverdien, og entropikoderen (990) entropikoder den kvantiserte differanseverdien for utmating i bitstrømmen (995). Den inverse kvantiseringsenheten (980) rekonstruerer differanseverdien og legger den til prediktoren for koeffisienten (905). Dette resulterer i en rekonstruksjon av koeffisienten, som blir bufret i den første forsinkelsen (910) og deretter den andre forsinkelsen (912) for å bidra til prediktoren for en etterfølgende koeffisient (905).
I den tilhørende dekoderen entropidekoder entropidekoderen (1090) en differanseverdi fra bitstrømmen (1095), og den inverse kvantiseringsenheten
(1080) inverskvantiserer differanseverdien. Dekoderen kombinerer differanseverdien med en prediktor for å generere en rekonstruert spektralkoeffisient (1005), der prediktoren er en kombinasjon av to tidligere rekonstruerte koeffisienter. Beregningen av kombinasjonen omfatter to forsinkelser (1010, 1012) og to beregningsfaktorer (1011, 1013), som hentes fra bitstrømmen (1095). Den rekonstruerte spektralkoeffisienten (1005) blir bufret i den første forsinkelsen (1010) og så den andre forsinkelsen (1012), for å bidra til prediktoren for en etterfølgende koeffisient (1005).
TNS i MPEG AAC muliggjør bruk av opptil tre forskjellige uendelig-impuls-responsfiltre (eller predikterer) på forskjellige spektralområder i et inngangssignal. Filterkoeffisientene blir kvantisert og innlemmet i bitstrømmen.
Selv om MPEG AAC muliggjør bruk av korte vinduer anvendes ikke TNS i korte vinduer siden den totale informasjonen nødvendig for predikterer-beskrivelsesinformasjon er forholdsvis stor, noe som gir færre bit for spektralverdier. Følgelig tillates TNS kun for lange vinduer i MPEG AAC, noe som begrenser nytteverdien av TNS.
Som også kan sees i figurene 9 og 10 skjer beregning i TNS i det ukvantiserte/rekonstruerte domenet. Som følge av dette er en dekoder nødt til å flette inn trinn med invers kvantisering og beregning (og eventuelt også entropidekoding), noe som øker kompleksiteten. I tillegg er for beregning i det ukvantiserte/rekonstruerte domenet TNS-operasjonen spesifisert som en flyttallsoperasjon i MPEG AAC, noe som skaper vanskeligheter i utførelser med faste tall.
TNS-predikteren er en andre ordens predikter, som krever to multiplika-sjoner for beregningsoperasjonen for hver spektralkoeffisient. På kodersiden kan det være vanskelig å konstruere effektive prediktorer, og ustabile prediktorer kan være et problem.
En arkitektur tilsvarende den vist i figurene 9 og 10 kan anvendes for differensialpulskodemodulering, der en koder beregner forskjellen mellom et tidssample og en prediktor, og prediktoren er basert på beregningsfaktorer og bufrede, inverskvantiserte tidssampler. Beregningen anvender typisk en detaljert prediktor som er vanskelig å konstruere og ofte ustabil, og som krever omfattende signalering og rekonstruksjonslogikk. Videre er komprimeringseffektiviten for slike metoder ikke tilfredsstillende.
Som en oppsummering er det beskrevet flere problemer som kan løses med koeffisientberegningsmetoder og -verktøy. Slike koeffisientsberegnings-metoder og -verktøy trenger imidlertid ikke anvendes for å løse noen som helst av eller alle disse problemene.
B. Eksempler på arkitekturer for koeffisientberegning
I noen utførelsesformer utfører en koder koeffisientberegning på kvantiserte spektralkoeffisienter under koding, og en tilhørende dekoder utfører koeffisientberegning på kvantiserte spektralkoeffisienter under dekoding. Forvisse mønstre og innholdstyper reduserer koeffisientberegningen redundans i spektralkoeffisientene for å bedre effektiviteten i etterfølgende entropikoding. Beregning er rever- sibel - under dekoding speiler koeffisientberegningen (etter entropidekoding) koeffisientberegningen i koderen.
Figur 11 viser en koder med beregning av kvantiserte spektralkoeffisienter. For eksempel kan koderen være en modifisert versjon av koderen vist i figur 2 eller 4, med trinn lagt til for å beregne en prediktor og en differanseverdi. Alternativt kan koderen være en modifisert versjon av koderen vist i figur 6, med koeffisientberegning som forbehandling før entropikoding.
Med henvisning til figur 11 beregner koderen differansen (også kalt beregningsresten (prediction residual)) mellom en kvantisert spektralkoeffisient
(1105) og en prediktor. For prediktoren blir en tidsforsinket, kvantisert spektralkoeffisient (i forsinkelsen 1110) multiplisert med en beregningsfaktor (1111). Beregningsfaktoren (1111) blir signalisert som metainformasjon i bitstrømmen
(1195). Entropikoderen (1190) entropikoder differanseverdien for utmating i bit-strømmen (1195). Den kvantiserte spektralkoeffisienten (1105) blir også bufret i den første forsinkelsen (1110) for beregning av prediktoren for en etterfølgende kvantisert spektralkoeffisient (1105). Figur 12 viser en tilhørende dekoder med beregning av kvantiserte spektralkoeffisienter. For eksempel kan dekoderen være en modifisert versjon av dekoderen vist i figurene 3 eller 5, med trinn lagt til for å beregne en predikter og kom-binere predikteren med en differanseverdi. Alternativt kan dekoderen være en modifisert versjon av dekoderen vist i figur 7, med koeffisientberegning som etterbehandling etter entropidekoding.
Med henvisning til figur 12 dekoder en entropidekoder (1290) en differanseverdi fra bitstrømmen (1295). Dekoderen beregneren prediktor og kombinerer differanseverdien med prediktoren, og genererer med det en kvantisert spektralkoeffisient (1205). For prediktoren blir en tidsforsinket, kvantisert spektralkoeffisient (i forsinkelsen 1210) multiplisert med en beregningsfaktor (1211). Beregningsfaktoren (1211) blir parset fra bitstrømmen (1295). Den kvantiserte spektralkoeffisienten (1205) blir også bufret i den første forsinkelsen (1210) for beregning av predikteren for en etterfølgende kvantisert spektralkoeffisient (1205).
I figurene 11 og 12 skjer beregnings- og differanseoperasjonene i koderen og beregnings- og summeringsoperasjonene i dekoderen i det kvantiserte do menet. Dette gjør konstruksjonen av koderen og dekoderen enklere og reduserer kompleksiteten ettersom operasjonene skjer i samme domene.
I noen utførelser gjøres beregnings-, summerings-, og differanseoperasjonene på heltallsverdier. Dette vil typisk forenkle utførelsen siden operasjonene kan bli utført med heltallsoperasjoner i motsetning til flyttallsoperasjoner. For å forenkle beregningen ytterligere kan en beregningsfaktor i området fra -1 til 1 bli kvantisert ved anvendelse av en uniform trinnstørrelse på 0,25. Multiplikasjons-operasjonene for predikteren kan da utføres ved hjelp av binære skift-/addisjons-operasjoner.
I figurene 11 og 12 er prediktoren en førsteordens prediktor, noe som også reduserer kompleksiteten til koder-/dekoder-("kodek")-systemet. Med en adaptiv førsteordens prediktor endrer beregningsfaktoren seg, slik at samme beregningsfaktor ikke trenger anvendes på lang sikt. For en førsteordens prediktor er stabilitetskontroll trivielt. For eksempel kan koderen ganske enkelt begrense beregningsfaktoren til å være innenfor området fra og med -1 til og med +1. Alternativt kan prediktoren være en høyereordens prediktor. For eksempel kan prediktoren ha opptil 16 beregningsfaktorer for en 16-ordens prediktor.
For adaptiv koeffisientberegning endrer koderen beregningsfaktoren fra underramme til underramme eller på annen basis. For eksempel kan koderen dele inn en underramme i flere segmenter med uniform størrelse og beregne en beregningsfaktor for hvert segment. Som for signalering signaliserer koderen antallet segmenter for underrammen så vel som beregningsfaktorene. Dersom en underramme av 2048 spektralkoeffisienter deles inn i 16 segmenter, signaliserer koderen således antallet segmenter og en beregningsfaktor for hvert 128-koeffisienters segment. Antallet segmenter for hver underramme signaliseres én gang for en sekvens, én gang for hver underramme eller på annen basis. Alternativt kan segmenter ha variabel lengde og/eller koderen kan anvende en annen mekanisme for å signalisere beregningsfaktorer (f.eks. kun signalisere endringer av beregningsfaktorer eller signalisere en beregningsfaktor og antall segmenter som beregningsfaktoren er anvendt for).
For visse innmatinger vil ikke koeffisientberegning bedre ytelsen. I tillegg til å deaktivere koeffisientberegning for hvert segment (beskrevet nedenfor), kan en koder og dekoder deaktivere koeffisientberegning for en hel sekvens (for eksempel med et sekvenslag av/på-flagg) eller på et annet nivå.
Når koeffisientberegning anvendes for flerkanallyd gjøres koeffisients-beregningen for hver kodede kanal når kvantiseringen, etc. skjer nedstrøms flerkanalstransformasjonen under koding. Under dekoding gjøres også koeffisientberegningen for hver kodet kanal. For fler-kanallyd blir således beregningsinformasjon som signaliseres per segment eller per underramme typisk signalisert per segment eller per underramme i en gitt kodet kanal. Koeffisientberegning kan selektivt deaktiveres for hver kodet kanal på sekvensnivå eller et annet nivå. Når koeffisientberegning anvendes for flerkanallyd, kan antallet segmenter i hver underramme bli signalisert per kodet kanal, per underramme i en kodet kanal eller på et annet nivå.
I noen tilfeller gir koeffisientberegning kodingsgevinst hovedsaklig for spektralkoeffisienter i lave og mellomliggende frekvenser. Følgelig kan koeffisientberegning bli deaktivert automatisk for spektralkoeffisienter ved høyere frekvenser. Dersom kodingsgevinsten fra koeffisientberegning hovedsaklig oppnås for spektralkoeffisienter i spesifikke frekvensområder, kan eventuelt koeffisientberegning selektivt aktiveres i disse frekvensområdene og deaktiveres andre steder.
C. Eksempler på fremgangsmåter for koeffisientberegning under koding
Figur 13 viser en fremgangsmåte (1300) for beregning av kvantiserte spektralkoeffisienter under koding. For eksempel kan en koder så som den vist i figur 11 utføre fremgangsmåten (1300). Alternativt kan en annen koder utføre fremgangsmåten (1300).
Innledningsvis beregner (1310) koderen en beregningsfaktor for et lydsegment. Generelt kan koderen beregne beregningsfaktoren ved anvendelse av en hvilken som helst av flere mulige metoder. For en førsteordens prediktor utfører koderen for eksempel et utfyllende søk i mulige beregningsfaktorer for å finne den endelige beregningsfaktoren (f.eks. den beregningsfaktoren som resulterer i færrest entropikodede bit). Eventuelt kan koderen beregne en korrelasjonskonstant forde kvantiserte spektralkoeffisientene i segmentet (nemlig E{x[i-1]x[i]}/E{x[i]x[i]}) for å avlede beregningsfaktoren. Eventuelt, for en høyere ordens prediktor, kan koderen anvende en lineær beregningskoeffisientalgoritme (som f.eks. omfatter beregning av autokorrelasjon og autokovarians), og stabilitet er ikke nødvendig. Eventuelt, dersom filterets orden og presisjon er fleksible, kan koderen beregne predikterens orden (første, andre, tredje, etc.) og beregningsfaktorverdier og presisjon for segmentet. Alternativt kan koderen anvende en annen mekanisme for å beregne beregningsfaktoren.
I mange tilfeller utviser ikke kvantiserte spektralkoeffisienter uniform korrelasjon over hele spekteret innenfor en underramme. For å bedre beregningen i slike tilfeller kan koderen endre beregningsfaktoren for hvert spektralsegment. For eksempel kan koderen dele opp hele spekteret for en underramme (eller annen blokk av spektralkoeffisienter) i flere segmenter med uniform størrelse og beregne en beregningsfaktor for hvert segment. Alternativt kan koderen beregne en beregningsfaktor for et segment som er hele spekteret i en underramme eller en annen blokk av spektralkoeffisienter, eller dele inn spekteret på annen måte.
Koderen signaliserer (1320) beregningsfaktorinformasjonen for segmentet. Foreksempel kan koderen kvantisere beregningsfaktoren og signalisere den i en bitstrøm. Beregningsfaktoren kan bli entropikodet. Koderen kan innlemme en av/på-bit som en del av beregningsfaktorinformasjon for selektivt å deaktivere koeffisientberegningen ved segment-vis dekoding. Tabell 2 viser bitrepresen-tasjoner for en beregningsfaktor i en utførelse der beregningsfaktorer i intervallet - 1 til 1 blir kvantisert med bruk av en uniform trinnstørrelse på 0,25.
Alternativt kan beregningsfaktorinformasjon bli signalisert med bruk av en annen representasjon.
Som angitt over vil ikke nødvendigvis alle segmenter ha nytte av spektralkoeffisientberegning. Beregningsfaktoren 0 deaktiverer beregning for et segment; prediktoren gis ingen vekt og trenger ikke beregnes. Med kodene listet i tabell 2 tjener det ene bit-symbolet som anvendes for å signalisere en beregningsfaktor lik 0 som en av/på-bit for det aktuelle segmentet. Signalisering av nullprediktoren med én enkelt bit sparer bit når nullprediktoren er den mest vanlige beregningsfaktoren.
Som angitt over kan høyere ordens prediktorer anvendes. For signalisering av beregningsfaktorinformasjon for en høyere ordens prediktor kan koderen for eksempel først sende prediktorens orden og presisjon, og så sende beregningsfaktorene én og én.
Koderen bestemmer (1330) så hvorvidt spektralkoeffisientberegning anvendes for segmentet. Hvis ja, beregner (predicts) (1340) koderen den ene eller de flere kvantiserte spektralkoeffisientene i segmentet og entropikoder (1350) deretter én eller flere prediktivt kodede koeffisienter. For eksempel kan koderen anvende forsinkelsesbufre og aritmetikk som vist i figur 11 for koeffisientberegningen. Alternativt kan koderen anvende en annen beregningsmekanisme.
(Beregning (1340) og påfølgende entropikoding (1350) kan bli gjort iterativt for noen typer entropikoding (1350), men blir oftere gjort porsjonsvis for vektoriell variabel lengde-koding, sekvensnivå-koding eller andre typer entropikoding.)
Dersom koderen dropper koeffisientberegningen (1340) bare entropikoder
(1350) koderen den ene eller de flere kvantiserte spektralkoeffisientene. Alternativt kan koderen følge den prediktive kodingen når beregningsfaktoren er 0.
Koderen bestemmer (1360) deretter om den skal fortsette med det neste segmentet eller avslutte fremgangsmåten (1300). Dersom koderen fortsetter, beregner (1310) koderen beregningsfaktoren for det neste segmentet, signaliserer
(1320) beregningsfaktorinformasjonen, osv.
Figur 13 viser segmentvis beregning og signalisering av en beregningsfaktor, der antallet segmenter er forbestemt og således ikke blir signalisert. Alternativt kan antallet segmenter som beregningsfaktorer beregnes og signaliseres for være fleksibelt. Dette vil typisk bedre beregningens nøyaktighet på bekostning av økt antall bit for å spesifisere segmentinformasjon. For en underramme eller annen blokk finner koderen en uniform eller ikke-uniform oppdeling (f.eks. som resul terer i færrest mulig bit), og det totale antallet segmenter og/eller annen segmenteringsinformasjon blir signalisert i bitstrømmen.
D. Eksempler på fremgangsmåter for koeffisientberegning under dekoding
Figur 14 viser en fremgangsmåte (1400) for beregning av kvantiserte spektralkoeffisienter under dekoding. For eksempel kan en dekoder så som den vist i figur 12 utføre fremgangsmåten (1400). Alternativt kan en annen dekoder utføre fremgangsmåten (1400).
Innledningsvis skaffer (1410) dekoderen beregningsfaktorinformasjon foret lydsegment. For eksempel kan dekoderen parse beregningsfaktorinformasjonen fra en bitstrøm og rekonstruere en beregningsfaktor. Dersom beregningsfaktoren er entropikodet, entropidekoder dekoderen beregningsfaktoren. Dersom koderen signaliserer en av/på-bit som del av beregningsfaktorinformasjonen, for selektivt å aktivere/deaktivere koeffisientberegning under dekoding, mottar dekoderen av/på-biten. Følgelig kan dekoderen endre beregningsfaktoren for hvert spektralsegment, der segmentet omfatter hele eller en del av hele spekteret i en underramme eller annen blokk avhengig av utførelse, og der beregningsfaktorinformasjonen signaliseres ved hjelp av en hvilken som helst av mekanismene beskrevet over i forbindelse med figur 13.
Dekoderen entropidekoder (1420) informasjon for én eller flere kvantiserte spektralkoeffisienter i segmentet. Når koeffisientberegning er anvendt under koding, er informasjonen ett eller flere beregningsrester (prediction residuals)
(differanseverdier) for den eller de kvantiserte spektralkoeffisientene. Når koeffisientberegning ikke er anvendt under koding (nullprediktor), er informasjonen de kvantiserte spektralkoeffisientene selv.
Dekoderen bestemmer (1430) så hvorvidt spektralkoeffisientberegning er anvendt for segmentet. I så fall beregner (1440) dekoderen den eller de kvantiserte spektralkoeffisientene i segmentet. For eksempel kan dekoderen anvende forsinkelsesbufre og aritmetikk som vist i figur 12 for koeffisientberegningen. Alternativt kan dekoderen anvende en annen beregningsmekanisme. (Entropide-kodingen (1420) og beregningen (1440) kan bli gjort iterativt for noen typer entropidekoding (1420), men blir oftere gjort porsjonsvis for vektoriell variabel lengde-dekoding, sekvensnivå-dekoding eller andre typer entropidekoding.)
I noen tilfeller dropper dekoderen koeffisientberegningen under dekoding, og bare entropidekoder (1420) den eller de kvantiserte spektralkoeffisientene. Alternativt kan dekoderen følge den prediktive dekodingsflyten når beregningsfaktoren er 0.
Dekoderen bestemmer (1450) så om den skal fortsette med neste segment eller avslutte fremgangsmåten (1400). Dersom dekoderen fortsetter, innhenter
(1410) dekoderen beregningsfaktorinformasjonen for det neste segmentet, osv.
I figur 14 er antallet segmenter forbestemt og blir ikke signalisert. Alternativt kan antallet segmenter og beregningsfaktorer være variabelt, og dekoderen parse segmenteringsinformasjon signalisert av koderen.
E. Resultater
Generelt øker beregning av kvantiserte spektralkoeffisienter effektiviteten i påfølgende entropikoding for visse typer og mønstre av innhold. For eksempel reduserer beregning redundans mellom nabokoeffisienter, og gjør med det p på-følgende vektoriell variabel lengde-koding og/eller sekvensnivå-koding mer effektiv. Til forskjell er formålet med MPEG TNS å styre tidsfordeling av forvrengning.
For å måle bedringen av kodingseffektiviteten som følge av beregning av kvantiserte spektralkoeffisienter ble en stor samling av testsanger kodet inn med bruk av koeffisientberegning. For en typisk innmatet sang hadde de fleste under-rammene i sangen ingen som helst nytte av bruken av koeffisientberegning i det kvantiserte domenet, men noen underrammer hadde imidlertid veldig stor nytte av denne beregningen. For eksempel ble antallet bit generert for noen underrammer redusert med så mye som 30% med beregning av kvantiserte spektralkoeffisienter. For noen sanger var den totale bitratereduksjon med koeffisientberegning 3% ved en nominell bitrate på 32 Kb/s, og den totale bitratereduksjonen var 3,75% ved 128 Kb/s. For hele samlingen av sanger var den totale bitratereduksjonen rundt 0,5%.
Mens mange typer beregning anvender en høyere ordens prediktor eller høyere presisjon for å oppnå kodingsgevinst, yter en førsteordens prediktor med forholdsvis lav presisjon (f.eks. 3 bit for hver kvantisert beregningsfaktorverdi) nokså godt på kvantiserte spektralkoeffisienter i de fleste tilfeller. De kvantiserte spektralkoeffisientene er vanligvis veldig små heltall, slik at en økning av be-regningsfaktorens presisjon vil ikke nødvendigvis endre den beregnede verdien eller gjøre den bedre - restverdien er et heltall for entropikoding, og det å beregne den beregnede verdien som et heltall er akseptabelt. Når det er en høyere ordens korrelasjon mellom spektralkoeffisienter, blir videre den høyere ordens korrelasjonen typisk fordreiet av kvantisering, slik at det ikke er behov for høyere ordens prediktorer.
I noen kodingsscenarier, når kvantiseringstrinnstørrelsene er små og kvantiserte spektralkoeffisienter har store amplituder, vil imidlertid høyere ordens prediktorer og/eller beregningsfaktorer med høyere presisjon kunne resultere i større bedringer av kodingseffektiviteten. Koeffisientberegningsmetodene og - verktøyene beskrevet over støtter høyere ordens prediktorer og høypresisjons beregningsfaktorer på en generell form.
IV. Innsetting eller omordning av spektralkoeffisienter
Som angitt tidligere anvender en lydkoder ofte transformasjonskoding etterfulgt av kvantisering og entropikoding for å bevirke komprimering. For noen lydsignalmønstre er det et periodisk mønster i spektralkoeffisienter etter frekvenstransformasjonen. Forskjellige fremgangsmåter og verktøy er beskrevet for å utnytte denne redundansen for å øke kodingseffektiviteten. Spesifikt vil i noen utførelsesformer en koder, så som en av de vist i figurene 2, 4 eller 6, flette inn eller omordne kvantiserte spektralkoeffisienter. En tilhørende dekoder (så som en av de vist i figurene 3, 5 eller 7) reverserer innflettingen eller omordningen av kvantiserte spektralkoeffisienter.
A. Eksempel på problemområde
Tradisjonelt antas det at det ikke er noen lineær korrelasjon mellom spektralkoeffisienter i en underramme eller et annet vindu. I stedet antas det at spektralkoeffisientene vanligvis har en høyere ordens statistisk relasjon, som kodere forsøke å utnytte under entropikoding.
Disse antagelsene er i noen tilfeller ikke korrekte. For visse typer og møn-stre av lydsignaler er for eksempel ikke spektralkoeffisienter for en underramme eller et annet vindu nødvendigvis ukorrelert. Dette er for eksempel tilfelle når et lydsignal er periodisk i tidsdomenet, og det periodiske signalets spektralkoeffisienter også er periodiske. I praksis utviser ofte sinusoidale signaler denne opp-førselen, i likhet med visse ikkestasjonære signaler.
Som en illustrasjon viser figur 15a et periodisk lydsignal i tidsdomenet, i form av amplituder for en tidsserie av sampler. Figur 15b viser tilhørende kvantiserte spektralkoeffisienter fra et DCT-trinn. I figur 15b er det sterke topper som er forskjellige fra null i spektralkoeffisientene rundt hver 57. spektralkoeffisient, og spektralkoeffisientene i andre posisjoner er hovedsaklig lik null eller har en liten verdi. Direkte entropikoding av spektralkoeffisienter med denne typen periodisk mønster ved anvendelse av metoder så som sekvensnivå-koding eller vektoriell variabel lengde-koding er ikke effektivt. Spesielt krever koding av en makskoeffi-sient med koeffisienter som er null eller har små verdier rundt den typisk mange bit i både sekvensnivå-koding og vektoriell variabel lengde-koding. Denne typen maksimumsmønster er imidlertid vanlig for periodiske signaler.
Som en oppsummering er det beskrevet flere problemer, som kan løses av fremgangsmåter og verktøy for omordning av koeffisienter. Slike koeffisientom-ordningsmetoder og -verktøy trenger imidlertid ikke anvendes for å løse et hvilket som helst av eller alle disse problemene.
B. Eksempler på arkitekturer for omordning av spektralkoeffisienter
I noen utførelsesformer bevirker en koder omordning av kvantiserte spektralkoeffisienter før entropikoding, og en tilhørende dekoder bevirker omordning av kvantiserte spektralkoeffisienter etter entropidekoding. For visse mønstre og typer av innhold, så som periodiske signaler som toner eller overtoner, reduserer omordningen redundansen i spektralkoeffisientene og bedrer med det effektiviteten i etterfølgende entropikoding. Under dekoding oppveier omordningen (etter entropidekoding) omordningen i koderen.
Figur 16 viser en koder med omordning av kvantiserte spektralkoeffisienter. For eksempel kan koderen være en modifisert versjon av koderen vist i figurene 2 eller 4, med trinn lagt til for å omordne spektralkoeffisienter. Alternativt kan koderen være en modifisert versjon av koderen vist i figur 6, med omordning som forbehandling før entropikoding.
Med henvisning til figur 16 mottar koderen kvantiserte spektralkoeffisienter
(1605) fra en kvantiseringsenhet. De kvantiserte spektralkoeffisientene blir behandlet av omordnings-/innflettingsmodulen (1680), som eventuelt omordner noen av eller alle spektralkoeffisientene (1605) og signaliserer omordningsinformasjon i bitstrømmen (1695).
Anta at de kvantiserte spektralkoeffisientene (1605) utviser et periodisk mønster som kan utnyttes for å øke entropikodingseffektiviteten. Før entropikoding blir de kvantiserte spektralkoeffisientene flettet inn eller omordnet basert på koeffi-sientenes periodisitet. For eksempel grupperer omordningen maksimumskoeffisienter med høy verdi sammen, noe som øker effektiviteten i etterfølgende vektoriell variabel lengde-koding for disse koeffisientene, og omordningen grupperer andre koeffisienter (f.eks. nullkoeffisienter og koeffisienter med lav verdi mellom topper) sammen, noe som øker effektiviteten i etterfølgende sekvensnivå-koding for disse koeffisientene.
For å flette inn spektralkoeffisienter setter koderen inn spektralkoeffisientene langs segmentet som utviser det periodiske mønsteret. Som et enkelt eksempel søker koderen gjennom koeffisientene i periodene gjennom flere pass, der den først velger de første koeffisientene i de respektive periodene og så velger de andre koeffisientene i de respektive periodene, og så velger de tredje koeffisientene i de respektive periodene, osv. Koderen fortsetter omordningen inntil alle koeffisienter er valgt. Anta at en sekvens av spektralkoeffisienter omfatter fire perioder A, B, C og D, og at hver periode inneholder fire spektralkoeffisienter. Før innfletting er sekvensen: og etter innfletting er sekvensen:
Følgelig har den omordnede sekvensen koeffisientene 0, 4, 8 og 12 først, deretter koeffisientene 1, 5, 9 og 13, osv. Dersom kun den første koeffisienten i hver periode har en betydelig verdi, har kun de første fire koeffisientene i sekvensen betydelige verdier etter innfletting, og alle de andre koeffisientene har en lav verdi eller er lik null. Vektoriell variabel lengde-koding komprimerer de første fire koeffisientene på en effektiv måte, og sekvensnivå-koding tar seg av resten på en effektiv måte.
Med henvisning tilbake til figur 16, etter en eventuell omordning (1680), entropikoder entropikoderen (1690) de (muligens omordnede) spektralkoeffisi entene. Koderen signaliserer den entropikodede informasjonen i bitstrømmen
(1695).
Figur 17 viser en tilhørende dekoder med omordning av kvantiserte spektralkoeffisienter. For eksempel kan dekoderen være en modifisert versjon av dekoderen vist i figurene 3 eller 5, med omordningstrinn lagt til. Alternativt kan dekoderen være en modifisert versjon av dekoderen vist i figur 7, med omordning som etterbehandling etter entropidekoding.
Med henvisning til figur 17 dekoder entropidekoderen (1790) informasjon for de kvantiserte spektralkoeffisientene fra bitstrømmen (1795). Ved anvendelse av omordningsinformasjon parset fra bitstrømmen (1795) kan omordnings-/innflettingsmodulen (1780) eventuelt omordne noen av eller alle de dekodede spektralkoeffisientene og med det frembringe kvantiserte spektralkoeffisienter
(1705) i opprinnelig rekkefølge. I hovedtrekk reverserer omordningen i dekoderen omordningen utført i koderen.
I eksempelet på sekvens vist over utføres enkel omordning basert på periodelengden. I noen tilfeller vil imidlertid en slik enkel omordning ikke være i stand til å ta hensyn til innledende, ikke-periodisk informasjon i et segment, ledende nuller eller andre awiksverdier i spesifikke perioder og/eller grupperinger av toppkoeffisienter først i perioder. Ytterligere omordningsinformasjon (beskrevet nedenfor) kan ta seg av dette. For å gi et enkelt numerisk eksempel, anta at et segment har 128 spektralkoeffisienter og omfatter et periodisk mønster for noen av koeffisientene. Det periodiske mønsteret har en gjennomsnittlig periodelengde på 10 koeffisienter, begynner ved den 19. koeffisienten og ender ved den 102 koeffisienten. I multipler av periodelengden, som et grovt estimat, er den første omordnede perioden den tredje perioden (koeffisientene 20-29) i segmentet, og den siste omordnede perioden er den tiende perioden (koeffisientene 90-99). Avviksverdien (offset) for den tredje perioden er -1 (som angir startposisjonen for perioden ved den 19. koeffisienten heller enn den 20. koeffisienten), og offset-verdienawiksverdien for den tiende perioden er 2. Offset-verdierAvviksverdier for andre perioder kan også bli signalisert som nødvendig. Dersom periodene som skal omordnes typisk begynner med flere maksimumskoeffisienter, kan en verdi bli signalisert for å angi antallet innledende koeffisienter for hver periode som skal for-bli ved siden av hverandre også etter omordning.
For adaptiv koeffisientomordning endrer koderen omordningen fra underramme til underramme eller på annen basis. For eksempel kan koderen dele inn en underramme i flere segmenter og beregne omordningsinformasjon for ett eller flere av segmentene, og signalisere segmenteringsinformasjon så vel som omordningsinformasjonen. Alternativt kan koderen anvende en annen mekanisme for segmentering og/eller signalering.
For noen innmatinger vil ikke koeffisientomordning øke ytelsen. I tillegg til å deaktivere koeffisientomordning segment for segment (beskrevet nedenfor), kan en koder og dekoder deaktivere koeffisientomordning for en hel sekvens (for eksempel med et sekvensnivå av/på-flagg) eller på et annet nivå.
Når koeffisientomordning anvendes for flerkanallyd, gjøres koeffisientomordningen for hver kodet kanal når kvantiseringen, etc. er nedstrøms flerkanalstransformasjonen under koding. Under dekoding gjøres også koeffisientomordningen for hver kodet kanal. For slik flerkanallyd blir omordningsinformasjon som signaliseres per segment, per underramme eller per periode typisk signalisert per segment, per underramme eller per periode for en gitt kodet kanal. Når koeffisientomordning anvendes for flerkanallyd, kan segmenteringsinformasjon og av/på-informasjon vedrørende omordning bli signalisert per kodet kanal, per underramme i en kodet kanal eller på et annet nivå.
I mange tilfeller gir koeffisientomordning kodingsgevinst hovedsaklig for spektralkoeffisienter ved lave og mellomliggende frekvenser. Koeffisientomordning kan derfor bli automatisk deaktivert for spektralkoeffisienter ved høyere frekvenser. Eventuelt, dersom kodingsgevinsten fra koeffisientomordning hovedsaklig er for spektralkoeffisienter i bestemte frekvensområder, kan koeffisientomordning bli selektivt aktivert for disse frekvensområdene og deaktivert andre steder.
Koeffisientberegningen beskrevet i kapittel III kan anvendes sammen med koeffisientomordning, men koeffisientberegning og koeffisientomordning anvendes ofte separat for forskjellige kategorier av innmatinger. Når de anvendes sammen, følger koeffisientberegning etter omordning under koding, og koeffisientomordningen følger etter beregning under dekoding, og koeffisientberegning anvendes på i hvert fall noen (f.eks. maksimumskoeffisienter) av de omordnede koeffisientene.
C. Eksempler på fremgangsmåter for omordning av koeffisienter under koding
Figur 18a viser en fremgangsmåte (1800) for omordning av kvantiserte spektralkoeffisienter under koding, og figurene 18b og 18c viser i detalj mulige måter å utføre bestemte trinn i fremgangsmåten (1800). For eksempel kan en koder så som den vist i figur 16 utføre fremgangsmåten (1800). Alternativt kan en annen koder utføre fremgangsmåten (1800).
Innledningsvis beregner (1810) koderen omordningsinformasjon for et segment. Foreksempel kan koderen beregne (1810) omordningsinformasjonen som vist i figur 18b. Alternativt kan koderen beregne annen og/eller ytterligere omordningsinformasjon.
Med henvisning til figur 18b identifiserer (1812) koderen et segment innenfor hvilke koeffisienter vil bli omordnet. For eksempel kan koderen finne et segment av spektralkoeffisientene som har et periodisk mønster. For å illustrere har i figur 15b kun omtrent de første 800 koeffisientene et periodisk mønster.
Koderen kan utelate noen perioder av segmentet fra omordning. Dersom for eksempel den første eller de to første periodene ikke likner de andre periodene, blir denne ene eller disse to periodene utelatt fra omordningsprosessen. I noen tilfeller omfatter den første delen av et segment ledende nuller eller ikke-periodiske koeffisienter. Følgelig holder koderen rede på den første perioden som skal omordnes i segmentet. Tilsvarende holder koderen også rede på den siste perioden som skal omordnes i segmentet.
Deretter identifiserer (1814) koderen lengden til perioden for segmentet. For eksempel kan koderen telle antallet topper i segmentet og dividere segment-lengden med antallet topper. Alternativt kan koderen utføre et utfyllende søk etter potensielle periodelengden Alternativt kan koderen søke etter potensielle periodelengder ved anvendelse av en binær forfiningsmetode (i motsetning til et utfyllende søk i parameterrommet). Alternativt kan koderen evaluere lengden til sekvenser av nullkoeffisienter/koeffisienter med lav verdi. Alternativt kan koderen anvende en annen mekanisme for å bestemme segmentets periodelengde. Periodelengden kan være begrenset til heltallsverdier, eller periodelengden kan også ha en verdi som ikke er et heltall. Det å tillate høyere presisjon enn heltall kan øke omordning-ens effektivitet betydelig, noe som bedrer entropikodingsgevinsten.
Koderen identifiserer (1816) også annen omordningsinformasjon, som kan omfatte periodejusteringer og "preroll"-verdier. For eksempel kan i en utførelse som tillater ikke heltalls periodelengder, koderen beregne annen omordningsinformasjon som følger.
Den innledende startposisjonen til periode / er rundt (round)(/<*>periodejengde), og den innledende sluttposisjonen til periode / er den innledende startposisjonen til den neste perioden. Koderen opprettholder en periodeposisjonstabell som lagrer startposisjonene og/eller sluttposisjonene til perioder for spo-ringsformål. Dette gjør også at koderen enkelt kan justere posisjonene til periodene i tabellen når den evaluerer forskjellige posisjoner.
Spesielt kan koderen flytte startposisjonen og/eller sluttposisjonen til en periode med én eller flere koeffisienter fra den innledende posisjonen for å bedre entropikodingen. Dersom det for eksempel er flere store, betydelige koeffisienter rett før den innledende startposisjonen til perioden, skifter koderen startposisjonen mot venstre med et antall koeffisienter, slik at disse store, betydelige koeffisientene befinner seg i begynnelsen av perioden i stedet for i enden av den foregående perioden. Alternativt kan koderen anvende en annen mekanisme for å bestemme justeringsverdier for start- og/eller sluttposisjonen til perioder som skal omordnes.
Koderen velger også en preroll-verdi. Med preroll menes koeffisienter i begynnelsen av en periode som ikke er omordnet i forhold til hverandre. Vanligvis er ikke toppen i begynnelsen av en periode bare én spektralkoeffisient. Det kan for eksempel være to eller tre koeffisienter med store verdier i begynnelsen av perioden, og disse koeffisientene er preroll-koeffisienter. Preroll-koeffisienter flettes inn på en spesiell måte, og behandles i praksis som en omordningsgruppe. Med andre ord følger preroll-koeffisienter etter hverandre også etter omordning av periodene i segmentet. Preroll-verdien angir antallet preroll-koeffisienter (f.eks. 1, 2, 3) for periodene som skal omordnes. I stedet for å beregne preroll for hvert segment, kan koderen alternativt beregne preroll for hver periode som skal omordnes.
Alternativt kan koderen anvende en annen mekanisme for å identifisere
(1816) den andre omordningsinformasjonen.
Med henvisning tilbake til figur 18a signaliserer (1830) koderen omordningsinformasjonen for segmentet i bitstrømmen. For eksempel kan koderen signalisere (1830) omordningsinformasjonen som vist i figur 18c, for omordningsinformasjon beregnet som vist i figur 18b. Alternativt kan koderen signalisere annen og/eller ytterligere omordningsinformasjon.
Med henvisning til figur 18c signaliserer (1832) koderen en av/på-bit for omordning. For eksempel kan koderen sammenlikne bit-kostnaden når koeffisientomordning anvendes med bitkostnaden når koeffisientomordning ikke anvendes. Koderen velges den modusen som gir best ytelse, og koderen anvender én enkelt bit for hvert segment for å angi hvilken modus som er valgt. Alternativt kan koderen signalisere av/på-informasjon med bruk av en annen mekanisme og/eller for en annen varighet enn et helt segment.
Når omordning anvendes ("ja"-grenen etter bestemmelsen 1834), signaliserer (1836) koderen periodelengden. Når ikke heltalls periodelengder tillates, kan periodelengden være representert med en heltallsdel og en restdel, som begge signaliseres i bitstrømmen. En heltalls periodelengde (eller heltallsdelen av en ikke heltalls periodelengde) signaliseres med en kode med fast lengde [FLC - Fixed Length Code] som omfatter log2(største_periode_lengde) bit. For eksempel kan den største periodelengden være 128, og heltalls periodelengder bli signalisert med log2(128) = 7 bit. En ikke heltallsdel kan bli signalisert med en tre-bits fastlengde-kode. Alternativt kan periodelengden bli signalisert med en annen mekanisme.
Koderen signaliserer (1838) også den første perioden som koeffisienter vil bli omordnet for. Dette vil gi en omtrentlig angivelse av startposisjonen for omordningen. Den første omordnede perioden kan være representert i multipler av periodelengden. Den første omordnede perioden kan for eksempel bli signalisert med en tre-bits fastlengde-kode, i hvilket tilfelle den første omordnede perioden kan være hvilken som helst periode fra den første perioden til den åttende perioden i segmentet. Alternativt kan den første omordnede perioden bli signalisert med en annen mekanisme.
Koderen signaliserer (1840) også den siste perioden som koeffisienter vil bli omordnet for. Den siste omordnede perioden kan være representert i multipler av periodelengden. Den siste omordnede perioden kan for eksempel bli signalisert som en fastlengde-kode med log2(maksimalt_antall_perioder) bit. Koderen regner ut det maksimale antallet perioder fra antallet koeffisienter i segmentet og periodelengden. Alternativt kan den siste omordnede perioden bli signalisert med en annen mekanisme.
Koderen signaliserer (1842) posisjonsjusteringer. For perioden som koeffisienter vil bli omordnet for signaliserer koderen informasjon som angir awiksverdier i forhold til de opprinnelige start- og/eller sluttposisjonene. For eksempel kan én justeringsverdi bli signalisert for hver periode, og justeringsverdien bli signalisert som et antall koeffisienter. En slik justeringsverdi kan bli signalisert som en fastlengde-kode med log2(offset_intervall) bit. Dersom awiksintervallet er 16, blir således justeringsverdien signalisert med log2(16) = 4 bit for et justerings-intervall på -8 ... 7 koeffisienter. Alternativt kan justeringsverdien bli signalisert med en annen mekanisme (f.eks. signalisering av justeringer i forhold til tidligere justeringsverdier (ikke som absolutte verdier), eller signalisering av én justering for alle perioder).
Koderen signaliserer (1844) også en preroll-verdi. En preroll-verdi på et antall koeffisienter blir signalisert som en fastlengde-kode med log2(største_preroll + 1) bit. For eksempel kan største preroll-lengde være 3 (for en preroll lik 0,1, 2 eller 3), og preroll-verdien bli signalisert med log2(4) = 2 bit. Alternativt kan preroll-verdiene bli signalisert med en annen mekanisme.
Med henvisning tilbake til figur 18a bestemmer (1860) koderen om koeffisientomordning anvendes. Hvis ikke, bare entropikoder (1880) koderen de kvantiserte spektralkoeffisientene i segmentet ved anvendelse av vektoriell variabel lengde-koding, sekvensnivå-koding, eller en annen entropikoding. Dersom derimot koeffisientomordning anvendes, omordner (1870) koderen i hvert fall noen av koeffisientene i segmentet, og entropikoder (1880) koeffisientene etter (selektiv) omordning ved anvendelse av vektoriell variabel lengde-koding, sekvensnivå-koding eller annen entropikoding. For eksempel kan koderen utføre omordningen
(1870) som følger, for omordningsinformasjon beregnet som vist i figur 18b og signalisert som vist i figur 18c.
I hovedtrekk omordner koderen koeffisienter og mater ut koeffisientene til et buffer for nye koeffisienter (eller direkte til en entropikoder slik at omordningsprosessen ikke anvender ekstra ressurser for bufring). Koderen sjekker en tabell
(beskrevet over) som angir startposisjonene og/eller sluttposisjonene til perioder som koeffisienter skal omordnes for. I alminnelighet gjennomløper koderen fra den første slike perioden til den siste slike perioden.
For en periode finner koderen den første koeffisienten som ikke er behandlet for omordning. Dersom koeffisienten er innenfor et preroll-område, mater koderen ut koeffisienten og den ene eller de flere etterfølgende preroll-koeffisientene i deres opprinnelige rekkefølge. Ellers mater koderen bare ut den første koeffisienten som enda ikke er behandlet. Koderen merker så eventuelle behand-lede koeffisienter i perioden som behandlet. Koderen fortsetter med den første ubehandlede koeffisienten for den neste perioden.
Dersom det for en gitt periode ikke er noen ubehandlede koeffisienter, går koderen videre til den neste perioden.
Etter at koderen har sjekket alle perioder i én iterasjon fra den første til den siste, begynner koderen på nytt fra den første perioden. Til slutt har koderen behandlet alle koeffisientene i periodene som skal omordnes. Når koeffisienter i segmentet ikke er omordnet, kan koderen kopiere disse koeffisientene direkte til bufferet for nye koeffisienter (eller sende dem direkte til entropikoderen på passende tidspunkter).
Alternativt kan koderen utføre omordningen (1870) ved anvendelse av en annen mekanisme. Eventuelt kan koderen utføre omordningen (1870) i henhold til annen og/eller ytterligere omordningsinformasjon.
Koderen bestemmer (1890) så om den skal fortsette med det neste segmentet eller avslutte fremgangsmåten (1800). Dersom koderen fortsetter, beregner (1810) koderen omordningsinformasjonen for det neste segmentet, signaliserer (1820) omordningsinformasjonen, osv.
Selv om figurene 18a til 18c viser trinnene med beregning av omordningsinformasjon som separate og utført før trinnene med signalisering av omordningsinformasjon, kan disse trinnene alternativt bli flettet med hverandre eller andre trinn.
D. Eksempler på fremgangsmåter for omordning av koeffisienter under dekoding
Figur 19a viser en fremgangsmåte (1900) for omordning av kvantiserte spektralkoeffisienter under dekoding, og figurene 19b og 19c illustrerer i detalj mulige måter å utføre bestemte trinn i fremgangsmåten (1900). For eksempel kan en dekoder så som den vist i figur 12 utføre fremgangsmåten (1900). Alternativt kan en annen dekoder utføre fremgangsmåten (1900).
Innledningsvis skaffer (1910) dekoderen omordningsinformasjon for et segment. Dekoderen leser typisk metainformasjon fra en bitstrøm for bruk i flettingen/omordningen. Foreksempel kan dekoderen skaffe (1910) omordningsinformasjon som vist i figur 19b, for omordningsinformasjon signalisert som vist i figur 18c. Alternativt kan dekoderen skaffe annen og/eller ytterligere omordningsinformasjon.
Med henvisning til figur 19b parser (1912) dekoderen en av/på-bit for omordning fra bitstrømmen. For eksempel leser dekoderen én enkelt bit fra bit-strømmen, der den ene bi-verdien angir hvorvidt en modus med koeffisientomordning eller en modus uten koeffisientomordning skal anvendes. Alternativt kan av/på-informasjonen blir signalisert og parset ved anvendelse av en annen mekanisme og/eller gjelde for en annen varighet enn et helt segment.
Når koeffisientomordning er anvendt ("ja"-grenen fra bestemmelsen 1914), parser (1916) dekoderen en periodelengde fra bitstrømmen. Når ikke heltalls
periodelengder er tillatt, kan periodelengden være representert med en heltallsdel og en restdel, som begge parses fra bitstrømmen. En heltalls periodelengde (eller heltallsdelen av en ikke heltalls periodelengde) er representert med en fastlengde-kode på log2(største_periode_lengde) bit. Alternativt kan periodelengden bli signalisert med en annen mekanisme.
Dekoderen parser (1918) også den første perioden for hvilken koeffisienter vil være omordnet fra bitstrømmen, som gir en omtrentlig angivelse av startposisjonen for omordningen. Den første omordnede perioden kan være representert i multipler av periodelengden. Den første omordnede perioden kan for eksempel bli signalisert med en tre-bits fastlengde-kode. Alternativt kan den første omordnede perioden bli signalisert og parset med en annen mekanisme.
Dekoderen parser (1940) også den siste perioden for hvilken koeffisienter vil være omordnet fra bitstrømmen. Den siste omordnede perioden kan være representert i multipler av periodelengden. Den siste omordnede perioden kan for eksempel bli signalisert som en fastlengde-kode på log2(maksimalt_antall_perioder) bit, der dekoderen avleder det maksimale antallet perioder fra antallet koeffisienter i segmentet og periodelengden. Alternativt kan den siste omordnede perioden bli signalisert og parset med en annen mekanisme.
Med periodelengden, den første omordnede perioden og den siste omordnede perioden har dekoderen nok informasjon til å fylle en periodeposisjonstabell, som lagrer startposisjonen og/eller sluttposisjonen til perioder for sporings-formål. Følgelig kan dekoderen reprodusere periodeposisjonstabellen anvendt av en tilhørende koder.
Dekoderen parser(1922) posisjonsjusteringerfra bitstrømmen. Forde periodene som koeffisienter vil være omordnet for, parser dekoderen informasjon som angir avviksverdier i forhold til den innledende start- og/eller sluttposisjonen. For eksempel kan én justeringsverdi bli parset for hver periode, og justeringsverdien være representert som et antall koeffisienter. En slik justeringsverdi kan være representert som en fastlengde-kode på log2(offset_intervall) bit. Alternativt kan justeringsverdien bli signalisert og parset med en annen mekanisme.
Med posisjonsjusteringsinformasjonen har dekoderen nok informasjon til å justere startposisjonene og/eller sluttposisjonene for periodene i periodeposisjonstabellen.
Dekoderen parser (1924) også en preroll-verdi. En preroll-verdi på et antall koeffisienter er representert som en fastlengde-kode på log2(største_preroll + 1) bit. Alternativt kan preroll-verdien bli signalisert og parset med en annen mekanisme.
Med henvisning tilbake til figur 19a entropidekoder (1930) dekoderen koeffisientinformasjon fra bitstrømmen ved anvendelse av vektoriell variabel
lengde-dekoding, sekvensnivå-dekoding eller en annen entropidekoding. Når omordning ikke ble anvendt ved koding, entropidekoder (1930) dekoderen kvantiserte spektralkoeffisienter i segmentet i deres opprinnelige rekkefølge. Dersom derimot omordning ble anvendt ved koding, entropidekoder (1930) dekoderen kvantiserte spektralkoeffisienter etter omordning.
Dekoderen bestemmer (1960) også hvorvidt koeffisientomordning skal anvendes under dekoding. Dersom koeffisientomordning skal anvendes under dekoding, omordner (1970) dekoderen i hvert fall noen av koeffisientene i segmentet etter entropidekoding. Foreksempel kan dekoderen utføre omordningen (1970) som følger, for omordningsinformasjon frembrakt som vist i figur 19b.
Dekoderen genererer (1972) en periodeposisjonstabell fra omordningsinformasjon for segmentet (for eksempel periodelengde, første omordnede periode, siste omordnede periode), og anvender (1974) periodejusteringer i tabellen. Tabellen lagrer startposisjonen og/eller sluttposisjonen til perioder for bruk i omordningen. Alternativt kan dekoderen droppe tabellegenereringsprosessen eller anvende en annen tabellstruktur.
Dekoderen omordner (1976) så koeffisienter ved anvendelse av periodeposisjonstabellen og preroll-verdien. I hovedtrekk omordner dekoderen koeffisienter og mater ut koeffisientene til et buffer for nye koeffisienter, og reverserer med det omordningen utført under koding. (Alternativt kan dekoderen omordne utmatingen fra entropidekoderen direkte slik at ingen ytterligere ressurser anvendes for bufring av koeffisienter.) Dekoderen anvender periodeposisjonstabellen (beskrevet over), som angir startposisjonen og/eller sluttposisjonen for perioder som koeffisienter skal omordnes for. I alminnelighet behandler dekoderen de entropidekodede spektralkoeffisientene i rekkefølgen som frem-kommer fra entropidekoding. Foreksempel legger dekoderen den første ubehandlede koeffisienten og eventuelle ubehandlede koeffisienter i preroll-området for den første omordnede perioden, inn i posisjoner for den første omordnede perioden. Deretter legger dekoderen den neste ubehandlede koeffisienten og eventuelle ubehandlede koeffisienter i preroll-området for den andre omordnede perioden inn i posisjoner for den andre omordnede perioden. Dekoderen gjentar denne preroll-behandlingen for hver av periodene til den siste omordnede perioden. Deretter legger dekoderen iterativt suksessive ubehandlede koeffisienter inn i posisjoner for den første, andre, tredje, etc. omordnede perioden, og dropper en omordnet periode når denne omordnede perioden er fylt. Til slutt behandler dekoderen alle koeffisientene i periodene som skal omordnes. Når koeffisienter i segmentet ikke er omordnet, kan dekoderen kopiere disse koeffisientene direkte til tilhørende posisjoner i bufferetfor nye koeffisienter.
Alternativt kan dekoderen utføre omordningen (1970) ved anvendelse av en annen mekanisme. For eksempel, ved anvendelse av periodeposisjonstabellen og preroll-verdien, løper dekoderen gjennom de entropidekodede koeffisientene og velger og mater ut spektralkoeffisienter for den første omordnede perioden. Deretter løper koderen gjennom de entropidekodede koeffisientene og velger og mater ut spektralkoeffisienter for den andre omordnede perioden, osv. til og med den siste omordnede perioden. Alternativt kan dekoderen utføre omordningen
(1970) i henhold til annen og/eller ytterligere omordningsinformasjon.
Dekoderen bestemmer (1990) så hvorvidt den skal fortsette med det neste segmentet eller avslutte fremgangsmåten (1900). Dersom dekoderen fortsetter, innhenter (1910) dekoderen omordningsinformasjonen for det neste segmentet, osv.
Selv om figurene 19a til 19c viser trinnene med å fremskaffe omordningsinformasjon som separate og utført før andre omordningstrinn, kan disse trinnene alternativt bli flettet med hverandre eller andre trinn.
E. Resultater
I alminnelighet vil omordning av kvantiserte spektralkoeffisienter bedre effektiviteten i etterfølgende entropikoding for periodiske signaler. For eksempel kan omordningen lokalt gruppere koeffisienter med like verdier, og med det gjøre påfølgende vektoriell variabel lengde-koding og/eller sekvensnivå-koding mer effektiv.
Omordningen beskrevet over er forholdsvis enkel å implementere og har lav beregningsmessig kompleksitet. Når det gjelder minnebruk, er i noen utførelser den eneste ekstra minneplassen nødvendig for omordningstrinn en periodeposisjonstabell, som er veldig liten.
Figur 20 viser spektralkoeffisientene i figur 15b etter koeffisientomordning. Periodelengden er 56,7. Omordningen starter ved posisjon 114 (der den tredje perioden i segmentet begynner), og omordningen ender omkring posisjon 1021 (som avslutter den attende perioden i segmentet). Preroll-verdien er tre for perioder i segmentet. Etter omordning er koeffisientene inntil omtrent posisjon 250 innrettet for vektoriell variabel lengde-koding, og koeffisientene etter dette er innrettet for sekvensnivå-koding.
Kodingsgevinsten som følge av omordningen avhenger av signalets periodisitet. Dersom et signal er periodisk i tiden, oppnås ofte betydelig gevinst ved å omordne spektralkoeffisienter. Ellers er kodingsgevinsten typisk mindre betydelig el ler fraværende. Figur 21 viser kodingsgevinsten som følge av omordning per underramme i ett eksempel på lydfil med et periodisk signal. Den største gevinsten for en underramme er over 40%, og den gjennomsnittlige gevinsten for filen er omtrent 11%.
V. Selektiv bruk av flere entropimodeller ved adaptiv koding/dekoding
I noen utførelsesformer utfører en koder, så som en av de vist i figurene 2, 4 eller 6, adaptiv entropikoding der koderen selektivt anvender flere entropimodeller. En tilhørende dekoder (så som en av de vist i figurene 3, 5 eller 7) utfører adaptiv entropidekoding der dekoderen selektivt anvender flere entropimodeller. Fremgangsmåtene og verktøyene for selektiv bruk av flere entropimodeller kan anvendes i forskjellige scenarioer der symbolverdier har flere sannsynlighetsfordelinger, omfattende tapsfri og tapsbeheftet komprimering og dekomprimering av lyd, video, bilder eller hvilke som helst andre data.
A. Eksempel på problemområde
Adaptiv koding av symboler anvendes ofte for å bedre effektiviteten i entropikoding når sannsynlighetsfordelingen for symbolverdier varierer. Adaptiv aritmetisk koding kan anvende forskjellige eller endrende sannsynlighetsfordelinger direkte. For adaptiv variabel lengde-koding (så som adaptiv Huffman-koding) er forskjellige entropimodeller for symbolverdier innlemmet i forskjellige eller endrende VLC-tabeller.
I bakover-tilpasning (backward adaptation) tilpasser koding/dekoding basert på symboler som allerede er behandlet. I forover-tilpasning (forward adaptation) blir informasjon som beskriver tilpasningen signalisert eksplisitt. For eksempel blir en tabellskiftkode signalisert for å angi en VLC-tabell som skal anvendes for en sekvens av symboler.
Tilpasning kan oppnås ved dynamisk å variere en sannsynlighetsfordeling (eller de tilhørende VLC-tabellene anvendt for variabel lengde-koding/-dekoding). Alternativt kan tilpasning oppnås ved å velge fra et fast sett av forskjellige, forhåndstrente sannsynlighetsfordelinger (eller tilsvarende VLC-tabeller).
Én ulempe med å anvende flere forskjellige fordelinger/VLC-tabeller er minneplassen som kreves for koderen og dekoderen, siden den nødvendige minneplassen vokser proporsjonalt med antallet fordelinger/VLC-tabeller. Dersom det for eksempel anvendes 16 VLC-tabeller, anvendes omtrent 16 ganger så mye minne for VLC-tabeller i koderen og dekoderen i forhold til om det anvendes én enkelt VLC-tabell.
Som en oppsummering er det beskrevet et problem som fremgangsmåter og verktøy for selektiv bruk av flere entropimodeller kan løse. Disse fremgangsmåtene og verktøyene er imidlertid ikke nødvendige for å løse dette problemet.
B. Selektiv bruk av flere entropimodeller
Selektiv bruk av flere entropimodeller kan i betydelig grad redusere ressursbruken forflere fordelinger/VLC-tabeller. Samtidig kan mye av kodingsgevinsten ved å anvende flere entropimodeller likevel oppnås. I forskjellige vanlige scenarier omfatter selektiv bruk av flere entropimodeller det å velge mellom forskjellige fordelinger/VLC-tabeller for noen, men ikke alle symbolverdiene. Mer generelt omfatter det å velge mellom forskjellige fordelinger/VLC-tabeller som er hierarkisk organisert for å muliggjøre mer tilpasning for noen symbolverdier og mindre tilpasning for andre symbolverdier.
Anta at et sett av symbolverdier omfatter noen mer sannsynlige symbolverdier og noen mindre sannsynlige symbolverdier, i henhold til en test. For å redusere minnebruken forfordelinger/tabeller anvender en koder og dekoder flere fordelinger/tabeller for de mer sannsynlige symbolverdiene, men de mindre sannsynlige symbolverdiene er urepresentert i flere fordelinger/tabeller. Dette reduserer minnebruken for de flere fordelingene/tabellene på bekostning av en ubetydelig reduksjon av kodingsgevinsten. (I mange tilfeller står en forholdsvis liten andel av symbolverdiene for en stor prosentdel av en sannsynlighetsfordeling.) Spesielt, dersom entropimodellen betraktes som betinget for en gitt tilpasningstilstand, er det en annen fordeling for de mer sannsynlige symbolverdiene i de respektiv forskjellige tilstandene. Den relative fordelingen for de mindre sannsynlige symbolverdiene er imidlertid identisk i de forskjellige tilstandene.
For et sett av 256 symbolverdier, dersom 32 av symbolverdiene anvendes mesteparten av tiden, kan en koder og dekoder skifte mellom 6 VLC-tabeller for de 32 symbolverdiene, der hver av de 6 VLC-tabellene også omfatter en utgangskode (escape kode) for å skifte til én enkelt VLC-tabell for de andre 224 symbolverdiene.
Anta eventuelt at i settet av 256 symbolverdier, 7 av symbolverdiene anvendes de mesteparten av tiden, mens 21 av symbolverdiene anvendes noen ganger og resten av symbolene anvendes sjelden. Koderen og dekoderen kan skifte mellom 11 VLC-tabeller for de 7 mest vanlige symbolverdiene, der hver av de 11 VLC-tabellene omfatter en utgangskode for å skifte til 2 VLC-tabeller for de 21 nest mest vanlige symbolverdiene. (Utgangskoden kan være etterfulgt av tabellvalginformasjon forforover-tilpasning.) Hver av de 2 VLC-tabellene for de 21 symbolverdiene omfatter en utgangskode for å skifte til én VLC-tabell for resten av symbolverdiene.
Figur 22 viser et eksempel som er mer komplisert med hensyn til hierarkisk organisering av entropimodellene/tilstandene (f.eks. fordelinger, VLC-tabeller). En koder og en dekoder anvender 8 entropimodeller for symbolverdiene B, F, H, og /, der hver av de 8 entropimodellene også innlemmer to skiftepunkter. Dersom for eksempel koderen og dekoderen anvender sannsynlighetsfordelinger for entropimodellene, er et skiftepunkt en spesiell "skifte av sannsynlighetsverdi" i en fordeling. Dersom koderen og dekoderen anvender VLC-tabeller for entropimodellene, er et skiftepunkt en utgangskode eller annen spesialisert VLC-kode. I de 8 entropimodellene er det første skiftepunktet for å skifte til entropimodeller for symbolverdiene A og C, og det andre skiftepunktet er for å skifte til entropimodeller for symbolverdiene D, E, G, J og K.
Koderen og dekoderen anvender 3 entropimodeller for symbolverdiene A og C. Koderen og dekoderen anvender 4 entropimodeller for symbolverdiene E, J og K, der hver av de 4 entropimodellene også innlemmer et skiftepunkt. Dette skiftepunktet er for å skifte til en entropimodell for symbolverdiene D og G.
I figur 22 har en delmengde av symbolverdier færre tilhørende entropimodeller enn dens overordnede mengde. Dette er forenlig med mange vanlige scenarier der mer tilpasning tillates for mer sannsynlige symbolverdier og mindre tilpasning tillates for mindre sannsynlige symbolverdier. Alternativt kan imidlertid en delmengde ha flere tilhørende entropimodeller enn sin overordnede mengde.
Valg mellom flere entropimodeller kan skje gjennom en bakoveradaptiv mekanisme eller en foroveradaptiv mekanisme. De flere entropimodellene kan selv være faste og forhåndstrente, eller de kan endre seg dynamisk. Entropimodellene kan anvendes i forskjellige metoder for entropikoding og -dekoding. Aritmetisk koding og dekoding kan selektivt anvende flere sannsynlighetsfordelinger for noen av, men ikke alle symbolverdiene. Eventuelt kan variabel lengde-koding og -dekoding anvende flere VLC-tabeller for noen av, men ikke alle symbolverdiene.
1. Tilpasning av fordelinger for tilstander
For at en koder eller dekoder selektivt skal kunne anvende flere entropimodeller for noen symbolverdier (men ikke alle symbolverdier) blir de flere entropimodellene tilpasset følgelig. Den følgende analysen illustrerer tilpasninger til absolutte sannsynlighetsfordelinger for et sett av tilstander, under henvisning til et enkelt eksempel.
Anta at det er N tilstander angitt som S( j) = S(0), S(1),..., S(A/-1) for å tilpasse en fordeling av M symbolverdier, angitt som X( i) = X( 0), X(1), ..., X(/W-1).
Ps angir sannsynlighetsfordelingene for tilstandene, idet Ps^ er sannsynligheten for at tilstanden er S( j). Ps( j), x an9'r sannsynlighetsfordelingen til symbolverdiene for tilstanden S( j), idet Ps( j) rx( i) er sannsynligheten for at et symbol har verdien X( i) i tilstanden S( j). Av de M symbolverdiene er L symbolverdier angitt som mer sannsynlige, og M - L symbolverdier er angitt som mindre sannsynlige. Settet av de L mer sannsynlige symbolverdiene er settet Q, og settet av de M - L mindre sannsynlige symbolverdier er settet R.
Angivelsen av mer sannsynlige kontra mindre sannsynlige symbolverdier er utførelsesavhengig og fleksibel, selv om en egnet angivelse gir en mer effektiv koding. Det er ikke nødvendig at Ps( j\ x( q) >pS( j), x( r) for alle tilstander S( j), der X( q) angir en symbolverdi i Q og X(r) angir en symbolverdi i R. Med andre ord er det ikke nødvendig at en gitt "mer sannsynlig" symbolverdi har høyere sannsynlighet enn et gitt "mindre sannsynlig" symbol i enhver tilstand.
En revidert fordeling P' s( j), x for tilstanden S( j) tilnærmer den faktiske symbolverdifordelingen Ps( j\ x for tilstanden S( j). P' s( j\ x tilnærmer Ps( j\ x slik at: (1) den betingede fordelingen P' s( j), xq), r for symbolverdier x ( i) i settet R er den samme for alle S( j), men (2) fordelingen for symbolverdier i settet Q endrer seg ikke for en hvilken som helst gitt S( j) ( P' s( j) X(. 0<=>pS( j), x( i) for symbolverdier X( i) i settet Q).
Anta at N = 3 og M = 5. Settet av tilstander er N = { S( p), SQ), S( 2)} t og settet av symbolverdier er M = { X( 0), X(\), X( 2), X( 3), X( 4)}.
Anta videre at betingede sannsynligheter er pS( q^ = 0,5, PS(^ = 0,2, Ps^ 2) =
0,3, som vist i tabell 3. Følgelig er sannsynligheten for å være i tilstand 0 lik 50%, sannsynligheten for å være i tilstand 1 er lik 20% og sannsynligheten for å være i tilstand 2 er 30%.
Tabell 4 viser de absolutte sannsynlighetsfordelingene Ps( j) x( 0 for symbolverdiene i hver av tilstandene.
Som en vilkårlig terskel anta at symbolverdien x ( i) hører til det mer sannsynlige settet Q dersom, for en hvilken som helst av tilstandene, sannsynligheten for symbolverdien i tilstanden multiplisert med sannsynligheten for å være i denne tilstanden er større enn 0,1. Det vil si at dersom Ps( j\ x( i)<*>pS( j)<>>°>1 for en nvil~
ken som helst S( j) for en gitt x ( i), symbolverdien x ( i) er i settet Q. Ellers er symbolverdien x ( i) i settet R. Forfordelingene i tabell 4 er L = 2, Q = { X( l), X( 3)} og R = { X( 0), X( 2), X( 4)}. (Merk at selv om ^(2),x(0)<>>pS( 2), xo) ><sy>mbolverdien X( l) er angitt som en mer sannsynlig symbolverdi mens symbolverdien X( 0) er angitt som en mindre sannsynlig symbolverdi. I tilstanden ^(l) har X( l) veldig stor sannsynlighet.) Alternativt kan terskelverdien og/eller testen være forskjellig. For eksempel kan terskelen settes i forhold til prosentandel av symbolverdier, eller testen kan kreve høy sannsynlighet i flere forskjellige tilstander. For en gitt begrensning på størrelsen til settene Q og R kan en optimal oppdeling generelt finnes ved å betrakte den relative entropien mellom de absolutte og tilnærmede fordelingene. (Generelt anvendes her betegnelsen "optimal" for å beskrive en løsning
som tilfredsstiller et sett av kriterier bedre enn andre løsninger i henhold til en parametrisering eller modellering, og som kan, men ikke trenger være optimal i absolutt forstand avhengig av omstendighetene, og betegnelsen "optimere" anvendes for å angi prosessen med å finne en slik løsning.)
I tilnærmingen er P' s( j) XQ) = pS( j) XQ) for symbolverdier X( i)\ settet Q.
Fordelingen for en tilstand S( j) er uendret for symbolverdier i settet Q. For symbolverdier X( i) i settet R imidlertid, er den tilnærmede fordelingen forskjellig. Innledningsvis beregnes de absolutte betingede fordelingene Ps( j)x<q>) R for symbolverdiene i settet R. For symbolverdiene i settet R er de absolutte betingede fordelingene (etter fjerning av bidragene fra symbolverdiene X( l), X( 3) i settet Q og vekting kun med bidragene fra X( 0), X( 2), X( 4)) listet i tabell 5. Ps( o), X( 0), r er 0,09 / (0,09 + 0,04 + 0,07) = 0,45, og PS( oxx( i\ R er °.°4 / (°.°9 + °.°4 + °-07) =
0,2.
Den tilnærmede betingede fordelingen P' su\ x( i), R kan da beregnes som:
Nærmere bestemt er den tilnærmede betingede fordelingen når man er i settet R det vektede gjennomsnittet (med Ps( j)) av den absolutte betingede fordelingen Ps( j), x( i), R over de N tilstandene. For verdiene i tabellene 4 og 5 er den tilnærmede betingede fordelingen P' s( j\ x( 0, R'settet R vist i tabell 6. ForX(0)
erP' su\ x( o\ R lik (°-5<*>°-45) + (°-2<*>°-55) + (°-3<*>°-55) = °-5-
Den endelige tilnærmede fordelingen for hver tilstand S( j) er.
For symbolverdier i settet Q anvendes således den absolutte sann-synlighetsverdien i tilstand S( j) i den tilnærmede fordelingen for tilstand S( j). For en symbolverdi i settet R blir den tilnærmede betingede sannsynligheten P' s( j), x( o, R for symbolverdien multiplisert med summen av de absolutte sannsynlighetene for symbolverdiene i settet R for tilstanden S( j). For symbolverdien X( 0) og tilstanden S( 0) er P' S( 0), x( 0)lik °>5<*>(°>09 + °>04 + °>07) = °>1 ■ For de andre verdiene i tabellene 4 og 6 er de endelige tilnærmede sannsynlighetsfordelingene for tilstandene S( j) listet i tabell 7.
tilstandene
Dersom en sammenlikner tabell 7 med tabell 4 er fordelingene uendret for de mer sannsynlige symbolverdiene X( l), X( 3), og fordelingene er endret for de mindre sannsynlige symbolverdiene X( 0), X( 2), X( 4) for å påtvinge betingelsen med at den relative sannsynligheten for symbolverdier innenfor settet R er den samme fra tilstand til tilstand. For eksempel er hver tilstand i tabell 7 er X( 0) dobbelt så sannsynlig som X( 2), og X( 0) er dobbelt så sannsynlig som X{ 4).
I det generelle tilfellet, med utgangspunkt i N tilstander for M symbolverdier, kan antallet tilstander for noen av symbolverdiene (settet R) reduseres ved å gruppere de N betingede fordelingene for settet R i P fordelinger, der P < N. Denne prosessen kan så gjentas for en annen delmengde av de M symbolverdiene. Den kan også bli gjentatt rekursivt på de P grupperte fordelingene i settet R, der settet R har |R| symbolverdier (|R| representerer kardinaliteten til eller antallet elementer i settet R) med P tilstander. Dette legger begrensninger på de N tilstandene (eller fordelingene, eller gruppene) for de M symbolverdiene. Disse begrensningene kan anvendes etter at de N tilstandene for M symbolverdier er fastsatt, eller kan for bedre optimering bli anvendt under selve treningsfasen. Treningen vil begynne med et stort antall fordelinger for de M symbolverdiene, og vil resultere i N grupperte fordelinger slik at de oppfyller tilleggsbegrensningene på betingede fordelinger.
2. Eksempler på VLC-tabeller
De tilnærmede fordelingene for symbolverdier i forskjellige tilstander kan anvendes i forskjellige typer adaptiv entropikoding og -dekoding, omfattende Huffman-koding og -dekoding og annen koding og dekoding med variabel lengde.
En Huffman-kodetabell kan betraktes som et tre, der hvert blad på treet svarer til en symbolverdi. Den venstre grenen av treet er forbundet med en binær-verdi (f.eks. 0), og den høyre grenen av treet er forbundet med den motsatte bi-nærverdien (f.eks. 1). Trærne vist i figur 23 svarer til de tilnærmede fordelingene vist i tabell 7.
I figur 23 er de stiplede delene av de respektive trærne for symbolverdiene i settet R, og de andre delene av trærne er for symbolverdiene i settet Q. I de tilnærmede fordelingene vist i tabell 7 er den betingede fordelingen til symbolverdiene i settet R den samme uavhengig av tilstand, slik at hvert av trærne i figur 23 kan ha en felles og identisk gren for symbolverdiene i settet R. Plasseringen av den felles, identiske grenen kan være hvor som helst i et tre, generelt avhengig av hvordan de aggregerte sannsynlighetene for symbolverdiene representert i den felles grenen er sammenliknet med sannsynlighetene for andre symbolverdier for treet. Følgelig vil den felles grenen kunne være høyere eller lavere fra tre til tre.
For ethvert gitt tre/enhver gitt tilstand i figur 23 har VLC-kodene for alle symbolverdiene i settet R samme innledningsverdi som angitt av grenens plas-sering i treet. Uavhengig av tilstanden i figur 23 har hver symbolverdi i settet R videre en felles sluttverdi som angitt av den felles, identiske grenen. For trærne i figur 23 er eksempler på Huffman-koder som følger.
Samme tabell kan anvendes for tilstandene S( 0) og SX1). I tilstandene ^(0) og S( l) er den felles innledningsverdiene (vist understreket) for symbolverdier i settet R "11", uavhengig av symbolverdien i settet R. I tilstanden £(2) er den felles innledningsverdien (vist understreket) for symbolverdier i settet R "10". I tilstandene £(0), £(1) og £(2) er sluttverdien (vist med fet skrift) for de respektive symbolverdiene den samme. (Sluttverdien forX(0) er"0", sluttverdien forX(1) er "10" og sluttverdien forX(2) er "11".)
I dette tilfellet vil Huffman-kodene for de tilnærmede fordelingene lette, og kan realiseres med, totrinns koding/dekoding for symbolverdier i settet R. Kodene vist i tabell 8 kan deles opp ytterligere som vist i tabellene 9 og 10.
For et symbol med en verdi i settet R koder koderen først en utgangskode som representerer alle symbolverdiene i settet R. Dette signaliserer et skifte fra en første kodetabell for symbolverdier i settet Q for en spesifikk tilstand til en andre kodetabell for symbolverdier i settet R for alle tilstandene. Koderen koder så en passende kode fra den andre kodetabellen.
I en mer komplisert, hierarkisk organisering av Huffman-kodetabeller kan Huffman-kodetabellene omfatte flere felles grener, der hver felles gren svarer til én enkelt betinget fordeling for en forskjellig delmengde av symbolverdier. I en to-trinns utførelse kan Huffman-kodetabellene for det første trinnet omfatte flere utgangskoder, én for hver av de flere felles grenene.
Mer generelt kan Huffman-kodetabellene organiseres i et vilkårlig hierarki, med utgangskoder (og eventuelt annen velgeinformasjon) anvendt for å skifte til en annen Huffman-kodetabell eller et annet sett av Huffman-kodetabeller.
I en gitt tabell kan en utgangskode også anvendes for å skifte til et skjema for koding/dekoding med fast kodelengde for bestemte symbolverdier (heller enn å skifte til en annen tabell).
Alternativt kan andre typer VLC-tabeller konstrueres som ikke følger reg-lene for Huffman-koder. For eksempel kan én enkelt VLC-tabell knytte VLC-koder til symbolverdier i settet R for alle tilstander i en gruppe av tilstander, og flere VLC-tabeller (én tabell for hver tilstand i gruppen) knytte VLC-koder til symbolverdier i settet Q.
Selv om de foregående eksemplene illustrerer faste, forhåndstrente kodetabeller, kan alternativt kodetabeller også variere sine koder dynamisk avhengig av symbolverdiene som er behandlet. For slike dynamisk varierende tabeller kan koderen og dekoderen fortsatt selektivt anvende flere kodetabeller for noen symbolverdier og én enkelt kodetabell for andre symbolverdier.
Dersom det er N tilstander for M symbolverdier, er det generelt N VLC-tabeller, eller N trær dersom Huffman-koder anvendes. Dersom det er L atskilte delmengder av de M symbolverdiene, hver av de L delmengdene med Pi tilstander, for / = 0,1,..., L-1, og med Pi < N for alle /, vil hvert av N trær ha L grener (angitt som bo, b:,der hver gren bi er valgt fra én av Pi felles grener som er tilgjengelige for denne delmengden /. Dersom videre noen av de L delmengdene igjen er rekursivt delt inn i ytterligere delmengder, der hver delmengde har færre tilstander enn sin overordnede mengde, kan det samme sies om grener ut fra de Pi grenene.
3. Eksempler på fordelinger for aritmetisk koding/dekoding
I andre kodere/dekodere anvendes tilnærmede fordelinger ved aritmetisk koding/dekoding. Aritmetisk koding omfatter i hovedtrekk det å representere en sekvens av symboler som ett enkelt tall innenfor et gitt intervall. Tallet er typisk et rasjonalt tall mellom 0 og 1. Et symbol kodes ved å legge det i en del av et intervall, der intervallet er oppdelt avhengig av sannsynlighetsfordelingen av symbolverdier.
For bruk i aritmetisk koding og dekoding kan de tilnærmede fordelingene vist i tabell 7 deles opp i tabell 6 og tabell 11. Skifteverdien i tabell 11 for X(0), X(2) og X(4) angir skifte fra én av tilstandene/fordelingene vist i tabell 11 til tilstanden/fordelingen vist i tabell 6.
Selv om det foregående eksempelet illustrerte faste, forhåndstrente fordelinger, vil fordelinger alternativt kunne variere dynamisk avhengig av symbolverdiene som er behandlet. For slike dynamisk varierende fordelinger kan koderen og dekoderen fortsatt selektivt anvende flere fordelinger for noen symbolverdier og én enkelt fordeling for andre symbolverdier.
4. Eksempel på trening for å bestemme entropimodeller
Når en koder og dekoder selektivt anvender flere entropimodeller for symboler, avhenger entropimodellene til syvende og sist av sannsynlighetsfordelings-informasjon for symbolene. I noen utførelser anvender et verktøy, så som en koder eller statistisk analyseprogramvare, følgende metode for å bestemme tilstander og sannsynlighetsfordelinger for entropimodeller.
Figur 24 viser en totrinns fremgangsmåte (2400) for å gruppere sannsynlighetsfordelinger i tilstander for en kodings-/dekodingsmetode med flere entropimodeller. Fremgangsmåten (2400) behandler sannsynlighetsfordelinger av symbolverdier som treningsvektorer, og treningsvektorene deles inn i grupper, tilsvarende grupperingsmetodene anvendt for vektorielle kvantiseringsmetoder.
Innledningsvis frembringer (2410) verktøyet absolutte sannsynlighetsfordelinger for treningsvektorer. Treningsvektorene er fra et treningssett av representative kilder. For koding/dekoding av lyd kan for eksempel sannsynlighetsfordelingen av symbolverdier i en underramme bli én treningsvektor. For generell koding/dekoding av lyd omfatter treningssettet flere lydkilder, slik at det oppnås sannsynlighetsfordelinger for flere underrammer fra de forskjellige lyd-kildene. Treningsvektorer kan oppnås gjennom trening ved forskjellige bitrate-og/eller kvalitetsinnstillinger.
Verktøyet grupperer (2420) så treningsvektorene ved anvendelse av et første kostnadsmål. For eksempel kan det første kostnadsmålet være midlere kvadratfeil ("MSE"). Selve grupperingsprosessen kan anvende en variant av den generaliserte Lloyd-algoritmen ("GLA") som forklart i forbindelse med figur 25, eller kan anvende en annen mekanisme. I GLA-varianten grupperer verktøyet iterativt treningsvektorer i et gitt antall grupper, med iterasjon mellom å finne en optimal koder for en gitt dekoder og å finne en optimal dekoder for en gitt koder. Etter et antall iterasjoner finner verktøyet et sett av grupper som minimerer det første kostnadsmålet.
Verktøyet forfiner (2430) så gruppene ved anvendelse av et andre kostnadsmål. For eksempel kan det andre kostnadsmålet være et mål på relativ entropi. Itakura-Saito-avstand er én måte å måle relativ entropi mellom to sannsynlighetsfordelinger. I forfiningsprosessen (2430) kan deler av grupperings logikken være den samme som eller forskjellig fra deler av grupperingslogikken anvendt med det første kostnadsmålet.
Som illustrert i figur 24 anvender verktøyet således en totrinns trenings-prosess. I det første trinnet anvender verktøyet det første kostnadsmålet (f.eks. MSE) for å finne de tilnærmede sannsynlighetsfunksjons-(PMF)-grupperfor fordelingene. I det andre trinnet anvender verktøyet det andre kostnadsmålet (f.eks. Itakura-Saito-avstand) for å forfine PMF-gruppene ytterligere. MSE er forholdsvis enkelt å beregne, men modellerer ikke entropi like godt som målet på relativ entropi for kodings-/dekodingsformål. Relativ entropi på den annen side, er et effektivt mål for forfining av grupper, men kan føre til en ikke-optimal gruppering når det er det eneste målet som anvendes. I mange tilfeller er ikke bare totrinns-treningen raskere som følge av mindre kompleksitet (siden relativ entropi er mer komplisert å beregne), men resulterer også i bedre grupper for kodings-/deko-dingsanvendelser.
Alternativt kan et verktøy anvende en annen metode for å bestemme tilstander og sannsynlighetsfordelinger. For eksempel kan verktøyet anvende et annet mål enn MSE eller relativ entropi for det første eller det andre kostnadsmålet. Eventuelt kan verktøyet anvende ett enkelt kostnadsmål i én ett-trinns-prosess.
Figur 25 viser en fremgangsmåte (2500) for gruppering av treningsvektorer i henhold til en variant av GLA. Som i figur 24 behandler fremgangsmåten (2500) sannsynlighetsfordelinger av symbolverdier som treningsvektorer, og treningsvektorene deles inn i grupper.
Innledningsvis beregner (2510) verktøyet én enkelt gruppe fra treningsvektorer. For generell koding/dekoding av lyd kan treningsvektorene for eksempel være sannsynlighetsfordelinger for underrammer fra forskjellige lydkilder, så som lydfiler innkodet med forskjellige bitrate- og/eller kvalitetsinnstillinger. Antallet treningsvektorer som frembringes avhenger av utførelsen. I én utførelse frembringer verktøyet omtrent 100 ganger flere treningsvektorer enn det endelige antallet grupper som beregnes. Den ene gruppen er tyngdepunktet for treningsvektorene, beregnet ved å midle treningsvektorene, eller en annen kombinasjon av treningsvektorene.
Verktøyet deler (2520) så opp den ene gruppen i flere grupper. For eksempel kan verktøyet anvende prinsipalkomponentanalyse for å dele opp den ene gruppen i to grupper, der den ene er den opprinnelige gruppen og den andre er den opprinnelige gruppen pluss en utførelsesavhengig konstant multiplisert med prinsipalkomponenten (f.eks. kan den andre være en gruppe som er forskjøvet langs prinsipalkomponentens retning). Alternativt kan verktøyet anvende en annen analyse for å dele opp gruppen i flere grupper.
Verktøyet klassifiserer (2530) treningsvektorene mellom de flere aktuelle gruppene i henhold til et kostnadsmål. For eksempel kan kostnadsmålet være MSE, relativ entropi eller et annet mål. MSE-verdien til en treningsvektor kontra en gruppe angir den euklidske avstanden mellom sannsynlighetsfordelingspunktene i treningsvektoren og de motsvarende punktene i gruppen. Den relative entropien mellom en treningsvektor og en gruppe kan gi forskjellen mellom en treningsvektor (training_vectior) og en gruppe (duster) som følger:
der k angir punkter i treningsvektoren og gruppen. Mindre formelt angir den relative entropien et økt bitratekrav som følge av uoverensstemmelse mellom treningsvektoren og gruppen. Verktøyet klassifiserer en treningsvektor med den gruppen mot hvilken treningsvektoren har lavest MSE-verdi, lavest relativ entropi, etc.
Verktøyet omberegner (2540) de gjeldende gruppene fra treningsvektorene etter klassifisering. For eksempel kan verktøyet for hver gjeldende gruppe beregne tyngdepunktet til treningsvektorene klassifisert til denne gruppen. Alternativt kan verktøyet beregne hver gjeldende gruppe som en annen kombinasjon av treningsvektorene klassifisert til den gruppen.
Verktøyet bestemmer (2545) hvorvidt gruppene har stabilisert seg. For eksempel kan verktøyet sjekke om endringen i grupper fra før kontra etter omberegningen (2540) tilfredsstiller valgte kriterier. Ett kriterium er at gruppene ikke er endret med mer enn en terskelverdi i omberegningen (2540), der terskelverdien er utførelsesavhengig. Alternativt kan verktøyet betrakte andre og/eller ytterligere kriterier. Dersom gruppene ikke har stabilisert seg, klassifiserer (2530) verktøyet treningsvektorene mellom gjeldende grupper (som omberegnet (2540)) i henhold til kostnadsmålet.
Når de gjeldende gruppene har stabilisert seg, avgjør (2550) verktøyet om det er nok grupper. Generelt kan det ønskede antall grupper velges basert på en avveining mellom minnebruk kontra kodingsytelse. Bruk av flere grupper fører gjerne til flere tilstander og tilpasning i entropimodeller, på bekostning av økt minnebruk for å lagre fordelinger, VLC-tabeller, etc. Når forover-tilpasning anvendes, betyr bruk av flere grupper også at mer metainformasjon blir signalisert (f.eks. for å angi fordelinger, tabeller, etc). Bruk av færre grupper, derimot, øker gjerne avstanden mellom treningsvektorer og de endelige gruppene, som vanligvis medfører økt avstand mellom entropimodellene og de faktiske fordelingene av symbolverdier under koding.
Dersom det ønskede antall grupper ikke er nådd, deler (2560) verktøyet opp noen av eller alle de gjeldende gruppene. For eksempel kan verktøyet anvende prinsipalkomponentanalyse eller en annen analyse for å dele opp en gruppe i to grupper. Anta at verktøyet leter etter G endelige grupper og på tiden har F gjeldende grupper, der F < G. Dersom oppdeling av hver av de F gjeldende gruppene ville resultere i for mange grupper, kan verktøyet dele opp hver av de G - F øvre gjeldende gruppene (f.eks. "øvre" med hensyn til hvor mange treningsvektorer som er klassifisert til de gjeldende gruppene) i to grupper. Alternativt kan verktøyet bare dele opp den øvre gruppen i hver iterasjon eller anvende en annen oppdelingsregel. Verktøyet klassifiserer (2530) så treningsvektorene mellom gjeldende grupper (etter oppdelingen (2560)) i henhold til kostnadsmålet.
Når de gjeldende gruppene har stabilisert seg og det ønskede antall grupper er nådd, avsluttes fremgangsmåten (2500). Klassifiseringen (2530), omberegningen (2540) og oppdelingen (2560) utgjør hovedsaklig en iterasjon av GLA-varianten, og under iterasjonene vil kostnadsmålet avta.
Fremgangsmåten (2500) i figur 25 kan innlemmes i fremgangsmåten (2400) i figur 24 som følger. Verktøyet utfører fremgangsmåten (2500) i figur 25 ved anvendelse av MSE som kostnadsmål inntil det ønskede antall grupper er nådd. På dette tidspunktet utfører verktøyet iterativt klassifisering (2530), omberegning
(2540) og stabilitetssjekk (2545) med bruk av relativ entropi som kostnadsmål inntil gruppene stabiliserer seg / ikke endres med mer enn en terskelverdi.
Fremgangsmåtene (2400, 2500) kan anvendes for å generere endelige grupper med sannsynlighetsfordelinger som tilnærmer absolutte fordelinger, men har samme betingede fordeling for bestemte symbolverdier. Med hensyn til det analytiske rammeverket i kapittel V.A.1, kan fremgangsmåtene (2400, 2500) anvendes for å generere tilnærmede sannsynlighetsfordelinger så som de listet i tabell 7 ved, under klassifiserings- og grupperingstrinnene, hvilket legger til en begrensning om at den betingede fordelingen for symbolverdier i et sett R er den samme for alle gruppene/tilstandene ( P' s( j), x( i), R er den samme for a||e tilstander S( j)). I hovedtrekk blir de dimensjonene til gruppene som svarer til symbolverdier i settet R begrenset som vist i likningene (1) og (2). I analysen angis sannsynligheten PS( j) for å være i en gitt tilstand av antallet treningsvektorer klassifisert i gruppen for denne tilstanden. En annen begrensning er at dimensjonen til gruppene summerer til 1.
Med henvisning til figur 25, etter omberegning (2540) av de gjeldende gruppene, kan én eller flere betingelser legges på de betingede fordelingene. Anta generelt at det er N tilstander for M symbolverdier, og at det er L delmengder av de M symbolverdiene, der hver av de L delmengdene har Pi tilstander, Pi< N, I =0, 1, .... , L-1 og E/elementer. Alle symbolverdiene innenfor en gitt delmengde av de L delmengdene kan bli gruppert i en felles (utgang/skift)-symbolverdi (escape/switch) symbol value). Det vil finnes L slike utgang/skift-symbolverdier. Deretter fortsetter treningen med å finne N grupper (eller fordelinger) for de M - (Eo + Ei + ... + Ela) + L symbolverdiene (subtrahert de Ei elementene i de L delmengdene og addert L elementer for utgang/skift-symbolverdiene). For hver av de L delmengdene av de M symbolverdiene beregnes så én eller flere betingede fordelinger innenfor delmengden. Treningen gjentas på hver av de L delmengdene for å finne Pi grupper, / = 0, 1,..., L-1, for hver av disse delmengdene. Treningsvektorene for dette vil være én eller flere betingede fordelinger innenfor de L delmengdene. Om noen av de L delmengdene deles opp ytterligere, kan prosessen bli rekursivt gjentatt for denne oppdelte delmengden /, siden det nå er Pi tilstander for Ei symbolverdier.
Når det gjelder angivelse av hvilke symbolverdier som finnes i settene Q og R, er dette innledningsvis basert på sannsynlighetsfordelingen til den ene start- gruppen. Deretter avhenger elementene i settene Q og R av sannsynligheten for å være i de respektive tilstandene (deler av treningsvektorene i de respektive grupper) og sannsynlighetsfordelingene for gruppene.
5. Alternativer
Mange av de foregående eksemplene omfatter bruk av flere fordelinger/tabeller for noen symbolverdier og bruk av én enkelt fordeling/tabell for andre symbolverdier. Selv om denne utførelsen typisk reduserer minnebruken uten i nevneverdig grad å redusere entropikodingsytelsen, kan fremgangsmåtene og verktøyene beskrevet i kapittel V mer generelt anvendes for hierarkisk organiserte entropimodeller. En koder eller dekoder kan selektivt velge mellom forskjellige entropimodeller i en hierarkisk anordning som tillater mer tilpasning for noen symbolverdier og mindre tilpasning for andre symbolverdier.
Hierarkisk organiserte entropimodeller kan referere til flere entropimodeller for hver skift (f.eks. ikke bare skifte til én enkelt entropimodell for mindre sannsynlige symbolverdier). For eksempel kan et sett av Huffman-kodetabeller på et gitt nivå omfatte én Huffman-kodetabell eller flere Huffman-kodetabeller. Trening kan skje i flere faser. I en første treningsfase identifiseres symbolverdiene å være i et sett Q eller et sett R, idet den betingede fordelingen for symbolverdier i settet R er den samme for alle tilstander. Deretter, i en etterfølgende treningsfase for symbolverdiene i settet R, oppheves den tidligere begrensningen på den betingede fordelingen for symbolverdier i settet R, og sannsynlighetsfordelingene for symbolverdiene i settet R blir klassifisert til flere grupper/tilstander for forskjellige entropimodeller.
Hvert medlem i et sett av entropimodeller kan omfatte flere punkter for skift til forskjellige sett av entropimodeller på et annet nivå. For eksempel omfatter for forover-tilpasning hver tabell i et første sett av Huffman-kodetabeller to utgangskoder - en første utgangskode til et andre sett av én eller flere Huffman-kodetabeller og en andre utgangskode til et tredje sett av én eller flere Huffman-kodetabeller. Som for trening kan symbolverdier bli identifisert som inneholdt i et sett Q for et første sett av entropimodeller, et sett R for et andre sett av entropimodeller eller et sett S for et tredje sett av entropimodeller. Den betingende fordelingen for symbolverdier i settet R (sett bort i fra symbolverdier i Q og S) er den samme for alle tilstander, og den betingede fordelingen for symbolverdier i settet S (sett bort i fra symbolverdier i Q og R) er den samme for alle tilstander.
I tillegg til ytterligere bredde kan hierarkisk organiserte entropimodeller omfatte tre, fire eller flere nivåer av entropimodeller. For eksempel kan for forover-tilpasning hver tabell i et første sett av Huffman-kodetabeller omfatte en utgangskode til et andre sett av Huffman-kodetabeller, og hver tabell i det andre settet av Huffman-kodetabeller kan omfatte en utgangskode til et tredje sett av Huffman-kodetabeller. Trening kan skje i flere faser. I en første fase identifiseres symbolverdier å være i et sett Q for et første sett av entropimodeller eller et sett R for et andre sett av entropimodeller. Den betingede fordelingen for symbolverdier i settet R (sett bort fra symbolverdier i Q) er den samme for alle tilstander. I en ytterligere treningsfase for symbolverdiene i settet R blir deretter denne begrensningen på den betingede fordelingen opphevet, og symbolverdiene fra settet R identifiseres å være i et sett S for et andre sett av entropimodeller eller et sett T for eventuelle andre sett av entropimodeller. I denne fasen er den betingede fordelingen for symbolverdier i settet T (sett bort fra symbolverdier i S) den samme for alle tilstander.
I tillegg til (f.eks. Huffman) koding og dekoding med variabel lengde og aritmetisk koding og dekoding kan andre typer entropikoding og -dekoding omfatte selektiv bruk av entropimodeller. For eksempel kan variabel-til-variabel koding og dekoding innlemme VLC-tabeller i en hierarkisk anordning.
C. Eksempler på kodingsmetoder
Figur 26 viser en fremgangsmåte (2600) for koding av symboler med selektiv bruk av flere entropimodeller. En koder så som koderen vist i figur 2, 4 eller 6, utfører fremgangsmåten (2600).
I en bølgeformbasert lydkoder er symbolene typisk for kvantiserte spektralkoeffisienter. De kvantiserte spektralkoeffisientene kan bli forbehandlet (f.eks. ved koeffisientberegning eller koeffisientomordning). Hvert av symbolene kan representere en kvantisert spektralkoeffisient. Alternativt kan hvert av symbolene representere en gruppe av kvantiserte spektralkoeffisienter. For vektoriell Huffman-koding kan et symbol for eksempel representere en gruppe av 4 kvantiserte spektralkoeffisienter. For sekvensnivå-koding kan et symbol for eksempel representere et sekvensnivå-par.
For en sekvens av symboler velger (2610) koderen en entropimodell fra et første sett av entropimodeller. For eksempel kan koderen velge en Huffman-kodetabell blant flere tilgjengelige Huffman-kodetabeller for vektoriell Huffman-koding eller sekvensnivå-koding. Alternativt velger koderen en entropimodell som anvendes i en annen entropikodingsmetode. I noen utførelser velger koderen entropimodell avhengig av kontekstinformasjon. I andre utførelser velger koderen entropimodell etter å ha vurdert kodingsytelsen som oppnås ved anvendelse av de forskjellige entropimodellene. Ett eksempel på utvelgingsprosess for Huffman-kodetabeller ved anvendelse av en gitterstruktur (trellis structure) er beskrevet nedenfor. Alternativt kan koderen anvende en annen mekanisme for å velge entropimodell.
Med henvisning tilbake til figur 26 kan koderen eventuelt signalisere (2620) informasjon som angir den valgte entropimodellen. Ved forover-tilpasning signa-lerer koderen informasjon som eksplisitt angir den valgte entropimodellen. En forover-tilpasningsmekanisme er beskrevet nærmere nedenfor for skifte av Huffman-kodetabell. Alternativt kan koderen anvende en annen signalerings-mekanisme. Ved bakover-tilpasning bestemmes valget av entropimodell fra kontekstinformasjon tilgjengelig ved dekoderen.
Koderen entropikoder (2630) så symbolsekvensen ved anvendelse av den valgte entropimodellen. Ved eventuelle skiftepunkter i entropimodellen kan koderen skift til et annet sett av én eller flere entropimodeller. For eksempel kan koderen anvende en utgangskode i en første Huffman-kodetabell for å signalisere skifte til en andre Huffman-kodetabell, og så kode et symbol ved anvendelse av den andre Huffman-kodetabellen.
Koderen signaliserer (2640) da de entropikodede symbolene. Når et gitt skifte er gjort, kan koderen også signalisere skifteinformasjon så som utgangskoder eller annen modellskifteinformasjon for valg innenfor et modellsett.
Koderen bestemmer (2650) om den skal fortsette med den neste sekvensen, og velger (2610) i så fall entropimodellen for symbolene i den neste sekvensen. Ved koding av kvantiserte spektralkoeffisienter ved anvendelse av Huffman-kodetabeller tillates for eksempel i én utførelse koderen å endre kodetabeller ved bark-grenser (bark boundaries). Med andre ord tjener bark-grenser, som deler opp frekvensspekteret, som mulige endringsposisjoner for endring av
Huffman-kodetabellen valgt fra et første sett av kodetabeller. Dersom koeffisientene for symbolet som kodes inn strekker seg forbi en bark-grense (f.eks. fordi
symbolet representerer en vektor av koeffisienter eller sekvensnivå-par av koeffisienter som krysser grensen), blir enden av det aktuelle symbolets koeffisienter den gyldige endringsposisjonen. Alternativt kan koderen endre valget av entropimodell fra det første modellsettet ved andre endringsposisjoner, og sekvensen av symboler innkodet i henhold til den valgte entropimodellen har en annen varighet.
Som angitt over velger i én utførelse en koder en Huffman-kodetabell ved anvendelse av en gitterstruktur for evaluering av forskjellige tabeller. Koderen koder inn alle symbolene mellom to gyldige tabellendringsposisjoner (som er bark-grenser) med alle de mulige tabellene. Koderen holder rede på antallet bit som et anvendt for hver tabell for å kode symbolene. Koderen konstruerer en gitterstruktur for å finne den best mulige kodingen, med hensyntagen til de bit-verdiene som må signaliseres dersom en tabell endres.
Anta at btj er det minste antall bit som anvendes ved koding frem til tabell-endringsposisjon t, der tabell / er den siste tabellen anvendt. Bit-antallet rtj er antallet bit nødvendig for å kode symbolene mellom endringsposisjon t og endringsposisjon t + 1 ved anvendelse av tabell/'. Bit-antallet stik er antallet bit nødvendig for å kode en tabellendring fra tabell / til tabell k ved endringsposisjon t. Med andre ord var den siste tabellen som ble anvendt ved endringsposisjon t tabell /', og tabell k anvendes nå for å koding frem til endringsposisjon t + 1. Tabell ntj er tabellen som anvendes ved endringsposisjon t -1 for å finne den optimale kodingen der den gjeldende tabellen ved endringsposisjon t er tabell/'. Så:
Koderen bestemmer den optimale kodingen for hele underrammen eller en annen del av en sekvens ved å finne den verdien for / som minimerer btmaxj, der tmax er den maksimale verdien for t. Koderen finner de optimale tabellene ved å spore den optimale banen ved å betrakte verdien til n. Antallet bit nødvendig for å kode en tabellendring er tilnærmet log2(antall_tabeller) +
log2(antall_barks_igjen)+1. Når en tabell er endret, signaliserer koderen én bit for å angi om dette er den siste tabellen anvendt, og dersom den ikke er den siste
tabellen anvendt, signaliserer koderen log2(antall_barks_igjen) for å kode hvor mange bark-bånd tabellen anvender.
D. Eksempler på dekodingsmetoder
Figur 27 viser en fremgangsmåte (2700) for dekoding av symboler med selektiv bruk av flere entropimodeller. En dekoder så som dekoderen vist i figur 3, 5 eller 7, utfører fremgangsmåten (2700).
I en bølgeformbasert lyddekoder er symbolene typisk for kvantiserte spektralkoeffisienter. Dersom de kvantiserte spektralkoeffisientene er forbehandlet (f.eks. med koeffisientberegning eller koeffisientomordning) under koding, blir koeffisientene etterbehandlet (f.eks. med koeffisientberegning eller koeffisientomordning) etter entropidekoding. Hvert av symbolene kan representere en kvantisert spektralkoeffisient. Alternativt kan hvert av symbolene representere en gruppe av kvantiserte spektralkoeffisienter. For vektoriell Huffman-dekoding kan et symbol for eksempel representere en gruppe av 4 kvantiserte spektralkoeffisienter. For sekvensnivå-dekoding kan et symbol for eksempel representere et sekvensnivå-par.
For en sekvens av symboler kan dekoderen eventuelt parse (2710) informasjon som angir den valgte entropimodellen. Forforover-tilpasning parser dekoderen for eksempel informasjon som angir den valgte entropimodellen ved anvendelse av en mekanisme som speiler signaliseringen på koder-siden.
Dekoderen velger (2720) en entropimodell fra et første sett av entropimodeller. For eksempel kan dekoderen velge en Huffman-kodetabell blant flere tilgjengelige Huffman-kodetabeller for vektoriell Huffman-dekoding eller sekvensnivå-dekoding. Alternativt kan dekoderen velge en entropimodell som anvendes i en annen entropidekodingsmetode. I noen utførelser velger dekoderen entropi-modell avhengig av kontekstinformasjon for bakover-tilpasning. I andre utførelser velger dekoderen entropimodell basert på informasjon som er signalisert av en koder og parset (2710) fra bitstrømmen.
Dekoderen entropidekoder (2730) så sekvensen av symboler ved anvendelse av den valgte entropimodellen. Ved skiftepunkter i entropimodellen kan dekoderen skifte til et annet sett av én eller flere entropimodeller. For eksempel kan dekoderen motta en utgangskode for en første Huffman-kodetabell som angir skifte til en andre Huffman-kodetabell, og så dekode et symbol ved anvendelse av den andre Huffman-kodetabellen.
Koderen mater (2740) så ut informasjon for de entropidekodede symbolene, for eksempel kvantiserte spektralkoeffisienter klar for etterfølgende behandling.
Dekoderen bestemmer (2750) om den skal fortsette med den neste sekvensen, og velger (2710) i så fall entropimodell for symbolene i den neste sekvensen. Ved dekoding av kvantiserte spektralkoeffisienter ved anvendelse av Huffman-kodetabeller tillates for eksempel dekoderen i én utførelse å endre kodetabeller ved bark-grenser. Dersom koeffisientene for det gjeldende symbolet dekodes forbi en bark-grense (f.eks. fordi symbolet representerer en vektor av koeffisienter eller sekvensnivå-par av koeffisienter som krysser grensen), blir slutten av det gjeldende symbolets koeffisienter den gyldige endringsposisjonen. Alternativt kan dekoderen endre valg av entropimodell fra det første modellsettet ved andre endringsposisjoner, og symbolsekvensen dekodet i henhold til den valgte entropimodellen ha en annen varighet.
E. Resultater
Koding ved anvendelse av en tilnærmet fordeling for mindre sannsynlige symbolverdier gjør det mulig å redusere den nødvendige minnebruken forfor-delinger eller kodetabeller i koderen og dekoderen. I det analytiske rammeverket i kapittel V.A.1 lagrer koderen og dekoderen fordelingene og/eller kodetabellene for pS( j\ x( q) ■ Nærmere bestemt lagrer koderen og dekoderen én fordeling og/eller tabell for hver tilstand S( j) for symbolverdierX(z) i settet Q. For symbolverdier X( i) i settet R lagrer koderen og dekoderen fordelingen og/eller tabellen for én enkelt fordeling, P' S( jxx( i\ R ■
Anta at en tabell tar opp B byte av minne for hver tilstand, og at det er 16 tilstander. I det vanligste tilfellet der tabellene er fulle vil koderen og dekoderen hver kreve 16<*>B byte minneplass for de 16 tabellene. Dersom imidlertid bare 10% av symbolverdiene angis som mer sannsynlige (i settet Q), er et enkelt estimat av den nødvendige minneplassen (16<*>B<*>0,1) + (S<*>0,9) = 2,5<*>B. Følgelig reduseres minnekravet med mer enn 6 ganger, kun med en liten reduksjon i entropikodingsgevinsten sammenliknet med bruk av fulle tabeller.
I lys av de mange mulige utførelsesformer hvor prinsippene i den beskrevne oppfinnelse kan anvendes vil det forstås at de illustrerte utførelses-formene kun er foretrukne eksempler på oppfinnelsen, og ikke skal anses som en begrensning av oppfinnelsens ramme. Tvert imot defineres oppfinnelsens ramme av de følgende kravene. Vi krever derfor beskyttelse for alt som faller innenfor rammen og idéen i disse kravene.

Claims (19)

1. Fremgangsmåte for utførelse i en koder eller i en dekoder omfattende trinnene: forflere symboler, å velge en entropimodell fra et første modellsett som omfatter flere entropimodeller, hver av de flere entropimodellene i det første modellsettet inkluderer et modellskiftepunkt for skifte til et andre modellsett som omfatter én eller flere entropimodeller, hvor de flere symbolene er for kvantiserte spektralkoeffisienter for lyd-data; og hvor valg av en entropimodell er basert på å vurdere resultatene av koding ved å bruke de flere entropimodellene; å prosessere de flere symbolene med den valgte entropimodellen; og å sende ut resultatene av prosesseringen; hvor de flere entropimodellene i det første modellsettet, og den ene eller flere entropimodeller i det andre modellsettet, reflekterer sannsynlighetsfordelinger for aritmetisk koding og / eller dekoding, og hvor de flere entropimodellene i det første modellsettet reflekterer sannsynlighetsfordelingene til de mer sannsynlige symboler, og de flere entropimodellene i det andre modellsettet reflektere sannsynlighetsfordelingene til de mindre sannsynlige symboler; og hvor et modellskiftepunkt etterfølges hvis den valgte sannsynlighetsfordelingen ikke omfatter det respektive symbolet blant de flere symbolene.
2. Fremgangsmåte ifølge krav 1, hvor prosesseringen omfatter entropikoding hvis fremgangsmåten utføres av en koder.
3. Fremgangsmåte ifølge krav 1, hvor prosesseringen omfatter entropidekoding dersom fremgangsmåten utføres av en dekoder.
4. Fremgangsmåte ifølge krav 1, hvor modellskiftepunktet er en modellskifte-sannsynlighet blant de flere sannsynlighetsfordelingene til det første modellsettet.
5. Fremgangsmåte ifølge krav 1, hvor de flere entropimodellene i det første modellsettet er inkorporert i henholdsvis flere VLC-tabeller i et første tabellsett, hvor én eller flere entropimodeller i det andre modellsettet er inkorporert i henholdsvis én eller flere VLC-tabeller i et andre tabellsett, hvor modellskiftepunktet er en escape-kode, og hvor hver av de flere VLC-tabeller i det første tabellsettet inneholder escape-koden for bytte til det andre tabellsettet.
6. Fremgangsmåte ifølge krav 5, hvor de flere VLC-tabeller til det første tabellsettet og den ene eller flere VLC-tabeller i det andre tabellsettet er Huffman-kodetabeller, og hvor det andre tabellsettet inkluderer en enkelt Huffman-kodetabell, slik at den ene Huffman kodetabellen representerer en felles gren i trær som representerer de respektive flere Huffman kodetabeller i det første tabellsettet.
7. Fremgangsmåte ifølge krav 5, hvor de flere VLC-tabeller i det første tabellsettet er anordnet for et første symbolverdisett som inkluderer de mer sannsynlige symbolverdier, og hvor én eller flere VLC-tabeller i det andre tabellsettet er anordnet for et andre symbolverdisett som inkluderer de mindre sannsynlige symbolverdier.
8. Fremgangsmåte ifølge krav 7, hvor det andre tabellsettet inneholder en enkelt VLC-tabell, og hvor prosesseringen er for to-trinns variabel lengdekoding eller dekoding av de av de flere symbolene som har de mindre sannsynlige symbolverdiene.
9. Fremgangsmåte ifølge krav 1, hvor generering av flere entropimodeller i det første modellsettet, og den ene eller flere entropimodeller i det andre modellsettet, inkluderer: å sammenknytte sannsynlighetsfordelingene i henhold til en første kostnadsmetrikk, noe som resulterer i flere midlertidige klynger; og å raffinere de flere midlertidige klyngene i samsvar med en andre kostnadsmetrikk som er forskjellig fra den første kostnadsmetrikken, noe som resulterer i flere endelige klynger.
10. Fremgangsmåte ifølge krav 1, hvor det andre modellsettet inkluderer en enkelt entropimodell, idet fremgangsmåten videre omfatter generering av de flere entropimodellene i det første modellsettet, og den ene entropimodellen i det andre modellsettet, hvor genereringen omfatter, for den ene entropimodellen i det andre modellsettet, å begrense de mindre sannsynlige symbolverdier til å ha en felles betinget fordeling over sannsynlige fordelinger.
11. Fremgangsmåte ifølge krav 1, hvor hver av den ene eller flere entropimodeller i det andre modellsettet inkluderer et andre modellskiftepunkt for bytting til et tredje modellsett som omfatter én eller flere entropimodeller.
12. Fremgangsmåte ifølge krav 1, hvor i det minste i noen av de flere entropimodeller i det første modellsettet, har modellskiftepunktet en verdi som er forskjellig fra modell til modell.
13. Fremgangsmåte ifølge krav 1, hvor hver av de flere entropimodeller i det første modellsettet videre omfatter et andre modellskiftepunkt for å skifte til et tredje sett av modeller som omfatter én eller flere entropimodeller.
14. Fremgangsmåte ifølge krav 1, hvor det å velge er en del av fremover rettet adaptiv svitsjing.
15. Fremgangsmåte ifølge krav 1, hvor det å velge er en del av bakover rettet adaptiv svitsjing.
16. Et system som omfatter en koder eller dekoder, videre omfattende: en innretning for å skaffe sannsynlighetsfordelinger for flere symbolverdier, hvor symbolverdiene er for kvantiserte spektrale koeffisienter for lyd-data; og innretning for å generere entropimodeller, inkludert å begrense de flere mindre sannsynlige symbolverdier til å ha en felles betinget fordeling over sannsynlighetsfordelingene uten derved å begrense de flere mer sannsynlige symbolverdier, innretning for å velge en entropimodell fra et første modellsett som omfatter flere entropimodeller, idet hver av de flere entropimodeller i det første modellsettet inkluderer et modellskiftepunkt for å skifte til et andre sett av modeller som omfatter én eller flere entropimodeller, hvor det å velge en entropi-modell er basert på å vurdere resultatene av koding ved hjelp av flere entropimodeller; innretning for å behandle de flere symbolene ved hjelp av den valgte entropi-modellen; og innretning for å sende ut resultatene av prosesseringen; hvor de flere entropimodeller i det første modellsettet og den ene eller flere entropimodeller i det andre modellsettet reflekterer sannsynlighetsfordelinger for aritmetisk koding og / eller dekoding; og hvor de flere entropimodeller i det første modellsettet reflekterer sannsynlighetsfordelingene av de mer sannsynlige symboler, og de flere entropimodeller i det andre modellsettet reflekterer sannsynlighetsfordelingene til de mindre sannsynlige symboler; og hvor et modellskiftepunkt følges hvis den valgte sannsynlighetsfordelingen ikke omfatter det respektive symbolet blant de flere symbolverdier.
17. System ifølge krav 16, hvor en eller flere moduler generere entropimodeller ved: å gruppere sannsynlighetsfordelingene i henhold til en første kostnadsmetrikk, noe som resulterer i flere foreløpige klynger; å raffinere de flere foreløpige klynger i samsvar med en andre kostnadsmetrikk som er forskjellig fra den første kostnadsmetrikk, noe som resulterer i flere endelige klynger; og å innstille de flere entropimodeller basert i det minste delvis på de flere endelige klyngene.
18. System ifølge krav 17, hvor den andre kostnadsmetrikken er relativ entropi.
19. System ifølge krav 17, hvor entropimodellene er henholdsvis inkorporert i flere VLC-tabeller i et første tabellsett og en enkel VLC-tabell i et andre tabellsett, hvor de flere VLC-tabellene er tilpasset de flere mer sannsynlige symbolverdier, og hvor den ene VLC-tabellen er tilpasset de flere mindre sannsynlige symbolverdier.
NO20076261A 2005-07-15 2007-12-05 Selektiv anvendelse ved bruk av flere entropimodeller i adaptiv koding og dekoding NO341186B1 (no)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/183,266 US7599840B2 (en) 2005-07-15 2005-07-15 Selectively using multiple entropy models in adaptive coding and decoding
PCT/US2006/027231 WO2007011653A2 (en) 2005-07-15 2006-07-14 Selectively using multiple entropy models in adaptive coding and decoding

Publications (2)

Publication Number Publication Date
NO20076261L NO20076261L (no) 2008-02-06
NO341186B1 true NO341186B1 (no) 2017-09-04

Family

ID=37662739

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20076261A NO341186B1 (no) 2005-07-15 2007-12-05 Selektiv anvendelse ved bruk av flere entropimodeller i adaptiv koding og dekoding

Country Status (12)

Country Link
US (1) US7599840B2 (no)
EP (1) EP1905000B1 (no)
JP (1) JP5085543B2 (no)
KR (1) KR101278805B1 (no)
CN (1) CN101223573B (no)
AT (1) ATE536001T1 (no)
AU (1) AU2006270259B2 (no)
CA (1) CA2612537C (no)
ES (1) ES2378393T3 (no)
MX (1) MX2008000524A (no)
NO (1) NO341186B1 (no)
WO (1) WO2007011653A2 (no)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE543179T1 (de) * 2002-09-04 2012-02-15 Microsoft Corp Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus
US7882167B2 (en) * 2005-02-18 2011-02-01 Beth Israel Deaconess Medical Center Complexity-based dynamical analysis of a network
US20080243518A1 (en) * 2006-11-16 2008-10-02 Alexey Oraevsky System And Method For Compressing And Reconstructing Audio Files
TWI312981B (en) * 2006-11-30 2009-08-01 Inst Information Industr Voice detection apparatus, method, computer program product, and computer readable medium for adjusting a window size dynamically
FR2911228A1 (fr) * 2007-01-05 2008-07-11 France Telecom Codage par transformee, utilisant des fenetres de ponderation et a faible retard.
JP2008228208A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 画像符号化方法、画像符号化装置、画像符号化回路、情報記録媒体、及び、コンピュータプログラム
KR101418248B1 (ko) * 2007-04-12 2014-07-24 삼성전자주식회사 정현파 성분의 진폭 코딩 및 디코딩 방법과 그 장치
KR101317269B1 (ko) * 2007-06-07 2013-10-14 삼성전자주식회사 정현파 오디오 코딩 방법 및 장치, 그리고 정현파 오디오디코딩 방법 및 장치
US8463615B2 (en) * 2007-07-30 2013-06-11 Google Inc. Low-delay audio coder
EP2023339B1 (en) * 2007-07-30 2010-08-25 Global IP Solutions (GIPS) AB A low-delay audio coder
US8483282B2 (en) * 2007-10-12 2013-07-09 Qualcomm, Incorporated Entropy coding of interleaved sub-blocks of a video block
CA2858944C (en) 2007-11-12 2017-08-22 The Nielsen Company (Us), Llc Methods and apparatus to perform audio watermarking and watermark detection and extraction
US8972247B2 (en) * 2007-12-26 2015-03-03 Marvell World Trade Ltd. Selection of speech encoding scheme in wireless communication terminals
US8457951B2 (en) 2008-01-29 2013-06-04 The Nielsen Company (Us), Llc Methods and apparatus for performing variable black length watermarking of media
TWI349487B (en) * 2008-03-25 2011-09-21 Novatek Microelectronics Corp Entropy encoding circuit and encoding method thereof
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8630848B2 (en) 2008-05-30 2014-01-14 Digital Rise Technology Co., Ltd. Audio signal transient detection
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
KR101485339B1 (ko) 2008-09-29 2015-01-26 삼성전자주식회사 무손실 부호화/복호화 장치 및 방법
KR100968373B1 (ko) * 2008-10-07 2010-07-09 주식회사 코아로직 가변장 부호 테이블 분할 방법 및 이를 이용한 멀티 코덱의메모리 공유 방법 및 장치
GB2466666B (en) * 2009-01-06 2013-01-23 Skype Speech coding
WO2010138777A1 (en) * 2009-05-27 2010-12-02 Arsh Technologies, Llc Automatic resource retrieval and use
CN101615910B (zh) 2009-05-31 2010-12-22 华为技术有限公司 压缩编码的方法、装置和设备以及压缩解码方法
EP2309497A3 (en) * 2009-07-07 2011-04-20 Telefonaktiebolaget LM Ericsson (publ) Digital audio signal processing system
WO2011022043A1 (en) * 2009-08-20 2011-02-24 Thomson Licensing Method and apparatus for reusing tree structures to encode and decode binary sets
US8788277B2 (en) * 2009-09-11 2014-07-22 The Trustees Of Columbia University In The City Of New York Apparatus and methods for processing a signal using a fixed-point operation
WO2011042464A1 (en) * 2009-10-08 2011-04-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Multi-mode audio signal decoder, multi-mode audio signal encoder, methods and computer program using a linear-prediction-coding based noise shaping
US8380524B2 (en) * 2009-11-26 2013-02-19 Research In Motion Limited Rate-distortion optimization for advanced audio coding
KR101885258B1 (ko) * 2010-05-14 2018-08-06 삼성전자주식회사 비디오 신호의 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US8761240B2 (en) * 2010-07-13 2014-06-24 Blackberry Limited Methods and devices for data compression using context-based coding order
JP5612698B2 (ja) * 2010-10-05 2014-10-22 日本電信電話株式会社 符号化方法、復号方法、符号化装置、復号装置、プログラム、記録媒体
CN107425855B (zh) 2011-01-14 2021-02-02 Ge视频压缩有限责任公司 熵编码设备和方法、熵解码设备和方法、及存储介质
CN103329199B (zh) * 2011-01-25 2015-04-08 日本电信电话株式会社 编码方法、编码装置、周期性特征量决定方法、周期性特征量决定装置、程序、记录介质
US8942917B2 (en) 2011-02-14 2015-01-27 Microsoft Corporation Change invariant scene recognition by an agent
WO2012144128A1 (ja) 2011-04-20 2012-10-26 パナソニック株式会社 音声音響符号化装置、音声音響復号装置、およびこれらの方法
US9557836B2 (en) * 2011-11-01 2017-01-31 Microsoft Technology Licensing, Llc Depth image compression
WO2013101227A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Vector frequency compress instruction
CN103391433B (zh) * 2012-05-09 2017-07-18 腾讯科技(深圳)有限公司 视频编码帧内预测扫描方法及视频编码方法
DE102012211031B3 (de) 2012-06-27 2013-11-28 Siemens Aktiengesellschaft Verfahren zur Codierung eines Datenstroms
US9524725B2 (en) * 2012-10-01 2016-12-20 Nippon Telegraph And Telephone Corporation Encoding method, encoder, program and recording medium
US9749580B2 (en) * 2012-11-19 2017-08-29 Lg Electronics Inc. Signal transceiving apparatus and signal transceiving method
US9857470B2 (en) 2012-12-28 2018-01-02 Microsoft Technology Licensing, Llc Using photometric stereo for 3D environment modeling
US10043535B2 (en) 2013-01-15 2018-08-07 Staton Techiya, Llc Method and device for spectral expansion for an audio signal
US9940553B2 (en) 2013-02-22 2018-04-10 Microsoft Technology Licensing, Llc Camera/object pose from predicted coordinates
US9786269B2 (en) * 2013-03-14 2017-10-10 Google Inc. Language modeling of complete language sequences
US9607624B2 (en) * 2013-03-29 2017-03-28 Apple Inc. Metadata driven dynamic range control
US9245352B1 (en) 2013-04-12 2016-01-26 Google Inc. Systems and methods for near lossless image compression
US20140328406A1 (en) 2013-05-01 2014-11-06 Raymond John Westwater Method and Apparatus to Perform Optimal Visually-Weighed Quantization of Time-Varying Visual Sequences in Transform Space
US9495968B2 (en) * 2013-05-29 2016-11-15 Qualcomm Incorporated Identifying sources from which higher order ambisonic audio data is generated
US9626184B2 (en) * 2013-06-28 2017-04-18 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters
EP3057096B1 (en) * 2013-10-09 2019-04-24 Sony Corporation Encoding device and method, decoding device and method, and program
BR112016008117B1 (pt) 2013-10-18 2021-12-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Codificação de coeficientes espectrais de um espectro de um sinal de áudio
US10045135B2 (en) 2013-10-24 2018-08-07 Staton Techiya, Llc Method and device for recognition and arbitration of an input connection
US10043534B2 (en) 2013-12-23 2018-08-07 Staton Techiya, Llc Method and device for spectral expansion for an audio signal
ES2768090T3 (es) * 2014-03-24 2020-06-19 Nippon Telegraph & Telephone Método de codificación, codificador, programa y soporte de registro
EP2963949A1 (en) * 2014-07-02 2016-01-06 Thomson Licensing Method and apparatus for decoding a compressed HOA representation, and method and apparatus for encoding a compressed HOA representation
CN106463132B (zh) * 2014-07-02 2021-02-02 杜比国际公司 对压缩的hoa表示编码和解码的方法和装置
US10452658B2 (en) 2014-12-23 2019-10-22 Teradata Us, Inc. Caching methods and a system for entropy-based cardinality estimation
WO2016142002A1 (en) * 2015-03-09 2016-09-15 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding an audio signal and method for decoding an encoded audio signal
US10763893B2 (en) * 2016-07-20 2020-09-01 Georges Harik Method for data compression
KR102252298B1 (ko) * 2016-10-21 2021-05-14 삼성전자주식회사 표정 인식 방법 및 장치
US10735736B2 (en) 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression
US11177823B2 (en) * 2018-05-21 2021-11-16 Google Llc Data compression by local entropy encoding
US10475456B1 (en) * 2018-06-04 2019-11-12 Qualcomm Incorporated Smart coding mode switching in audio rate adaptation
US11257254B2 (en) * 2018-07-20 2022-02-22 Google Llc Data compression using conditional entropy models
CN111641826B (zh) * 2019-03-01 2022-05-20 杭州海康威视数字技术股份有限公司 对数据进行编码、解码的方法、装置与***
US11095311B2 (en) * 2019-11-27 2021-08-17 Qualcomm Incorporated Quantization codeword selection for low cost parity checking
JP2023540377A (ja) * 2020-09-09 2023-09-22 ヴォイスエイジ・コーポレーション 音コーデックにおける、非相関ステレオコンテンツの分類、クロストーク検出、およびステレオモード選択のための方法およびデバイス
FR3124671B1 (fr) * 2021-06-25 2023-07-07 Fond B Com Procédés de décodage et de codage d’une image, dispositifs et signal associés
CN113656906B (zh) * 2021-07-29 2023-10-03 浙江大学 一种面向燃气轮机的非平稳多变量因果关系分析方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253053A (en) * 1990-12-31 1993-10-12 Apple Computer, Inc. Variable length decoding using lookup tables
EP0663773A2 (en) * 1994-01-18 1995-07-19 Daewoo Electronics Co., Ltd Variable length coder using two VLC tables
WO2000036752A1 (en) * 1998-12-14 2000-06-22 Microsoft Corporation Variable to variable length entropy encoding
US6154572A (en) * 1996-03-28 2000-11-28 Microsoft, Inc. Table based compression with embedded coding
US20050015249A1 (en) * 2002-09-04 2005-01-20 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4420771A (en) 1981-02-09 1983-12-13 Bell Telephone Laboratories, Incorporated Technique for encoding multi-level signals
DE3750206C5 (de) * 1986-09-13 2019-11-14 Philips Gmbh Verfahren und Schaltungsanordung zur Bitratenreduktion.
US4730348A (en) * 1986-09-19 1988-03-08 Adaptive Computer Technologies Adaptive data compression system
US4698672A (en) 1986-10-27 1987-10-06 Compression Labs, Inc. Coding system for reducing redundancy
FR2618354B1 (fr) * 1987-07-20 1989-12-01 Sames Sa Installation de pulverisation de produit de revetement a commande manuelle et projecteur pneumatique d'un tel produit de revetement
US4968135A (en) 1987-08-17 1990-11-06 Digital Equipment Corporation System for producing pixel image data from CCITT encoded pixel data
US4792981A (en) 1987-09-21 1988-12-20 Am International, Inc. Manipulation of run-length encoded images
US4813056A (en) * 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
EP0339589A3 (en) * 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonal transform coding system for image data
US5043919A (en) * 1988-12-19 1991-08-27 International Business Machines Corporation Method of and system for updating a display unit
US5033087A (en) * 1989-03-14 1991-07-16 International Business Machines Corp. Method and apparatus for the automatic determination of phonological rules as for a continuous speech recognition system
DE3943879B4 (de) 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
FR2646978B1 (fr) * 1989-05-11 1991-08-23 France Etat Procede et installation a codage de signaux sonores
US5179442A (en) * 1989-06-02 1993-01-12 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
US5128758A (en) * 1989-06-02 1992-07-07 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
JPH0773249B2 (ja) * 1989-06-29 1995-08-02 富士通株式会社 音声符号化・復号化伝送方式
US5270832A (en) 1990-03-14 1993-12-14 C-Cube Microsystems System for compression and decompression of video data using discrete cosine transform and coding techniques
US5146324A (en) * 1990-07-31 1992-09-08 Ampex Corporation Data compression using a feedforward quantization estimator
JPH04199981A (ja) * 1990-11-29 1992-07-21 Nec Corp 即時処理型1次元符号器
US5266941A (en) 1991-02-15 1993-11-30 Silicon Graphics, Inc. Apparatus and method for controlling storage of display information in a computer system
JP2670201B2 (ja) * 1991-08-30 1997-10-29 富士写真フイルム株式会社 画像データ圧縮符号化装置および方法
JP2586260B2 (ja) 1991-10-22 1997-02-26 三菱電機株式会社 適応的ブロッキング画像符号化装置
US5227878A (en) * 1991-11-15 1993-07-13 At&T Bell Laboratories Adaptive coding and decoding of frames and fields of video
EP0547696B1 (fr) * 1991-12-18 1999-04-21 Laboratoires D'electronique Philips S.A.S. Système de transmission et/ou stockage de signaux correspondant à des images texturées
US5227788A (en) 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
CA2090052C (en) * 1992-03-02 1998-11-24 Anibal Joao De Sousa Ferreira Method and apparatus for the perceptual coding of audio signals
EP0559348A3 (en) * 1992-03-02 1993-11-03 AT&T Corp. Rate control loop processor for perceptual encoder/decoder
KR950010913B1 (ko) * 1992-07-23 1995-09-25 삼성전자주식회사 가변장부호화 및 복호화시스템
US5714950A (en) * 1992-07-23 1998-02-03 Samsung Electronics Co., Ltd. System for variable-length-coding and variable-length-decoding digitaldata
JP3348310B2 (ja) * 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
CA2107727C (en) * 1992-10-07 1999-06-01 Hiroaki Ueda Synchronous compression and reconstruction system
US5982437A (en) 1992-10-26 1999-11-09 Sony Corporation Coding method and system, and decoding method and system
JP2959916B2 (ja) * 1992-10-28 1999-10-06 松下電器産業株式会社 デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ
KR0166722B1 (ko) 1992-11-30 1999-03-20 윤종용 부호화 및 복호화방법 및 그 장치
US5467134A (en) 1992-12-22 1995-11-14 Microsoft Corporation Method and system for compressing video data
JP2922376B2 (ja) * 1992-12-26 1999-07-19 キヤノン株式会社 シート厚測定装置
US5535305A (en) * 1992-12-31 1996-07-09 Apple Computer, Inc. Sub-partitioned vector quantization of probability density functions
US5400075A (en) * 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
US5544286A (en) * 1993-01-29 1996-08-06 Microsoft Corporation Digital video data compression technique
TW224553B (en) * 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
US5376968A (en) 1993-03-11 1994-12-27 General Instrument Corporation Adaptive compression of digital video data using different modes such as PCM and DPCM
US5408234A (en) * 1993-04-30 1995-04-18 Apple Computer, Inc. Multi-codebook coding process
ATE211326T1 (de) * 1993-05-31 2002-01-15 Sony Corp Verfahren und vorrichtung zum kodieren oder dekodieren von signalen und aufzeichnungsmedium
US5664057A (en) * 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
US5590960A (en) * 1993-11-04 1997-01-07 E. I. Du Pont De Nemours And Company One tank paint makeup process using a recirculation loop with liquid injection
KR0155784B1 (ko) * 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
US5504591A (en) * 1994-04-25 1996-04-02 Microsoft Corporation System and method for compressing graphic images
US5457495A (en) 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US6141446A (en) * 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US5568167A (en) 1994-09-23 1996-10-22 C-Cube Microsystems, Inc. System for providing antialiased video overlays
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5802213A (en) * 1994-10-18 1998-09-01 Intel Corporation Encoding video signals using local quantization levels
HU215685B (hu) * 1994-11-04 1999-02-01 Koninklijke Philips Electronics N.V. Eljárás és berendezés széles sávú digitális adatjelek kódolására és dekódolására
JP3371590B2 (ja) 1994-12-28 2003-01-27 ソニー株式会社 高能率符号化方法及び高能率復号化方法
US5574449A (en) 1995-02-24 1996-11-12 Intel Corporation Signal processing with hybrid variable-length and entropy encodidng
US5991451A (en) 1995-03-23 1999-11-23 Intel Corporation Variable-length encoding using code swapping
US5884269A (en) * 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US6026182A (en) 1995-10-05 2000-02-15 Microsoft Corporation Feature segmentation
US5819215A (en) 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data
US5889891A (en) * 1995-11-21 1999-03-30 Regents Of The University Of California Universal codebook vector quantization with constrained storage
JP3283413B2 (ja) 1995-11-30 2002-05-20 株式会社日立製作所 符号化復号方法、符号化装置および復号装置
US5956674A (en) 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
JPH09162748A (ja) * 1995-12-01 1997-06-20 Fujitsu Ltd データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム
US5831559A (en) 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
US6957350B1 (en) * 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5682152A (en) * 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5812971A (en) 1996-03-22 1998-09-22 Lucent Technologies Inc. Enhanced joint stereo coding method using temporal envelope shaping
US5850482A (en) 1996-04-17 1998-12-15 Mcdonnell Douglas Corporation Error resilient method and apparatus for entropy coding
CN1143551C (zh) 1996-05-28 2004-03-24 松下电器产业株式会社 图像预测解码装置
DE19628293C1 (de) * 1996-07-12 1997-12-11 Fraunhofer Ges Forschung Codieren und Decodieren von Audiosignalen unter Verwendung von Intensity-Stereo und Prädiktion
DE19628292B4 (de) * 1996-07-12 2007-08-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
US5828426A (en) 1996-08-20 1998-10-27 Samsung Electronics Co., Ltd. Apparatus for decoding variable length coded data of both MPEG-1 and MPEG-2 standards
JP3318825B2 (ja) * 1996-08-20 2002-08-26 ソニー株式会社 デジタル信号符号化処理方法、デジタル信号符号化処理装置、デジタル信号記録方法、デジタル信号記録装置、記録媒体、デジタル信号伝送方法及びデジタル信号伝送装置
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US5748789A (en) * 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems
CN1136733C (zh) * 1996-11-06 2004-01-28 松下电器产业株式会社 图象解码方法
ATE246858T1 (de) * 1996-11-11 2003-08-15 Koninkl Philips Electronics Nv Datenkompression und -dekompression durch rice- kodierer/-dekodierer
JP3484310B2 (ja) 1997-01-17 2004-01-06 松下電器産業株式会社 可変長符号器
NL1005084C2 (nl) * 1997-01-24 1998-07-27 Oce Tech Bv Werkwijze voor het uitvoeren van een beeldbewerkingsoperatie op looplengte gecodeerde bitmaps.
US6038536A (en) * 1997-01-31 2000-03-14 Texas Instruments Incorporated Data compression using bit change statistics
US6272175B1 (en) * 1997-02-13 2001-08-07 Conexant Systems, Inc. Video signal coding systems and processes using adaptive quantization
US6005980A (en) * 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5974184A (en) 1997-03-07 1999-10-26 General Instrument Corporation Intra-macroblock DC and AC coefficient prediction for interlaced digital video
FI114248B (fi) * 1997-03-14 2004-09-15 Nokia Corp Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen
US6728775B1 (en) * 1997-03-17 2004-04-27 Microsoft Corporation Multiple multicasting of multimedia streams
US6404813B1 (en) * 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US5883633A (en) 1997-04-15 1999-03-16 Microsoft Corporation Method and system of variable run length image encoding using sub-palette
US6259810B1 (en) * 1997-04-15 2001-07-10 Microsoft Corporation Method and system of decoding compressed image data
US6580834B2 (en) * 1997-05-30 2003-06-17 Competitive Technologies Of Pa, Inc. Method and apparatus for encoding and decoding signals
DE19730129C2 (de) * 1997-07-14 2002-03-07 Fraunhofer Ges Forschung Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals
US6421738B1 (en) 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
JPH11161782A (ja) * 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US6111914A (en) * 1997-12-01 2000-08-29 Conexant Systems, Inc. Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes
US5946043A (en) * 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
US6226407B1 (en) * 1998-03-18 2001-05-01 Microsoft Corporation Method and apparatus for analyzing computer screens
US6054943A (en) * 1998-03-25 2000-04-25 Lawrence; John Clifton Multilevel digital information compression based on lawrence algorithm
US6408029B1 (en) * 1998-04-02 2002-06-18 Intel Corporation Method and apparatus for simplifying real-time data encoding
EP1114395A1 (en) * 1998-06-19 2001-07-11 Equator Technologies, Inc. Decoding an encoded image having a first resolution directly into a decoded image having a second resolution
JP3413720B2 (ja) * 1998-06-26 2003-06-09 ソニー株式会社 画像符号化方法及び装置、並びに画像復号方法及び装置
US6253165B1 (en) * 1998-06-30 2001-06-26 Microsoft Corporation System and method for modeling probability distribution functions of transform coefficients of encoded signal
DE19840835C2 (de) * 1998-09-07 2003-01-09 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern
WO2000021199A1 (fr) * 1998-10-06 2000-04-13 Matsushita Electric Industrial Co., Ltd. Procede et dispositif de codage a compression sans perte, et procede et dispositif de decodage a compression sans perte
US6404931B1 (en) * 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6300888B1 (en) * 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6100825A (en) * 1998-12-31 2000-08-08 Microsoft Corporation Cluster-based data compression system and method
US6678419B1 (en) * 1999-03-26 2004-01-13 Microsoft Corporation Reordering wavelet coefficients for improved encoding
US6573915B1 (en) * 1999-12-08 2003-06-03 International Business Machines Corporation Efficient capture of computer screens
US6567781B1 (en) * 1999-12-30 2003-05-20 Quikcat.Com, Inc. Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function
JP2001236088A (ja) * 2000-02-22 2001-08-31 Mitsubishi Electric Corp 統計的言語モデル作成装置、統計的言語モデル作成方法及び統計的言語モデル作成プログラムが記述された記録媒体
US6636168B2 (en) * 2000-05-23 2003-10-21 Matsushita Electric Industrial Co., Ltd. Variable length coding method and variable length coding apparatus
US6542863B1 (en) * 2000-06-14 2003-04-01 Intervideo, Inc. Fast codebook search method for MPEG audio encoding
JP4508490B2 (ja) * 2000-09-11 2010-07-21 パナソニック株式会社 符号化装置および復号化装置
US6961685B2 (en) * 2000-09-19 2005-11-01 Sy Bon K Probability model selection using information-theoretic optimization criterion
US6587057B2 (en) * 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US20030033143A1 (en) * 2001-08-13 2003-02-13 Hagai Aronowitz Decreasing noise sensitivity in speech processing under adverse conditions
US7165028B2 (en) * 2001-12-12 2007-01-16 Texas Instruments Incorporated Method of speech recognition resistant to convolutive distortion and additive distortion
US6934677B2 (en) * 2001-12-14 2005-08-23 Microsoft Corporation Quantization matrices based on critical band pattern information for digital audio wherein quantization bands differ from critical bands
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7328150B2 (en) * 2002-09-04 2008-02-05 Microsoft Corporation Innovations in pure lossless audio compression
JP4728568B2 (ja) * 2002-09-04 2011-07-20 マイクロソフト コーポレーション レベル・モードとラン・レングス/レベル・モードの間での符号化を適応させるエントロピー符号化
US7502743B2 (en) * 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
US7424434B2 (en) * 2002-09-04 2008-09-09 Microsoft Corporation Unified lossy and lossless audio compression
ATE543179T1 (de) * 2002-09-04 2012-02-15 Microsoft Corp Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus
AU2003290536A1 (en) * 2002-10-23 2004-05-13 Divxnetworks, Inc. Method and system for supercompression of compressed digital video
US7324927B2 (en) * 2003-07-03 2008-01-29 Robert Bosch Gmbh Fast feature selection method and system for maximum entropy modeling
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253053A (en) * 1990-12-31 1993-10-12 Apple Computer, Inc. Variable length decoding using lookup tables
EP0663773A2 (en) * 1994-01-18 1995-07-19 Daewoo Electronics Co., Ltd Variable length coder using two VLC tables
US6154572A (en) * 1996-03-28 2000-11-28 Microsoft, Inc. Table based compression with embedded coding
WO2000036752A1 (en) * 1998-12-14 2000-06-22 Microsoft Corporation Variable to variable length entropy encoding
US20050015249A1 (en) * 2002-09-04 2005-01-20 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes

Also Published As

Publication number Publication date
MX2008000524A (es) 2008-03-06
NO20076261L (no) 2008-02-06
WO2007011653A2 (en) 2007-01-25
EP1905000A2 (en) 2008-04-02
EP1905000A4 (en) 2009-08-26
KR20080025399A (ko) 2008-03-20
AU2006270259A1 (en) 2007-01-25
CA2612537C (en) 2014-09-09
US7599840B2 (en) 2009-10-06
WO2007011653A3 (en) 2007-06-07
AU2006270259B2 (en) 2011-03-03
ATE536001T1 (de) 2011-12-15
CN101223573B (zh) 2011-07-27
CN101223573A (zh) 2008-07-16
KR101278805B1 (ko) 2013-06-25
ES2378393T3 (es) 2012-04-12
US20070016418A1 (en) 2007-01-18
EP1905000B1 (en) 2011-11-30
JP5085543B2 (ja) 2012-11-28
CA2612537A1 (en) 2007-01-25
JP2009501943A (ja) 2009-01-22

Similar Documents

Publication Publication Date Title
NO341186B1 (no) Selektiv anvendelse ved bruk av flere entropimodeller i adaptiv koding og dekoding
US7684981B2 (en) Prediction of spectral coefficients in waveform coding and decoding
US7693709B2 (en) Reordering coefficients for waveform coding or decoding
KR101130355B1 (ko) 넓은-뜻의 지각적 유사성을 이용하는 디지털 미디어 스펙트럼 데이터의 효과적인 코딩
US7433824B2 (en) Entropy coding by adapting coding between level and run-length/level modes
US7822601B2 (en) Adaptive vector Huffman coding and decoding based on a sum of values of audio data symbols
US7383180B2 (en) Constant bitrate media encoding techniques
KR101143225B1 (ko) 오디오 인코더 및 오디오 디코더에서의 컴퓨터 구현 방법및 컴퓨터 판독 가능 매체
US7774205B2 (en) Coding of sparse digital media spectral data
US20080312759A1 (en) Flexible frequency and time partitioning in perceptual transform coding of audio
NO340485B1 (no) Modifikasjon av kodeord i ordbok anvendt for effektiv koding av spektraldata fra digitale media
KR20080025403A (ko) 디지털 미디어의 효율적인 코딩을 위한 대역을 획득하기위한 주파수 세그먼트화
JP2011522291A (ja) オーバーラッピング変換の2つのブロック変換への因数分解

Legal Events

Date Code Title Description
CHAD Change of the owner's name or address (par. 44 patent law, par. patentforskriften)

Owner name: MICROSOFT TECHNOLOGY LICENSING, US