NO332205B1 - Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger - Google Patents
Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger Download PDFInfo
- Publication number
- NO332205B1 NO332205B1 NO20090715A NO20090715A NO332205B1 NO 332205 B1 NO332205 B1 NO 332205B1 NO 20090715 A NO20090715 A NO 20090715A NO 20090715 A NO20090715 A NO 20090715A NO 332205 B1 NO332205 B1 NO 332205B1
- Authority
- NO
- Norway
- Prior art keywords
- positions
- coefficients
- matrix
- run
- values
- Prior art date
Links
- 230000009466 transformation Effects 0.000 title claims abstract description 16
- 238000007906 compression Methods 0.000 title abstract description 5
- 230000006835 compression Effects 0.000 title abstract description 5
- 238000000034 method Methods 0.000 claims abstract description 27
- 239000011159 matrix material Substances 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 15
- 238000012856 packing Methods 0.000 claims description 4
- 230000000873 masking effect Effects 0.000 claims description 2
- 230000006837 decompression Effects 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/93—Run-length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/176—Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/18—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Den foreliggende oppfinnelsen relaterer seg til en implementering av en prosess for å representere transformasjonskoeffisienter i kompresjon/dekompresjon av digitale videosystemer i multiformålsprosessorer. Den tilveiebringer en metode for signifikant å redusere nødvendig prosessorkapasitet sammenlignet med implementering i henhold til tidligere kjent teknikk. I henhold til oppfinnelsen blir kvantiserte transformasjonskoeffisienter som representerer en blokk med piksler i et videobilde pakket til halvparten av minnestørrelsen, og blir så maskert slik for å generere en matrise med 1'ere og 0'ere som definerer posisjonene til ikke-nullkoeffiseienter i den korresponderende matrisen med pakkede transformasjonskoeffisienler. Denne forberedelsen unngår tolkning gjennom posisjonene i matrisen av transformasjonskoeffisienter hvor nullverdier opptrer når en genererer kjøringsnivårepresentasjoner av koeffisientene, og vil dermed signifikant redusere nødvendig antall løkker som skal eksekveres.
Description
Introduksjon
Den foreliggende oppfinnelsen omhandler implementering av entropikoding/ dekoding av transformasjonskoeffisientdata til videokompresjonssystemer i datamaskininnretninger.
Bakgrunn for oppfinnelsen
Transmisjon av bevegelige bilder i sanntid blir utført i flere applikasjoner som f.eks. videokonferanse, nettmøter, TV-kringkasting og videotelefoni.
Imidlertid krever det å representere bevegelige bilder store datamengder siden digital video typisk blir beskrevet ved å representere hver piksel i hvert bilde med 8 bits (1 byte). Slike ukomprimerte videodata resulterer i store bitvolumer, og kan ikke overføres over konvensjonelle kommunikasjonsnettverk og transmisjonslinjer i sanntid på grunn av begrenset båndbredde.
Dermed krever muliggjøring av sanntidsvideotransmisjon stor datakompresjon. Datakompresjon kan imidlertid kompromittere billedkvaliteten. Derfor har mye blitt gjort for å utvikle kompresjonsteknikker som tillater sanntidstransmisjon med høy videokvalitet over båndbreddebegrensede dataforbindelser.
I videokompresjonssystemer er hovedmålet å representere videoinformasjon med så liten kapasitet som mulig. Kapasiteten er definert med bits, enten som en konstant verdi eller som bits/tidsenhet. I begge tilfeller er hovedmålet å redusere antall bits.
Den vanligste videokodingsmetoden er beskrevet i MPEG<*>og H.26<*>standardene. Videodata undergår fire hovedprosesser før transmisjon, som er prediksjon, transformasjon, kvantisering og entropikoding.
US-2006/0256854 beskriver et system og en metode for parallell eksekvering av mediakoding ved å utføre "single instruction multiple data" prosessering av en makroblokk. Her inngår bl.a. prediksjon.
Prediksjonsprosessen reduserer mengden av nødvendige bits betraktelig for hvert bilde i en videosekvens som skal overføres. Den utnytter lignende deler av sekvensen med andre deler av sekvensen siden den predikterende delen er kjent for både koder og dekoder, trengs kun forskjellen å bli overført. Denne forskjellen krever typisk mye mindre kapasitet enn dens representasjon. Predikteringen blir hovedsakelig basert på vektorer som representerer bevegelser. Prediksjonsprosessen blir typisk utført på kvadratblokkstørrelser (f.eks. 16x16 piksler). Bemerk at i noen tilfeller baserer prediksjonen av piksler seg på at tilliggende piksler i det samme bildet brukes i stedet for piksler til foregående bilder. Dette blir referert til som intraprediksjon i motsetning til interprediksjon.
Resten som er representert som en blokk av data (f.eks. 4x4 piksler) inneholder fremdeles intern korrelasjon. En velkjent metode for å utnytte fordelen av dette er å utføre en todimensjonal blokktransformasjon. I H.263 blir en 8x8 diskret cosinustransformasjon (DCT) brukt. Mens H.264 bruker en 4x4 heltallstype transformasjon. Denne transformerer 4x4 piksler til 4x4 transformasjonskoeffisienter og de kan vanligvis bli brukt for å representere færre bits enn pikselrepresentasjonen. Transformasjon av 4x4 matrise av piksler med intern korrelasjon vil sannsynligvis resultere i en 4x4 blokk med transformasjonskoeffisienter med mange færre ikke-nullverdier enn en opprinnelig 4x4 pikselblokk.
Direkte representasjon av transformasjonskoeffisienter er fremdeles for kostbart for mange applikasjoner. En kvantiseringsprosess blir utført for en videre reduksjon av datarepresentasjonen. Dermed undergår transformasjonskoeffisientene kvantisering. En enkel personlig kvantisering er å dele parameterverdier på tall - som resulterer i et mindre tall som kan representere færre bits. Det skal også nevnes at denne kvantiseringsprosessen har som et resultat at den rekonstruerte videosekvensen er noe ulik fra den ukomprimerte sekvensen. Dette blir referert til som "lossy coding". Utfallet fra denne kvantiseringsdelen blir referert til som kvantiserings-transformasjonskoeffisienter.
Entropikoding er en spesiell form for tapsløs datakompresjon. Den involverer blant annet å arrangere billedkomponentene i en "zigzag" rekkefølge som bruker RLE (run-length encoding) algoritme som grupperer lignende frekvenser sammen, innfører lengdekodingsnuller, og bruker så Huffman-koding på det som er igjen.
I en H.264 koding blir DCT-koeffisientene for en blokk regruppert for å gruppere sammen ikke-nullkoeffisienter i en matrise, som muliggjør effektiv representasjon av gjenværende nullverdikoeffisienter. Zigzag-omgrupperingsstien (skanne-rekkefølgen) er vist i fig. 1. Mønsteret til rekkefølgen av zigzag-skannet blir konfigurert i henhold til sannsynligheten for ikke-nullkoeffisienter for hver posisjon. På grunn av karakteristikken til foregående DCT avtar sannsynligheten til ikke-nullkoeffisienter i en blokk nedover mot høyre i diagonal retning til en DCT-blokk. Ved omgruppering av koeffisientene i et zigzag-mønster som illustrert i fig. 1, vil ikke-nullkoeffisienter tendere til å konsentrere seg i de første delene av matrisen.
Utfallet av omgrupperingsprosessen er en endimensjonal matrise som typisk inneholder én eller flere klustere av ikke-nullkoeffisienter nær starten, etterfulgt av strenger med null-koeffisienter. På grunn av det store antallet med nullverdier, blir matrisen videre representert som en serie med (run, level) par hvor run indikerer antallet med nuller forutgående for ikke-nullkoeffisienten, og level indikerer størrelsen av ikke-nullkoeffisienten. Som et eksempel, vil input matrisen 16, 0, 0, -3, 5, 6, 0, 0, 0, 0, -7, ... ha de følgende korresponderende run-level verdiene (0, 16), (2, -3), (0, 5), (0, 6), (4, -7)...
Ved transformering av zigzag-matrisen til run-level-verdier, er det beregningsmessig dyrt å gå over alle koeffisientene å sjekke om de er ikke-nullere. Ettersom billedoppløsningen øker, vil dette kreve en betydelig mengde med prosessorkapasitet og også introdusere for mye forsinkelse, spesielt dersom kodingsprosessen blir implementert på vanlige delte prosessorer, f.eks. på personlige datamaskiner.
Sammendrag av oppfinnelsen
Den foreliggende oppfinnelsen tilveiebringer en metode i en videokoding eller dekodingsprosess implementert i en datamaskininnretning for å beregne run og level representasjoner til respektive kvantiserte transformasjonskoeffisienter som representerer pikselverdier innbefattet i en blokk til et videobilde, hvor metoden innbefatter trinnene med å pakke hver kvantiserte transformasjonskoeffisient til et verdiintervall [Max, Min] ved å sette alle kvantiserte transformasjonskoeffisienter større enn Max lik til Max, og alle kvantiserte transformasjonskoeffisienter mindre enn Min lik til Min, og regruppere de kvantiserte transformasjonskoeffisientene i henhold til en forhåndsdefinert rekkefølge avhengig av respektive posisjoner i blokken som resulterer i en matrise C med omgrupperte kvantiserte transformasjonskoeffisienter, maskering av C ved å generere en matrise M som inneholder l'ere i posisjonene korresponderende til posisjonene til C som har ikke-nullverdier, og 0'ere i posisjonene som korresponderer til posisjonene til C som har nullverdier, og for hver posisjon som inneholder en 1 i M, å generere en respektiv run og level representasjon ved å sette level-verdien lik til forekommende verdi i korresponderende posisjon til C, og sette run-verdien lik til antall foregående posisjoner relativt til foreliggende posisjon i M siden tidligere forekomst av 1 i M.
Kort beskrivelse av tegninger
For å gjøre oppfinnelsen lettere forståelig, vil den følgende diskusjonen refererer til tilhørende tegninger og tabeller. Fig. 1 illustrerer et zigzag-mønster som blir brukt i tidligere kjent teknikk for å transformere koeffisienter før entropikoding, Fig. 2 er et flytskjema som illustrerer implementeringen av run-level-koding i henhold til tidligere kjent teknikk, Fig. 3 er et flytskjema som illustrerer en implementering av run-level-koding i henhold til den foreliggende oppfinnelsen, og Fig. 4 er et eksempel på en bitmask av en transformasjonskoeffisient under ulike trinn i henhold til den foreliggende oppfinnelsen.
Detaljert beskrivelse av oppfinnelsen
Fig. 2 er et flytskjema som illustrerer hvordan run-level-kode i henhold til MPEG4 og H.264 blir beregnet i en implementering i henhold til tidligere kjent teknikk. Etter kvantisering av transformasjonskoeffisientene (Quant C) i en blokk, blir de kvantiserte koeffisientene regruppert til en endimensjonal matrise i henhold til tidligere nevnte zigzag-mønstre. Prosessen går så over i en løkke for å syntaksanalysere matrisen for å bestemme run-level-verdier. Først blir det skjekket om antall posisjoner i matrisen overgår (I > 16). Dersom ikke det, blir det så sjekket om foreliggende posisjon i matrisen inneholder en null. Om det er tilfelle, vil både run-variabelen og posisjonsindeks (I) bli inkrementert, og prosessen går videre til starten av løkken igjen. Dersom ikke dette er tilfelle (foreliggende posisjon inneholder en ikke-nullverdi), blir foreliggende run-variabel og verdien til foreliggende posisjon lagret som en run-level-verdi. Run-variabelen blir så resatt, før begge run-variablene og posisjonsindeks (I) blir inkrementert og prosessen går videre til starten av løkken igjen. Prosessen slutter når posisjonsindeksen overstiger maksimum størrelse av matrisen, som i eksemplet illustrert i fig. 2 er 16.
Som det kan ses fra eksemplet av en tidligere kjent teknikkimplementering illustrert i fig. 2, må den alltid gå gjennom flere run-level-kodingsløkker så mange ganger som det er posisjoner i matrisen (f.eks. 16 ganger). Dette blir svært inneffektivt siden mange koeffisienter i C er null, og det er beregningsmessig dyrt å gå over alle koeffisientene å sjekke om de er ikke-nullere.
I den følgende beskrivelsen med ulike eksempler på implementering av den foreliggende oppfinnelsen vil det refereres til noen standardfunksjoner i biblioteket til det generelle formåls programspråket C++ som er direkte mappet til et kompakt og effektivt lavnivå CPU-instruksjonsprogram. C++ er omstrakt brukt i software industrien. Noen av dens applikasjoner innbefatter systemsoftwareinnretnings-drivere, embedded software, høyytelsesserver og klientapplikasjoner, og underholdningsprogrammer så vel som for implementering av koding og dekoding til sanntidsvideo for generelt formålsdatamaskiner.
Fig. 3 er et flytskjema som illustrerer et eksempel på implementering i henhold til den foreliggende oppfinnelsen. I denne implementeringen blir bitmasker og bitskann-instruksjoner som gjør det mulig å effektivt hoppe over alle nullverdikoeffisientene brukt. Den starter som i tidligere kjent teknikk ved å kvantisere transformasjonskoeffisientene i blokken. I eksemplet er det 16 koeffisienter som blir lagret i vektor C.
Prosessen går så videre med å pakke alle kvantiserte koeffisienter. I den eksempelvise implementeringen blir dette gjort av C++ instruksjonen PACKUSWB, som transformerer 16 signerte ord til usignerte heltall og satureringer (eng: saturates). Dette betyr at dersom en koeffisient er større eller mindre enn området med en usignert byte, blir koeffisienten satt til respektivt maks- eller min-verdien i området, som i denne implementeringen er 255 og 0. På denne måten vil minnestørrelsen til hver koeffisient bli redusert fra 2 til 1 byte.
Dette er en approksimasjon som kan føre til ulike resultater når svært lave kvantiseringsparametere (QP) blir brukt. Imidlertid har oppfinneren erfart at denne approksimasjonen ikke degraderer videokvaliteten på en måte som er synlig for det menneskelige øyet, ved å monitorere denne approksimasjonen på en utstrakt måte for et vidt utvalg av ulike videokonferansescenarioer.
QP er en parameter definert i noen av MPEG<*>og H.26<*>standardene, og bestemmer trinnstørrelsen for å assosiere de transformerte koeffisientene med et endelig sett av trinn. Store verdier til QP representerer store trinn som grovt approksimerer den spatiale transformasjonen, slik at det meste av signalet kan fanges av kun noen få koeffisienter. Små verdier av QP approksimerer mer nøyaktig blokkenes spatialfrekvensspektrum, men med den kostnad av flere bits.
En grunn for pakkingstrinnet er at det muliggjør den følgende omgrupperingen av koeffisienter til å bli utført i én funksjon uten å måtte analysere en 16 gangers loop. Dette kan bli gjort ved å bruke C++ funksjonen PSHUFB. Denne funksjonen skaffer til veie nøyaktig 16 bytes i enhver rekkefølge. I denne implementeringen er inngangsverdien de 16 koeffisientene og zigzag-rekkefølgen illustrert i fig. 1.
Det neste trinnet er å maskere de kvantiserte, pakkede og omgrupperte koeffisientene. Dette blir gjort ved f.eks. å anvende C++ funksjonene PCMPGTB og PMOVMSKB. PCMPGTB-funksjonen fyller en hel byte med enere i posisjonen til ikke-nullverdier, og lar 0'ere være uforandret i posisjonen til nullere. PMOVMSKB-funksjonen lager en 16 bits maske fra de mest signifikante bitsene til 16 bytes. Resultatet til disse to funksjonene når de anvendes på matrisen med kvantiserte, pakkede og regrupperte koeffisienter (C) er en 16 bits matrise (M) hvor 0'ere indikerer korresponderende posisjoner til ikke-nullverdier til C.
Ved å ha utledet M for C, blir trinnet med faktisk beregning av run-level-verdiene mye mindre beregningskrevende og krever ingen looper for nullverdier. Som allerede indikert, i masken M, blir én bit satt for hver ikke-nullverdi til C. Dermed vil, når M er null, alle koeffisientene være null og run-level-koding blir avsluttet.
Dersom M ikke er null, kan C++ funksjonen BSF bli brukt for å beregne indeksen til den første ikke-nullverdien til C. BSF returnerer bitindeksen til den i det minste signifikante biten til et heltall, dvs. i tilfelle med M, den første posisjonen til en 1 som starter fra den høyre siden.
Dermed vil denne indeksen som blir returnert av BSF når den anvendes på M være lik til run og bli brukt direkte for å slå opp i C-matrisen for å bestemme nivå. Dette er mulig siden C allerede har blitt skaffet ved å bruke PSHUFB-instruksjonen.
Run-verdi som indikert av BSF-funksjonen blir så lagret, og etter å ha slått opp verdien lokalisert ved den posisjonen i C blir så lagret som level-verdi.
M blir til slutt skiftet til høyre run+1 ganger for å klarere indeksbit fra M og forberede M til den neste iterasjonen i løkken. Ved å gjøre dette blir innholdet til M som korresponderer til run-level-verdiene allerede beregnet fjernet fra M, og løkken kan anvendes på den samme måten for å beregne gjenværende run-level-verdier.
Siden alle nullere hoppes over ved å effektivt bruke BSF-instruksjonen, er kun ikke-nullkoeffisientkjøringer nødvendig for å beregne alle level- og run-verdiene. Antallet løkker som skal analyseres ved å implementere entropikoding vil derfor bli dramatisk redusert, siden sannsynligheten for opptreden av mange nuller i en blokk med kvantifiserte koeffisienter er høy.
Den foreliggende oppfinnelsen unngår et indirekte tabelloppslag (pointer chasing) for å bestemme nivået, å bruke en enkelt effektiv BSF-instruksjon for å beregne run.
Videre tilveiebringer den foreliggende oppfinnelsen run-level-koding med ikke-null koeffisient run. F.eks., dersom fem verdier i C er ikke-null, vil kun 5 run gjennom run-level-kodingsløkken være nødvendig. Dermed blir sjekking av nullverdier i C unngått, som ellers ville ledet til beregningsmessige kostbare grenmistolkninger.
Claims (5)
1. Metode i en videokodings- eller dekodingsprosess i en datamaskininnretning for å beregne run og level representasjoner av respektive kvantiserte transformasjonskoeffisienter som representerer pikselverdier innbefattet i en blokk i et videobilde,
karakterisert vedde følgende trinnene: å pakke hver kvantiserte transformasjonskoeffisient i et verdiintervall [Max, Min] ved å sette alle kvantisere transformasjonskoeffisienter større enn Max lik til Max, og alle kvantiserte transformasjonskoeffisienter mindre enn Min lik til Min; å regruppere de kvantifiserte transformasjonskoeffisientene i henhold til en forhåndsdefinert rekkefølge avhengig av respektive posisjoner i blokken som resulterer i en matrise C med omgrupperte kvantiserte transformasjonskoeffisienter med en omgrupperingsfunksjon som er i stand til å håndtere minneinngangsverdier med en minnestørrelse som korresponderer med en størrelse definert av intervallet; å maskere C ved å generere en matrise M som inneholder 1 'ere i posisjonene korresponderende til posisjonen til C som har ikke-nullverdier, og 0'ere i posisjoner korresponderende til posisjoner av C som har null-verdier, og for hver posisjon som inneholder en 1 i M, å generere en respektiv run og level representasjon ved: å bestemme posisjoner som inneholder ikke-nullverdier i C ved å korrespondere til posisjoner inneholdende l'ere i M, og hvor dette blir eksekvert ved en C++ funksjon BSF, og å sette level verdien lik til opptredende verdi i korresponderende posisjon av C, og sette run verdien lik til antall med foregående posisjoner relatert til foreliggende posisjon i M siden foregående opptreden av 1 i M.
2. Metode i henhold til krav 1,
karakterisert vedat trinnet med å maskere videre innbefatter de følgende trinnene: å lage en matrise C fra C hvor posisjonene korresponderer til posisjoner med ikke-nullverdier i C blir fylt med l'ere, og posisjonene korresponderende til posisjonene til nullverdiene i C blir fylt med 0'ere, å lage M fra C ved å trekke ut den mest signifikante biten fra verdiene i respektive posisjoner av C og innsette bitene i korresponderende posisjoner i M.
3. Metode i henhold til krav 2,
karakterisert vedat trinnet med å lage matrisen C blir eksekvert ved en C++ funksjon PCMPGTB, og trinnet med å lage M fra C blir eksekvert ved en C++ funksjon PMOVMSKB.
4. Metode i henhold til et av kravene 1-3,
karakterisert vedat omgrupperingsfunksjonen blir eksekvert ved en C++ funksjon PSHUFB, hvor Max er 256, Min er 0 og minnestørrelsen er én byte.
5. Metode i henhold til et av kravene 1-4,
karakterisert vedat den forhåndsdefinerte rekkefølgen følger en zigzag-sti med transformasjonskoeffisienposisjoner i blokken som starter i øvre venstre hjørne og går ned mot det nedre høyre hjørnet.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO20090715A NO332205B1 (no) | 2008-12-30 | 2009-02-13 | Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger |
PCT/NO2009/000447 WO2010077148A1 (en) | 2008-12-30 | 2009-12-28 | Method, apparatus and computer readable medium for calculating run and level representations of quantized transform coefficients representing pixel values included in a block of a video picture |
CN200980153613.6A CN102273204B (zh) | 2008-12-30 | 2009-12-28 | 用于计算表示视频画面块中包含的像素值的量化变换系数的游程-幅度表示的方法、设备和计算机可读介质 |
EP09836441A EP2384581A4 (en) | 2008-12-30 | 2009-12-28 | METHOD, DEVICE AND COMPUTER READABLE MEDIUM FOR CALCULATING CONTINUOUS AND LEVEL PRESENTATIONS OF QUANTIZED TRANSFORMATION COEFFICIENTS FOR PRESENTING PIXEL VALUES IN A BLOCK OF A VIDEO IMAGE |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO20085407 | 2008-12-30 | ||
NO20090715A NO332205B1 (no) | 2008-12-30 | 2009-02-13 | Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger |
Publications (2)
Publication Number | Publication Date |
---|---|
NO20090715L NO20090715L (no) | 2010-07-01 |
NO332205B1 true NO332205B1 (no) | 2012-07-30 |
Family
ID=42309982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20090715A NO332205B1 (no) | 2008-12-30 | 2009-02-13 | Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2384581A4 (no) |
CN (1) | CN102273204B (no) |
NO (1) | NO332205B1 (no) |
WO (1) | WO2010077148A1 (no) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NO332357B1 (no) * | 2010-07-30 | 2012-09-03 | Cisco Tech Inc | Implementering av run/level-koding |
CN101964912A (zh) * | 2010-10-15 | 2011-02-02 | 北京中科大洋科技发展股份有限公司 | 一种在mpeg2中游程编码快速计算游程长度的方法 |
NO336215B1 (no) | 2012-12-27 | 2015-06-15 | Pexip AS | Simultan og sløyfefri vektorberegning av alle run-level par i videokomprimering. |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6628717B1 (en) * | 1998-11-04 | 2003-09-30 | Lg Electronics Inc. | Lossless coding method and video compression coding device using the same |
US20080046698A1 (en) * | 2006-08-21 | 2008-02-21 | Kapil Ahuja | Run Length Encoding in VLIW Architecture |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7630569B2 (en) * | 2002-02-26 | 2009-12-08 | Decegama Angel | Real-time software video/audio transmission and display with content protection against camcorder piracy |
US8606023B2 (en) * | 2006-06-26 | 2013-12-10 | Qualcomm Incorporated | Reduction of errors during computation of inverse discrete cosine transform |
-
2009
- 2009-02-13 NO NO20090715A patent/NO332205B1/no not_active IP Right Cessation
- 2009-12-28 EP EP09836441A patent/EP2384581A4/en not_active Withdrawn
- 2009-12-28 WO PCT/NO2009/000447 patent/WO2010077148A1/en active Application Filing
- 2009-12-28 CN CN200980153613.6A patent/CN102273204B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6628717B1 (en) * | 1998-11-04 | 2003-09-30 | Lg Electronics Inc. | Lossless coding method and video compression coding device using the same |
US20080046698A1 (en) * | 2006-08-21 | 2008-02-21 | Kapil Ahuja | Run Length Encoding in VLIW Architecture |
Also Published As
Publication number | Publication date |
---|---|
CN102273204B (zh) | 2014-05-14 |
CN102273204A (zh) | 2011-12-07 |
WO2010077148A1 (en) | 2010-07-08 |
NO20090715L (no) | 2010-07-01 |
EP2384581A4 (en) | 2012-05-30 |
EP2384581A1 (en) | 2011-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7499596B2 (en) | Amplitude coding for clustered transform coefficients | |
WO2011005105A1 (en) | Computer implemented early skip | |
US7564382B2 (en) | Apparatus and method for multiple description encoding | |
US9407933B2 (en) | Simultaneous and loopless vector calculation of all run-level pairs in video compression | |
WO2017139117A1 (en) | Video decoder memory optimization | |
US20120027081A1 (en) | Method, system, and computer readable medium for implementing run-level coding | |
JP2003188733A (ja) | 符号化方法及び装置 | |
NO332205B1 (no) | Implementering av entropikoding/dekoding av transformasjonskoeffisientdata til videokompressjonssystemer i datamaskininnretninger | |
US10715821B2 (en) | Embedding information about EOB positions | |
NO332357B1 (no) | Implementering av run/level-koding | |
JPH03158070A (ja) | 高速画像デコーダ | |
Sagheer et al. | Fast intra-frame compression for video conferencing using adaptive shift coding | |
US7221708B1 (en) | Apparatus and method for motion compensation | |
Manoria et al. | An efficient DCT compression technique using Strassen's matrix multiplication algorithm | |
US8331709B2 (en) | Fixed buffer real-time image compression technique | |
CN110858900B (zh) | 复用精简反量化乘法因子和位移表的数据压缩方法和装置 | |
KR100195187B1 (ko) | 일정압축률 정지영상 압축 장치 및 그 방법 | |
CN115706797A (zh) | 多媒体数据编码方法、装置、设备以及介质 | |
WO2014189981A1 (en) | Transform system and method in video and image compression | |
WO2022268236A1 (en) | Image compression and associated color approximation | |
Dobrovolný | The Quality Comparsion Of Svd And Dct Based Image Comperssion Methods For Embedded Devices | |
KR20200101686A (ko) | 센터-투-에지 점진적 영상 부호화/복호화 방법 및 장치 | |
Khan et al. | Performance Analysis of JPEG Algorithm on the basis of Quantization Tables | |
JP2007214680A (ja) | データ固定長化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM1K | Lapsed by not paying the annual fees |