NO332357B1 - Implementering av run/level-koding - Google Patents

Implementering av run/level-koding Download PDF

Info

Publication number
NO332357B1
NO332357B1 NO20101088A NO20101088A NO332357B1 NO 332357 B1 NO332357 B1 NO 332357B1 NO 20101088 A NO20101088 A NO 20101088A NO 20101088 A NO20101088 A NO 20101088A NO 332357 B1 NO332357 B1 NO 332357B1
Authority
NO
Norway
Prior art keywords
positions
zigzag
raster
zero
run
Prior art date
Application number
NO20101088A
Other languages
English (en)
Other versions
NO20101088A1 (no
Inventor
Lars Petter Endresen
Stian Selnes
Original Assignee
Cisco Tech Inc
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 Cisco Tech Inc filed Critical Cisco Tech Inc
Priority to NO20101088A priority Critical patent/NO332357B1/no
Priority to PCT/NO2011/000212 priority patent/WO2012015312A1/en
Priority to US13/194,183 priority patent/US20120027081A1/en
Publication of NO20101088A1 publication Critical patent/NO20101088A1/no
Publication of NO332357B1 publication Critical patent/NO332357B1/no

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Abstract

SAMMENDRAG Den foreliggende oppfinnelsen vedrører en implementering av en prosess for å representere transformkoeffisienter i komprimering/dekomprimering i digitale videosystemer i prosessorer for flere formål. Den tilveiebringer en fremgangsmåte som på betydelig måte reduserer den nødvendige prosessorkapasiteten sammenliknet med implementering i henhold til tidligere kjent teknikk.

Description

Område for oppfinnelsen
Oppfinnelsen vedrører implementering av entropikoding/-dekoding av transformkoeffisientdata i videokompresjonssystemer i datamaskininnretninger.
Bakgrunn for oppfinnelsen
Transmisjon av bevegelige bilder i sann tid anvendes i flere applikasjoner, slik som f.eks. videokonferanser, nettmøter, TV-kringkasting og videotelefoni.
Å representere bevegelige bilder krever imidlertid store mengder informasjon, idet digital video typisk beskrives ved representasjon av hver piksel i et bilde med 8 bits (1 byte). Slike ukomprimerte videodata resulterer i store bitvolumer, og kan ikke overføres over konvensjonelle kommunikasjonsnettverk og transmisjonslinjer i sann tid på grunn av begrenset båndbredde.
Muliggjøring av sanntids videotransmisjon krever således en stor grad av datakompresjon. Datakompresjon kan imidlertid gå på bekostning av bildekvalitet. Derfor er det lagt et stort arbeid i utvikling av kompresjonsteknikker som tillater sanntidstransmisjon av høykvalitetsvideo over båndbreddebegrensede dataforbindelser.
I videokompresjonssystemer er hovedmålet å representere videoinformasjon med så liten kapasitet som mulig. Kapasitet er definert med bits, enten som en fast verdi eller som bits/tidsenhet. I begge tilfeller er hovedmålet å redusere antallet bits.
De mest utbredte videokodingsmetodene er beskrevet i standardene MPEG<*>og H.26<*>. Videodataene gjennomgår fire hovedprosesser før transmisjon, nemlig prediksjon, transformasjon, kvantisering og entropikoding.
Prediksjonsprosessen reduserer signifikant mengden av bits som er påkrevet for at hvert bilde i en videosekvens skal overføres. Den drar fordel av likheten mellom deler av sekvensen og andre deler av sekvensen. Siden prediktordelen er kjent for både koderen og dekoderen, behøver bare forskjellen overføres. Denne forskjellen krever typisk mye mindre kapasitet for sin representasjon. Prediksjonen er i hovedsak basert på vektorer som representerer bevegelser. Prediksjonsprosessen utføres typisk på kvadratiske blokkstørrelser (f.eks. 16x16 piksler). Bemerk at i enkelte tilfeller anvendes prediksjoner av piksler basert på tilstøtende piksler i samme bilde, i stedet for piksler i foregående bilder. Dette omtales som intraprediksjon, i motsetning til interprediksjon.
Residualet representert som en datablokk (f.eks. 4x4 piksler) inneholder fortsatt intern korrelasjon. En velkjent metode for å dra fordel av dette, er å utføre en todimensjonal blokktransform. I H.263 anvendes en 8x8 diskret cosinustransform, mens H.264 anvender en 4x4 heltallstype transform. Denne transformerer 4x4 piksler til 4x4 transformkoeffisienter, og disse kan vanligvis representeres med færre bits enn pikselrepresentasjonen. Transformasjon av en 4x4-oppstilling av piksler med intern korrelasjon vil sannsynligvis resultere i en 4x4-blokk med transformasjonskoeffisienter med mye færre ikke-nullverdier enn den originale 4x4-pikselblokken.
Direkte representasjon av transformasjonskoeffisientene er fortsatt for kostbart for mange anvendelser. En kvantiseringsprosess utføres for en ytterligere reduksjon av datarepresentasjonen. Følgelig gjennomgår transformasjonskoeffisientene kvantisering. En enkel versjon av kvantisering er å dividere parameterverdier med et tall - hvilket resulterer i et mindre tall som kan representeres med færre bits. Det skal nevnes at denne kvantiseringsprosessen har som resultat at den rekonstruerte videosekvensen er noe forskjellig fra den ukomprimerte sekvensen. Dette fenomenet omtales som "tapskoding" (eng: "lossy coding"). Resultatet fra kvantiseringsdelen omtales som kvantiserte transformasjonskoeffisienter.
Entropikoding er en spesiell form for tapsfri datakomprimering. Den involverer bl.a. anordning av bildekomponentene i en "sikksakk-"rekkefølge som anvender run-length encoding- (RLE-) algoritme som grupperer liknende frekvenser sammen, innsetter lengdekoding-nuller, og deretter benytter Huffman-koding på det gjenværende.
I H.264-koding blir DCT-koeffisientene for en blokk re-ordnet for å gruppere sammen ikke-null-koeffisienter i en gruppe (eng.: an array), noe som muliggjør effektiv representasjon av de gjenværende null-verdi-koeffisientene. Sikksakk-omordnings-banen (eng.: the zigzag reordering path; skanningsrekkefølge) er vist i figur 1. Mønsteret for rekkefølgen av sikk-sakk-skanningen er konfigurert i samsvar med sannsynligheten for ikke-null koeffisienter i hvert posisjon. På grunn av karakteristikkene til den foregående DCT, minsker sannsynligheten for ikke-null-koeffisienter i en blokk i den nedadgående høyre diagonale retning for en DCT-blokk. Ved re-ordning av koeffisientene i et sikksakk-mønster som illustrert i figur 1, vil ikke-null koeffisientene tendere til å konsentrere seg i de første posisjonene i gruppen (eng.: the array).
Resultatet av re-ordningsprosessen er altså en endimensjonal array som vanligvis inneholder en eller flere klynger av ikke-null-koeffisienter nær start, etterfulgt av strenger med null-koeffisienter. På grunn av det store antallet nullverdier, blir gruppen videre representert som en serie av (run, level)-par der run angir antall nuller som går foran en nullkoeffisient, og level angir magnituden av ikke-null-koeffisienten. Som et eksempel vil inngangs-gruppen 16, 0, 0, -3, 5, 6, 0, 0, 0, 0, -7, ... vil ha følgende korresponderende run-level-verdier: (0,16), (2, -3), (0,5), (0,6), (4, -7)...
Når sikksakk-gruppen transformeres til run-level-verdier, er det beregningsmessig kostbart å gjennomkjøre alle koeffisienter og sjekke om de er ikke-null. Ettersom bilde oppløsningen øker, vil dette kreve en betydelig mengde prosessorkapasitet og til og med introdusere for mye forsinkelse, spesielt hvis kodingsprosessen implementeres på generelle, delte prosessorer, f.eks. på personlige datamaskiner. WO-2010/077148 beskriver en implementasjon av en prosess for å representere transformkoeffisienter ved komprimering/dekomprimering av digitale videosystemer i fleranvendelsesprosessorer. Kvantiserte transform koeffisienter som representerer en blokk av piksler i en videobilde er pakket til den halve minnestørrelsen, og deretter maskert, for derved å generere en gruppe av 1-ere og 0-er som definere posisjonene av ikke-null koeffisienter i den tilsvarende gruppen av pakkede transformkoeffisienter. Denne klargjøringen unngår parsing gjennom posisjoner i arrayen av transformkoeffisienter der null-verdier forekommer ved generering av run-level-representasjoner av koeffisientene, og dermed reduseres vesentlig redusere det nødvendige antall sløyfer som skal utføres. Denne metoden krever imidlertid at en viss shuffle-funksjon-re-ordningsdata-oppføringer er tilgjengelig i minnet for enhver re-ordning, som en hardkodet prosess i prosessoren. Denne funksjonen er p.t. bare tilgjengelig i nye generasjoners Intel-prosessorer. Dermed er det behov for en alternativ metode som trengs for å utnytte effektiviteten av denne oppfinnelsen også uten tilgang til shuffle-funksjonen.
US-2008/046698 vedrører en fremgangsmåte for videodatakoding som innbefatter bl.a. kvantisering av romlige frekvenskoeffisienter for hver blokk i en ramme, og generering av en maske som har en bit for hver romlige frekvens i blokken.
Sammenfatning av oppfinnelsen
Foreliggende oppfinnelse tilveiebringer en fremgangsmåte i en videokodings- eller
-dekodingsprosess i en datamaskininnretning for beregning av run- og level-representasjoner av respektive kvantiserte transformkoeffisienter som representerer pikselverdier i en blokk i et videobilde som er innsatt rad for rad i en endimensjonal gruppe C, hvor fremgangsmåten innbefatter trinnene å pakke hver kvantisert transformkoeffisient i C i et verdiintervall ([Max, Min]) ved å sette alle kvantiserte transformkoeffisienter større enn Max til å være lik Max, og alle kvantiserte transformkoeffisienter mindre enn Min til å være lik Min, å maskere C ved å generere en gruppe M som inneholder 1-ere i posisjoner som korresponderer med posisjonene til C som har ikke-null-verdier, og O-er i posisjoner som korresponderer med posisjoner i C som har null-verdier, å sette en nåværende rasterposisjon til null, hvor en rasterposisjon refererer til en rasterskanningsrekkefølge av koeffisientene i blokken, og for hver posisjon som inneholder en l-er i M, å avlede en nåværende sikksakk-posisjon fra nåværende rasterposisjon ved hjelp av en tabell som mapper rasterposisjoner til sikksakk-posisjoner, der en sikksakk-posisjon refererer til en sikksakk-skanningsrekkefølge av koeffisientene i blokken, og hvis nåværende sikksakk-posisjon ikke er null, og hvis nåværende sikksakk-posisjon minus siste sikksakk-posisjon minus 1 er mindre enn null, å forkaste alle lagrede runs og levels og å beregne nye runs og levels med en alternativ reservemetode, og hvis ikke, å sette run lik nåværende sikksakk-posisjon minus siste sikksakk-posisjon minus 1, og level lik forekommende verdi i posisjonen i C som tilsvarer nåværende raster-
posisjon, å lagre run og level, å sette siste sikksakk-posisjon lik nåværende sikksakk-posisjon, og å inkrementere nåværende rasterposisjon med antall posisjoner frem til neste l-er i M.
Kort beskrivelse av tegningene
For å gjøre oppfinnelsen enklere å forstå, og vi den følgende drøftingen vise til de medfølgende tegninger. Figur 1 illustrerer sikksakk-mønsteret som er brukt i tidligere kjent teknikk for å ordne transformkoeffisienter før entropikoding, Figur 2 illustrerer raster-skanningsmønster som anvendes i den foreliggende oppfinnelsen, Figur 3 er et flytskjema som illustrerer hvordan run-level-koding beregnes i henhold til MPEG4 og H.264, Figur 4 er et flytskjema som illustrerer en metode av typen beskrevet i WO-2010/077148, og Figur 5 er et flytskjema som illustrerer en eksempelimplementering i henhold til den foreliggende oppfinnelsen.
Detaljert beskrivelse av oppfinnelsen
I den etterfølgende beskrivelsen vil det vises til noen standardfunksjoner i biblioteket for den generelle programmeringsspråket C++, og som er direkte koblet til kompakte og effektive lavnivå-CPU-instruksjoner. C++ er mye brukt i programvareindustrien. Noen av dets anvendelsesområder innbefatter systemprogramvare, device-drivere, innebygd (eng.: embedded) programvare, høyytelses-server- og -klient-applikasjoner, og underholdnings-software, samt software for implementering av koding og dekoding av sanntidsvideo i generelle datamaskiner.
Figur 3 er et flytskjema som illustrerer hvordan run-level-kode i henhold til MPEG4 og H.264 beregnes i en første implementasjon i henhold til tidligere kjent teknikk. Etter kvantisering av transformkoeffisientene (Quant C) i en blokk, blir de kvantiserte koeffisienter om-ordnet til en endimensjonal gruppe (eng.: array) i henhold til det tidligere nevnte sikksakk-mønsteret. Prosessen går deretter inn i en sløyfe for parsing av gruppen for fastsettelse av run-level-verdier. Først sjekkes om antall posisjoner i gruppen er overskredet (I > 16). Hvis ikke, sjekkes hvorvidt nåværende posisjon i tabellen inneholder en null. I så fall blir både Run-variabelen og posisjonsindeksen (I) inkrementert, og prosessen går videre til starten av loopen igjen. Hvis ikke (nåværende posisjon inneholder en annen verdi enn null), blir den nåværende Run-variabelen og verdien av nåværende posisjon lagret som Run-Level verdi. Run-variabelen blir da nullstilt, før både Run-variabelen og posisjonsindeksen (I) inkrementeres, og prosessen går til starten av sløyfen igjen.
Prosessen avsluttes når posisjonsindeksen overskrider den maksimale størrelsen på gruppen, som i eksempelet illustrert i figur 3 er 16.
Slik det kan sees fra eksempelet på en tidligere kjent implementasjon som illustrert i figur 3, må den alltid kjøre gjennom run-level-kodings-sløyfen så mange ganger som det finnes posisjoner i gruppen (16 ganger i eksempelet). Dette blir svært ineffektivt, idet de fleste koeffisientene i C er null, og det er beregningsmessig kostbart å gjennomløpe over alle koeffisienter og sjekke om de er ikke-null.
Figur 4 er et flytskjema som illustrerer en andre implementasjon i henhold til den ovennevnte metoden beskrevet i WO-2010/077148.1 denne implementasjonen benyttes bit-masker og bit-scan-instruksjoner som gjør det mulig effektivt å hoppe over alle nullverdi-koeffisientene. Det starter ved kvantisering av transformkoeffisientene i blokken. I eksemplet er det 16 koeffisienter som er lagret i vektoren C.
Prosessen fortsetter så med pakking og re-ordning alle de kvantiserte koeffisientene. Dette gjøres av C++instruksjonen PACKUSWB, som transformerer 16 ord med fortegn (eng.: signed words) til heltall uten fortegn, med metning. Dette betyr at hvis en koeffisient er større eller mindre enn omfanget av en byte uten fortegn, settes koeffisienten til henholdsvis max- eller min-verdien for området, som i denne implementeringen er 255 og 0. På denne måten blir minnestørrelsen for hver koeffisient redusert fra to til én byte.
Neste trinn er å maskere de kvantiserte, pakkede og re-ordnede koeffisientene. Dette gjøres ved f.eks. å anvende C++funksjonene PCMPGTB og PMOVMSKB. PCMPGTB-funksjonen fyller en hel byte av 1-ere i posisjonen for ikke-null-verdier, og lar O-ene forbli uendret i nullenes posisjon. PMOVMSKB-funksjonen oppretter en 16-bits maske fra de mest signifikante bits av 16 bytes. Resultatet av disse to funksjonene, når de brukes på gruppen av kvantiserte, pakkede og re-ordnede koeffisienter (C), er en 16-bits gruppe (M) hvor l'ere indikerer korresponderende posisjoner av ikke-null-verdiene i C.
Hvis M er ikke-null, kan C++funksjonen BSF brukes til å beregne indeksen for de første ikke-null-verdiene i C. BSF returnerer bit-indeksen for den minst signifikante bit av et heltall, dvs. - i tilfelle av M - den første plasseringen av en 1, startende fra høyre side.
Derfor er denne indeksen returnert av BSF, når den brukes på M, lik run, og den brukes direkte som oppslag i C-gruppen for å bestemme level. Dette er mulig siden C allerede er stokket ved bruk av PSHUFB-instruksjonen.
Æww-verdien som angitt av BSF-funksjonen blir så lagret, og etter oppslag, blir verdien lokalisert ved denne posisjonen i C lagret som nivået level.
M blir endelig forskjøvet til høyre run+ 1 ganger for å nullstille indeksbiten fra M og forberede M for neste iterasjon i sløyfen. Ved å gjøre dette, vil innholdet i M som samsvarer med allerede beregnede Run-Level-verdier, bli fjernet fra M, og sløyfen kan anvendes på samme måte for å beregne de gjenværende Run-Level-verdier.
Siden alle nullene effektivt blir hoppet over ved bruk av BSF-instruksjonen, er bare ikke-null-koeffisient-kjøringer nødvendig for å beregne alle level- og rww-verdier.
Den foreliggende oppfinnelsen er bl.a. basert på den observasjonen at runs av null-koeffisienter i 4x4 raster-skanning som illustrert i figur 2, i praksis oftest er ekvivalent med runs i 4x4 sikksakk-orden som illustrert i figur 1.1 de tilfeller der et kriterium for denne konverteringen er oppfylt, benytter en metode som likner den andre implementeringen i henhold til teknikkens stilling som beskrevet, men med shuffle-funksjonen utelatt, og i de tilfeller der et kriterium for denne konverteringen ikke er oppfylt, benyttes en reserve-metode f.eks i henhold til den første implementeringen av teknikkens beskrevet ovenfor. Virkninger er at sikksakk-skanning i de fleste tilfeller ikke utføres, men bare den mer effektive raster-skanning og en run-konvertering for ikke-null koeffisientene.
Run-konvertering er gyldig for alle tilfeller der ikke-null koeffisientene opptrer i samme rekkefølge for begge skanninger. I teorien er dette ikke det mest sannsynlige tilfellet, alle mulige permutasjoner tatt i betraktning, men i praksis er det. Målinger gjort av oppfinnerne har vist at ikke-null-koeffisienter opptrer i den samme rekkefølge for begge skanninger i 98,5% av kodingstiden.
Ifølge visse aspekter av den foreliggende oppfinnelsen, hvis koeffisienter med raster-skanningsindeks 0, 1, 4 og 5 er ikke-null, så vil begge skanninger returnere de fire koeffisientene i samme rekkefølge, men med forskjellige runs. Raster-skannings-runs kan deretter konverteres til ekvivalente sikksakk-runs. Som det fremgår av figurene 1 og 2, gjelder følgende mapping mellom rasterskanningspos isj onene og sikksakk-skanningsposisjonene: 0-0, 1-1, 2-5, 3-6, 4-2, 5-4, 6 -7, 7-12, 8-3, 9-8, 10-11, 11-13, 12-9, 13-10, 14-14, 15-15.1 eksempelet ovenfor, når runs for en rasterskanning indikerer ikke-nuller for skanningsindeks 0, 1, 4 og 5, vil denne mappingen innebære 0, 1, 2 og 4 som tilsvarende sikksakk-skanningsindeks. Derfor, når rekkefølgen av ikke-nuller er de samme for raster-skanning og sikksakk-skanning, kan den andre og mest effektive tidligere kjente implementering beskrevet ovenfor benyttes, men det er ikke noe behov for å endre rekkefølgen på koeffisientene, og shuffle-funksjonen kan utelates.
Hvis for eksempel raster-skanningsindeksene 0, 2 og 4 derimot er ikke-null, vil rekkefølgen som de fremtrer i, være forskjellig for de to skanningene, og siden shuffle-funksjonen ikke er tilgjengelig, må en reservemetode, for eksempel etter den første implementering i henhold til den tidligere kjente teknikken som beskrevet ovenfor, brukes.
Kriteriet for å utløse reserveløsningen er å teste om et beregnet run for rasterskanningsrekkefølgen gir et negativt resultat.
Run-beregningen utføres ved å måle om en eller flere run-verdier i rasterskanningsrekkefølgen er negativ ved bruk av tilsvarende sikksakk-skanningsindeks i beregningen. Altså avledes gjeldende rasterskanningsindeks, og den tilordnes til den korresponderende sikksakk-indeksen, ved bruk av en normal sikksakk-tabell som definert i H.264-anbefalingen. Beregningen er beskrevet i detalj i det følgende.
La XK betegne sikksakk-posisjonen til ikke-null-koeffisientene der k indekserer forekomsten av ikke-null-koeffisienter. La videre Rkbetegne run-verdien for k'te forekomsten av en ikke-null-verdi i sikksakk-skanningsrekkefølgen, R'k run-verdien av den k'te forekomsten av en ikke-null verdi i rasterskanningsrekkefølgen ved bruk av sikksakk-skanning-indeks i beregningen. N er den siste k indeks slik at N+l er det totale antall ikke-nuller. En run-verdi for en ikke-nullkoeffisientposisjonXkkan beregnes somXk-Xk-i - 1. For sikksakk-skanningsrekkefølgen er dette alltid en positiv verdi, siden
Den totale run RT for N +1 runs, Men generelt kan rasterskanningsrekkefølgen av ikke-null-koeffisientene imidlertid være forskjellig fra sikksakk-skanningsrekkefølgen. Ved bruk av sikksakk-posisjonene xki beregningen av korresponderende rasterposisjoner, vil dette alltid føre til minst én negativ rasterskanning-run, siden enhver permutasjon av posisjonene i (1) vil være i strid med (1). Betrakt for eksempel tre ikke-null-koeffisienter og at sikksakk-rekkefølgen returnerer xo, xi,X2, mens rasterskanningen returnerer xo,X2, xi. Den totale run for de to tilfellene blir da
Den forrige run R'2i (4) er negativ, siden xi <X2. Derfor er kriteriet for reservemetoden utløst.
Figur 5 er et flytskjema som illustrerer en eksempel-implementering i henhold til den foreliggende oppfinnelsen. Som tidligere angitt, kan prosedyren ha en viss likhet med den andre gjennomføring av kjent teknikk som beskrevet ovenfor, men uten behov for å re-ordne data, siden dataene prosesseres i rasterskannings-rekkefølgen, som er den samme rekkefølgen som dataene allerede er lagret med i minnet. Forskjellene er forklart nedenfor. Derfor bør figur 5 og den følgende beskrivelse leses i sammenheng med den øvrige beskrivelsen, spesielt figur 4 og den korresponderende beskrivelsen ovenfor.
I "Quant C" kvantiseres de transformerte koeffisientene til en 4x4-blokk C. C er ganske enkelt en endimensjonal datagruppe hvor koeffisientene er satt inn fortløpende rad etter rad, med start fra øverste rad i blokken. Koeffisientene er dermed ordnet i en rasterskannings-rekkefølge. "Mask M = C" oppretter en 16-bits maske M fra pakkekoeffisientene C, der en 1-bit angir en ikke-null-koeffisient. I beslutningsboksen "M = 0" avsluttes prosedyren når det ikke er flere ikke-null-koeffisienter igjen å prosessere. "Sean M" skanner masken M for å finne raster-run R'k. I "Avled Run" avledes run Rkfra R'k via raster-indekskalkulering og sikksakk-tabelloppslag. I beslutningsboksen "Run <0", blir det besluttet om det skal falles tilbake til en konvensjonell run-levelkoding i henhold til den første implementeringen av kjent teknikk som beskrevet ovenfor og illustrert i fig 5, ignorere de tidligere lagrede runs og levels, eller å fortsette ved å lagre nåværende level og deretter gå i sløyfe tilbake til beslutningsboksen "M = 1". Beslutningen om å falle tilbake, gjøres hvis en negativ run Rker detektert.

Claims (7)

1. Fremgangsmåte i en videokodings- eller -dekodingsprosess i en datamaskininnretning for beregning av run- og level-representasjoner av respektive kvantiserte transformkoeffisienter som representerer pikselverdier i en blokk i et videobilde som er innsatt rad for rad i en endimensjonal gruppe C, hvilken fremgangsmåte omfatter de følgende trinn: å pakke hver kvantisert transformkoeffisient i C i et verdiintervall ([Max, Min]) ved å sette alle kvantiserte transformkoeffisienter større enn Max til å være lik Max, og alle kvantiserte transformkoeffisienter mindre enn Min til å være lik Min, å maskere C ved å generere en gruppe M som inneholder 1-ere i posisjoner som korresponderer med posisjonene til C som har ikke-null-verdier, og O-er i posisjoner som korresponderer med posisjoner i C som har null-verdier, å sette en nåværende rasterposisjon til null, hvor en rasterposisjon refererer til en rasterskanningsrekkefølge av koeffisientene i blokken,karakterisert vedat fremgangsmåten videre omfatter: for hver posisjon som inneholder en l-er i M, å avlede en nåværende sikksakkposisjon fra nåværende rasterposisjon gjennom en tabell som mapper rasterposisjoner til sikksakk-posisjoner, der en sikksakkposisjon refererer til en sikksakk-skanning-rekkefølge av koeffisientene i blokken, hvis nåværende sikksakk-posisjon ikke er null, og hvis nåværende sikksakk-posisjon minus siste sikksakk-posisjon minus 1 er mindre enn null, å forkaste alle lagrede runs og levels, og beregne nye runs og levels med en alternativ reservemetode, og hvis ikke, å sette run lik nåværende sikksakk-posisjon minus siste sikksakk-posisjon minus 1 og level lik forekommende verdi i posisjonen i C som tilsvarer nåværende rasterposisjon, å lagre run og level, å sette siste sikksakk-posisjon lik nåværende sikksakk-posisjon, og å inkrementere nåværende rasterposisjon med antall posisjoner frem til neste l-er i M.
2. Fremgangsmåte i samsvar med krav 1, karakterisert vedat tabellen som mapper rasterposisjoner til sikksakk-posisjoner har følgende oppføringer: 0-0, 1-1, 2-5, 3-6, 4-2, 5-4, 6-7, 7-12, 8 - 3, 9-8, 10-11, 11-13, 12-9, 13-10, 14-14, 15-15.
3. Fremgangsmåte i samsvar med krav 1 eller 2, karakterisert vedat trinnet med å maskere videre inkluderer følgende trinn: å opprette en gruppe C fra C hvor posisjoner som korresponderer med posisjoner for ikke-null-verdier i C fylles med 1-ere, og posisjoner som korresponderer med posisjoner for nul- verdier i C fylles med 0-ere, å opprette M fra C 'ved å ekstrahere de mest signifikante bits fra verdier i de respektive posisjoner for C, og å innsette sette bitene i tilsvarende posisjoner i M.
4. Fremgangsmåte i samsvar med krav 3, karakterisert vedat trinnet med å lage en gruppe C utføres av en C++funksjon PCMPGTB, og trinnet med å opprette M fra C er utført av en C++funksjon PMOVMSKB.
5. Fremgangsmåte i samsvar med krav 4, karakterisert vedat trinnet med å bestemme posisjoner som inneholder ikke-null-verdier i C, utføres av en C++funksjon BSF.
6. Fremgangsmåte i samsvar med et av kravene 1-5, karakterisert vedat Max er 255 og Min er 0.
7. Fremgangsmåte i samsvar med et av kravene 1-6, karakterisert vedat sikksakk-skanningsrekkefølgen følger en sikksakk-vei av transformkoeffisientposisjoner i blokken som starter i øvre venstre hjørne på vei mot nedre høyre hjørne, og rasterskanningsrekkefølgen følger en rastervei av transformkoeffisientposisjoner i blokken som starter i øvre venstre hjørne, forløper gjennom koeffisientposisjoner fra venstre til høyre, rad etter rad, og ender i nedre høyre hjørne.
NO20101088A 2010-07-30 2010-07-30 Implementering av run/level-koding NO332357B1 (no)

Priority Applications (3)

Application Number Priority Date Filing Date Title
NO20101088A NO332357B1 (no) 2010-07-30 2010-07-30 Implementering av run/level-koding
PCT/NO2011/000212 WO2012015312A1 (en) 2010-07-30 2011-07-22 Implementation of run level coding
US13/194,183 US20120027081A1 (en) 2010-07-30 2011-07-29 Method, system, and computer readable medium for implementing run-level coding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
NO20101088A NO332357B1 (no) 2010-07-30 2010-07-30 Implementering av run/level-koding

Publications (2)

Publication Number Publication Date
NO20101088A1 NO20101088A1 (no) 2012-01-31
NO332357B1 true NO332357B1 (no) 2012-09-03

Family

ID=43661907

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20101088A NO332357B1 (no) 2010-07-30 2010-07-30 Implementering av run/level-koding

Country Status (2)

Country Link
NO (1) NO332357B1 (no)
WO (1) WO2012015312A1 (no)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2496197A (en) * 2011-11-07 2013-05-08 Sony Corp Frequency Domain Video Data Reordering for Encoding
NO336215B1 (no) * 2012-12-27 2015-06-15 Pexip AS Simultan og sløyfefri vektorberegning av alle run-level par i videokomprimering.

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8233545B2 (en) * 2006-08-21 2012-07-31 Texas Instruments Incorporated Run length encoding in VLIW architecture
US7885473B2 (en) * 2007-04-26 2011-02-08 Texas Instruments Incorporated Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors
NO332205B1 (no) * 2008-12-30 2012-07-30 Cisco Systems Int Sarl Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger

Also Published As

Publication number Publication date
NO20101088A1 (no) 2012-01-31
WO2012015312A1 (en) 2012-02-02

Similar Documents

Publication Publication Date Title
JP7170669B2 (ja) 最後の有意係数フラグのコーディング
US8300698B2 (en) Signalling of maximum dynamic range of inverse discrete cosine transform
US9621900B1 (en) Motion-based adaptive quantization
US10368086B2 (en) Image coding/decoding method, device, and system
US20130170761A1 (en) Apparatus and method for encoding depth image by skipping discrete cosine transform (dct), and apparatus and method for decoding depth image by skipping dct
US9407933B2 (en) Simultaneous and loopless vector calculation of all run-level pairs in video compression
EP3414904A1 (en) Video decoder memory optimization
US11647201B2 (en) Transform-based image coding method and device therefor
US20120027081A1 (en) Method, system, and computer readable medium for implementing run-level coding
Kadhim Image compression using discrete cosine transform method
US11677932B2 (en) Image processing device
US20230396810A1 (en) Hierarchical audio/video or picture compression method and apparatus
NO332357B1 (no) Implementering av run/level-koding
US10715821B2 (en) Embedding information about EOB positions
NO332205B1 (no) Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger
KR20200065367A (ko) 이미지 처리 장치 및 프레임 버퍼 컴프레서
US20160234529A1 (en) Method and apparatus for entropy encoding and decoding
CN116170596A (zh) 编解码方法及电子设备
KR20220015556A (ko) 이미지 처리 장치 및 프레임 버퍼 컴프레서
TWI821013B (zh) 視頻編解碼方法及裝置
WO2022120829A1 (zh) 图像编码及解码方法和装置、图像处理装置、可移动平台
WO2023011044A1 (zh) 数据处理方法、装置、计算机设备、存储介质及程序产品
CN113473154B (zh) 视频编码、视频解码方法、装置及存储介质
US20230054294A1 (en) Transform-based image coding method and device for same
Manoria et al. An efficient DCT compression technique using Strassen's matrix multiplication algorithm

Legal Events

Date Code Title Description
MM1K Lapsed by not paying the annual fees