NO336218B1 - Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. - Google Patents
Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. Download PDFInfo
- Publication number
- NO336218B1 NO336218B1 NO20121355A NO20121355A NO336218B1 NO 336218 B1 NO336218 B1 NO 336218B1 NO 20121355 A NO20121355 A NO 20121355A NO 20121355 A NO20121355 A NO 20121355A NO 336218 B1 NO336218 B1 NO 336218B1
- Authority
- NO
- Norway
- Prior art keywords
- values
- simd
- vector
- simd vector
- macroblock
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 54
- 238000004590 computer program Methods 0.000 title claims description 4
- 239000013598 vector Substances 0.000 claims description 114
- 230000001131 transforming effect Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 description 24
- 239000011159 matrix material Substances 0.000 description 14
- 238000013139 quantization Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000033001 locomotion Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000000844 transformation Methods 0.000 description 3
- 230000017105 transposition Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 101000633607 Bos taurus Thrombospondin-2 Proteins 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 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/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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- 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
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- 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/42—Methods 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
- H04N19/436—Methods 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 using parallelised computational arrangements
-
- 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
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Discrete Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Description
Metode, datamaskinprogram og system for å bestemme "hopp over"-modus.
Teknikkens område
Den foreliggende oppfinnelse angår koding av videodata, særlig relatert til å bestemme "hopp over" modus blokker i metoder for koding av videodata.
Oppfinnelsens bakgrunn
Overføring av bevegelige bilder i sanntid anvendes i flere bruksområder som for eksempel videokonferanser, nettmøter og videotelefoni.
Representasjon av levende bilder krever store mengder informasjon, da digital video vanligvis er representert av inntil 60 enkeltbilder per sekund, hvor hvert enkeltbilde er representert av et stort antall piksler, som igjen er representert av minst én byte med digitale data. Slike ukomprimerte videodata resulterer i store datavolum som ikke kan overføres via konvensjonelle kommunikasjonsnett og overføringslinjer i sanntid, da det vil kreve en urealistisk stor båndbredde.
Dermed introduseres sanntids videooverføring videokomprimering, hvor hovedmålet er å representere videoinformasjonen med så få bit, og innføre så lav forsinkelse, som mulig uten at det går for mye på bekostning av videokvaliteten.
De mest vanlige metodene for videokoding er beskrevet i MPEG<*>og H.26<*>standardene. Videodataene gjennomgår fire hovedprosesser før sending; prediksjon, transformasjon, kvantisering og entropikoding.
Prediksjonsprosessen reduserer mengden bit som kreves for hvert enkelt bilde som overføres i en videosekvens betraktelig. Den utnytter likheten i deler av sekvensen med andre deler av sekvensen. Siden prediksjonsdelen er kjent for både koderenheten og dekoderenheten, vil bare forskjellen måtte overføres. Denne forskjellen krever typisk mye mindre kapasitet for sin representasjon, og er vanligvis referert til som residualen. Residualen, representert som en matriseblokk av data (for eksempel 4x4 piksler), inneholder fortsatt intern korrelasjon. En velkjent metode for å dra nytte av dette, er å utføre en todimensjonal transformasjon av blokken. ITU standarden H.264 bruker en 4x4 heltalls DCT-transformasjon. Dette transformerer 4x4 bildepunker, til 4x4 transformasjonskoeffisienter og disse kan vanligvis bli representert med færre bit enn representasjonen med piksler.
Transformasjon av en 4x4 matrise av piksler med intern korrelasjon, vil sannsynligvis resultere i en 4x4 blokk med transformasjonskoeffisienter med mange færre ikke-null verdier enn den opprinnelige blokken med 4x4 piksler.
Direkte representasjon av disse transformasjonskoeffisientene er fremdeles for kostbart for mange anvendelser. En kvantiseringsprosses blir utført for en ytterligere reduksjon av datarepresentasjonen. Derfor gjennomgår transformasjonskoeffisientene en kvantisering. Det mulige området av transformasjonskoeffisientenes verdier er delt inn i verdiintervaller, hver begrenset av en øvre og en nedre avgjørende verdi, og tildeles som en fast kvantiseringsverdi. Transformasjonskoeffisientene blir så kvantifisert til kvantiseringsverdien befinner seg innenfor det intervallet hvor de respektive koeffisientenes verdier befinner seg. Koeffisienter som har lavere verdi enn den laveste faste verdien blir kvantifisert til nuller. Det bør nevnes at denne kvantiseringsprosessen resulterer i at den rekonstruerte videosekvensen er noe forskjellig sammenlignet med den ukomprimerte sekvensen.
Som allerede antydet, en karakteristikk av videodata som skal kodes er at kravene til antall bit for å beskrive en sekvens er sterkt varierende. For flere anvendelser er det kjent for en fagperson på området at innholdet i en betydelig del av bildet er uendret fra enkeltbilde til enkeltbilde. H.264 utvider denne definisjonen slik at også de delene av bildet med konstant bevegelse kan bli kodet uten bruk av tilleggsinformasjon. Områder med lite eller ingen endring fra bilde til bilde, krever et minimalt antall bit for å bli representert. Blokkene som inngår i slike områder defineres som "hoppes over" eller til å være i "hoppes over" modus, noe som gjenspeiler at ingen endringer, eller bare forutsigbar bevegelse i forhold til de tilsvarende tidligere blokkene oppstår, og dermed kreves ingen annen data for å representere disse blokkene enn en indikasjon på at blokkene skal bli dekodet som "hoppes over". Denne indikasjonen kan være felles for flere makroblokker.
Da H.264 er en standard for dekoding, beskriver den ikke noen fremgangsmåter for detektering av områder med ingen eller bare marginale endringer forut for transformasjon- og kvantiseringsprosessen. Som et resultat av dette, kan disse områdene gjennomgå både bevegelsessøk, transformasjon og kvantisering, selv om de til slutt vil defineres som "hoppes over" og igjen ikke vil representeres med noe data. Da disse operasjonene krever prosseseringskraft, er dette et unødvendig forbruk av ressursene i koderenheten.
Koding av video for HD formater øker kravene til minne- og prosseseringskraft, og krever effektiv og høy båndbredde til minneorganiseringene, kombinert med beregningsintensive kapabiliteter. På grunn av disse kravene, må det bli funnet en tilnærming med fleksibel parallellprosessering for å møte behovet på en kostnadseffektiv måte.
Videokodeker er vanligvis installert på spesialtilpasset maskinvare i videoendepunkter med prosessorer basert på DSP. Imidlertid har det i den senere tid blitt mer vanlig å installere videokodeker i generiske prosessorer i et SIMD prosessormiljø.
Normalt er den tidlige "hopp over" prosessen som nevnt ovenfor en komplisert prosess som er beregningsmessig kostbar, ettersom man manuelt må endre og kvantisere hver av de 16 4x4 blokkene, én etter én, mens man bruker 16 bits og 32 bits presisjon, noe som fører til en omfattende bruk av registeret i et SIMD prosessormiljø.
En forenkling av prosessen rundt "tidlig hopp over" er beskrevet i US7295613 " Early detection of zeros in the transform domain " av Gisle Bjøntegaard. Denne forenklingen tar imidlertid ikke hensyn til et SIMD prosessormiljø, og bruker Hadamard transformasjon i deteksjon av "tidlig hopp over", i stedet for DCT. I tillegg beregner Bjøntegaard bare noen få koeffisienter, og sammenligner disse med en skalær terskel. Dette kan gi unøyaktige resultater, som nedgraderer den opplevde videokvaliteten uten å oppnå noen vesentlig forbedring i utnyttelse av en SIMD prosessor.
Derfor er det behov for en tidsbesparende og prosessoreffektiv fremgangsmåte for å bestemme "tidlig hopp over" som utnytter de grunnleggende egenskapene til generelle prosessorer i et SIMD prosessormiljø uten at det går på bekostning av datakvaliteten. US 2004264575 er relater til tidlig deteksjon av nuller i transformdomenet, og viser en framgangsmåte som detekterer blokker som skal indikeres som hoppet over ved et tidligere steg i kodeprosess enn det vil være tilfellet med andre implementasjoner av ITU H.263- og H.264-standardene. Den kjente framgangsmåten inkluderer transformering av 4x4 blokker i makroblokkene som har en «hopp over»-vektor på null med en binær transformasjonsfunksjon. Blokkene som har verdiene til de fire øverste venstre binære transformasjonskoeffisientene mindre enn en forhåndsdefinert terskel er definert som hoppet over. Derfor er behovet for beregningskrevende blokktransformasjoner eller kvantisering minimert.
US 7873812 er relater til en framgangsmåte og system for effektiv matrisemultiplikasjon I en SIMD-prosessorarkitektur. Det kjente systemet tilveiebringer effektiv
implementasjon av matrisemultiplikasjon i en SIMD-prosessor. Det kjente tilveiebringer muligheten til å mappe ethvert element i et kildevektorregister til å bli paret med ethvert element i et andre kildevektorregister for vektoroperasjoner, og spesifikt operasjoner for vektormultiplikasjons- og vektormultiplikasjonsakkumulering for å implementere en mengde matrisemultiplikasjoner uten instruksjoner for å flytte om eller dataomgruppering. Operasjoner slik som DCT og Color-space-transformasjoner for videoprosessering kan være svært effektivt implementert ved å bruke dette systemet.
US 2005125624 er relater til et dataprosesseringsapparat og framgangsmåte for å flytte data mellom register og minne. Redegjørelsen beskriver et dataprosesseringsapparat og framgangsmåte for å utføre justerte aksessoperasjoner. Dataprosesseringsapparatet omfatter et registerdatalager som har et flertall register som er i stand til å lagre dataelementer, og en prosessor som er i stand til å utføre dataprosesseringsoperasjoner på et eller flere dataelementer aksesser i minst ett av registrene. Videre er aksesslogikk tilveiebrakt som er i stand til, som respons på en aksessinstruksjon, å utføre en aksessoperasjon for å flytte et antall dataelementer mellom spesifiserte registre og en del av et minne, delen har en startadresse spesifisert av aksessinstruksjonen. Videre har aksessinstruksjonen en justeringsspesifikasjon assosiert dertil som enten er satt til en første verdi eller en av et flertall andre verdier. Den første verdien indikerer at startadressen skal behandles som byte-justert, og hver av de andre verdiene indikerer en annen forhåndsbestemt justering at startadressen skal behandles som tilpasset til. Aksesslogikken er da i stand til å tilpasse aksessoperasjonen avhengig av verdien på justeringsspesifikasjonen. Dette tilveiebringer betydelig forbedret fleksibilitet i ytelsen til aksessoperasjoner.
SONG H. et al.: "Novel Fast Motion Estimation and Mode Decision for H.264 Real-Time High-Definition Encoding", publisert i 5. International Congress on Image and Signal Processing (CISP 2012), 16-18. Oktober 2012, Chongqing, Sichuan, Kina, side 43-48, ISBN: 978-1-4673-0965-3 beskriver en forbedret prosedyre for sanntidsdekoding av en HD-video basert på H.264/AVC-standarden ved å bruke en algoritme for hurtig bevegelsesestimering (Motion Estimation (ME)) og en modusbeslutning (Mode Decision (MD)). I seksjon II er en algoritme for hurtig deteksjon av «hopp over»-modus beskrevet som er et første steg i en algoritme for tidlig deteksjon av enhver makroblokk hoppet over før bevegelsesestimeringen starter, se Figur 1 for en oversikt over algoritmens steg.
CHIANG J-C. et al.: "Block-based Distributed Video Coding with Variable Block Modes", publisert i Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), 30.mai - 2.juni 2010, Paris, France, side 125-128, E-ISBN: 978-1- 4244-5309-2, INSPEC Accession Number: 11462795 beskriver en blokkbasert distribuert videokoding som bruker variable blokkmodus. I tillegg til intramodus og Wyner-Ziv-modus brukt i konvensjonell blokkbasert videodekoding er en ytterligere blokkmodus addert; "Hopp over modus" eller "nullbevegelses-modus" for å forbedre den totale effektiviteten av dekodingen.
BANG H.I. et al.: "An Efficient Skipping Method of H.264/AVC Weighted Prediction for Various Illuminating Effects", publisert i Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), 30.mai- 2.juni 2010, Paris, Frankrike, side 1177-1180, E-ISBN: 978-1-4244-5309-2, INSPEC Accession Number: 11463443 beskriver en framgangsmåte for å forbedre effektiviteten til dekoding relatert til H.264/AVC-dekoding ved å utføre en vektet prediksjon for forskjellige scenarioer, typisk ved raske endringer i hele eller i en del av bildet. Lokalt vektet prediksjon er brukt til å forbedre effektiviteten til dekodingen ved slike forhold.
Oppsummering av oppfinnelsen
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for videokoding implementert i en prosessorenhet for å forberede til å bestemme om 4x4 pikselblokker innenfor en makroblokk av transformerte, residuale pikselverdier skal angis som "hoppes over" (skipped) i henhold til en kodestandard, hvor pikslenes posisjonsverdier i makroblokken er angitt som xijrder/' er pikslenes vertikale posisjon innenfor makroblokken, og jer den horisontale pikselposisjonen i makroblokken. Trinnene: å laste gjeldende verdier i makroblokken for posisjonene xi0til xi3inn i en første SIMD vektor, eller xi0til xi3og x^ i+^ 0 tilX(i+4)3inn i den første SIMD 32 vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x(i+8)0 til x(i+8)3o<g>z(i+12)0 til z(i+12)3 inn i den første SIMD vektoren og å konvertere bytes i den første SIMD vektoren fra usignert til signert, å laste inn predikerte verdier i makroblokken for posisjonene xi0til xi3inn i en andre SIMD vektor, eller xi0til xi3og x^ i+^ 0 til x^ i+^ 3 inn i den andre SIMD vektoren, eller xi0til
*i3og x(i+4)o til x(i+4)3 og x( i+ g) 0 til x( i+ g) 3og *(i+12)0til x( i+ 12) 3 inn i den andre SIMD vektoren, og å konvertere bytes i den andre SIMD vektoren fra usignerte til signert, og å subtrahere verdiene fra den første SIMD vektoren og verdiene fra de tilsvarende posisjoner i den andre SIMD vektoren, og å utføre en 8-bits metning av de resulterende verdier og å laste de resulterende verdiene inn i en tredje SIMD vektor, og å transformere den tredje SIMD vektoren horisontalt med 8-bit metningsaritmetikk og å laste resultatet inn en fjerde SIMD vektor, og å transponere den fjerde SIMD vektoren, og å transformere den fjerde, transponerte, SIMD vektoren vertikalt med 8-bit metningsaritmetikk (saturation arithmetic), og å laste resultatet inn i en femte SIMD vektor, er gjennomført.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte med trinnene:
a) å sette i = 0,
b) å gjennomføre trinnene I - VI,
c) å sette i = i + 1
d) å gjenta trinn b) og c) hvis i<4
gitt.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for å sammenligne verdiene til den femte SIMD vektoren assosiert med en 4x4 pikselblokk til makroblokken med tilhørende verdier for en terskelverdivektor gitt. Hvis mer enn et forhåndsdefinert antall av verdier for den femte SIMD vektoren assosiert med en 4x4 pikselblokk er lavere enn de tilsvarende verdier til en terskelverdivektor, da å definere 4x4 pikselblokken som "hoppet over".
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for å vekte og summere verdiene til den femte SIMD vektoren assosiert til en 4x4 pikselblokk til makroblokken resulterende i en energiverdi knyttet til 4x4 pikselblokken gitt. Hvis energiverdien er lavere enn en forhåndsdefinert terskel, da å definere 4x4 pikselblokken som "hoppes over".
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for å utføre en 8-bits metning av de resulterende verdiene involverer å tilordne alle resulterende verdier høyere enn 127 til 127, og å tilordne alle resulterende verdier lavere enn -128 til -128 gitt.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for å konvertere bytes fra usignert til signert som omfatter å addere -128 til de respektive bytes gitt.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor kodingsstandarden er kodingsstandarden H.264/AVC gitt.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor prosessorenheten er en Intel prosessoren het gitt.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor prosessorenheten er en AMD prosessoren het gitt.
Ved andre anvendelser av den foreliggende oppfinnelsen beskrevet her, er et dataprogramprodukt i henhold til den krevde fremgangsmåte tilveiebrakt.
I ytterligere anvendelser av den foreliggende oppfinnelse beskrevet heri, er en prosessorenhet for forberedelse til å fastslå om 4x4 pikselblokker innenfor en makroblokk av transformerte residuale pikselverdier skal være angitt som "hoppes over" i henhold til en kodingsstandard under videokoding gitt. Pikselposisjonsverdier av makroblokken betegnes som xtj, hvor/' er den vertikale pikselposisjonen innenfor makroblokken ogj er den horisontale bildepunktposisjonen av makroblokken. Prosessoren omfatter videre en prosesseringskrets konfigurert til:
I. å laste gjeldende verdier i makroblokken for posisjonene xi0til xi3inn i en første SIMD vektor, eller xi0til xi3og xii+ 4) 0 til xii+ 4) 3 inn i den første SIMD 32 vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x( i+ g) 0 til x(i+8)3og *(i+12)0 til^1+12)3inn i den første SIMD vektoren og å konvertere bytes i den første SIMD vektoren fra usignert til signert, II. å laste inn predikerte verdier i makroblokken for posisjonene xi0 til xi3inn i en andre SIMD vektor, eller xi0til xi3og xii+ 4) 0 til 3c(i+4)3 inn i den andre SIMD vektoren, eller xl0til xl3og x^ l+^ 0 til x^ l+ i^ 3 og x^ l+ g^ 0 til x^ l+ g^ 3og x^ l+ 12^ 0 til^1+12)3inn i den andre SIMD vektoren, og å konvertere bytes i den andre SIMD vektoren fra usignerte til signert, III. å subtrahere verdiene fra den første SIMD vektoren og verdiene fra de tilsvarende posisjoner i den andre SIMD vektoren, og å utføre en 8-bits metning av de resulterende verdier og å laste de resulterende verdiene inn i en tredje SIMD, IV. å transformere den tredje SIMD vektoren horisontalt med 8-bit metningsaritmetikk og å laste resultatet inn en fjerde SIMD vektor,
V. å transponere den fjerde SIMD vektoren,
VI. å transformere den fjerde, transponerte, SIMD vektoren vertikalt med 8-bit metningsaritmetikk og å laste resultatet inn i en femte SIMD vektor, å sammenligne verdiene til den femte SIMD vektoren assosiert med en 4x4 pikselblokk til makroblokken med tilhørende verdier for en terskelverdivektor, og hvis mer enn et forhåndsdefinert antall av verdier for den femte SIMD vektoren assosiert med en 4x4 pikselblokk er lavere enn de tilsvarende verdier til en terskelverdivektor, da å definere 4x4 pikselblokken som "hoppet over", å vekte og summere verdiene til den femte SIMD
vektoren assosiert til en 4x4 pikselblokk til makroblokken resulterende i en energiverdi knyttet til 4x4 pikselblokken, og hvis energiverdien er lavere enn en forhåndsdefinert terskel, da å definere 4x4 pikselblokken som "hoppes over".
I anvendelse av den foreliggende oppfinnelsen beskrevet her, er en prosessorenhet med prosessorkretsen videre konfigurert til:
e) å sette i = 0,
f) å gjennomføre trinnene I - VI,
g) å sette i = i + 1
h) å gjenta trinn b) og c) hvis i<4
gitt.
Kort beskrivelse av tegningene
Figur 1 viser en makroblokk delt inn i nummererte blokker,
Figur 2 illustrerer fire 4x4- blokker,
Figur 3 illustrerer en 16x16 blokk og hvordan det kan bli omorganisert til en imaginær 4x64 blokk for å utnytte maskinvare som støtter 256-instruksjoner.
Detaljert beskrivelse av en eksempelutførelsesform
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte for raskt å fastslå om en makroblokk i H.264 eller andre lignende standarder bør være kodet i "hopp over" modus. Frekvenskomponentenes energi er beregnet etter en ytterligere transformasjon og kvantisering. Normalt er dette en komplisert prosess som er beregningsmessig kostbar, siden man manuelt må transformere og kvantisere hver av de 16 4x4 blokkene, én etter én, ved å benytte 16-bit og 32-bit presisjon som fører til omfattende bruk av registeret, spesielt i SIMD (én enkelt instruksjon, multiple data) miljøer. SIMD er en klasse av parallelle datamaskiner iht. Flynns taksonomi. Den beskriver datamaskiner med flere prosesseringselementer som utfører samme operasjon på flere datapunkter samtidig. Ved dette utnytter slike maskiner nivåene av parallellitet i dataene. Eksempler på prosessorer med et SIMD miljø er Intel- og AMD-prosessorer. Prosesseringskretsen kan være en behandlingsenhet, en prosessor, en programspesifikk integrert krets (ASIC), en feltprogrammerbar portmatrise (FPGA - field programmable gate array) eller tilsvarende. Som et eksempel kan en prosessor, en ASIC, en FPGA eller tilsvarende omfatte én eller flere prosessorkjerner.
Figur 1 illustrerer en makroblokk som representerer 16x16 piksler i et bilde, som er videre brutt ned til 4x4 blokker. Hver av de 4x4 blokkene er nummerert for å bli referert til i den følgende beskrivelse. I henhold til kjent teknikk innenfor fagområdet, er transformasjonen gjort for hver 4x4 blokk, men i henhold til utførelser av den foreliggende oppfinnelse beskrevet heri, er N 4x4 blokker transformert samtidig ved hjelp av aritmetiske beregninger med 8-bits metning, som begrenser bruken av prosessorregisteret betraktelig. 8-bits metning betyr ganske enkelt at alle absolutte verdier over 127 betegnes som 127, og alle verdier under -128 betegnes som -127. Denne tilnærmingen kan føre til noe redusert presisjon, men i tilfeller hvor det transformeres for å bestemme om blokkene skal defineres som "hoppes over" eller ikke "hoppes over", har oppfinneren innsett at det er svært usannsynlig at beregningene uansett kan overstige 8-bits presisjon.
Dette på grunn av de grunnleggende egenskapene til den residuale informasjonen, hvorfra transformasjonen blir beregnet. I dataområdene der "hopp over" blir vurdert, er forskjellen mellom nåværende og prediktert blokk så liten at det er overveiende sannsynlig at 8-bit per piksel er tilstrekkelig til å representere residualen uten å resultere i en gal vurdering. 8-bit kan representere verdier mellom [-128, 127], og hvis et antall residualer i en blokk er utenfor dette intervallet, bør blokken sannsynligvis allikevel defineres som "ikke hopp over" da grenseverdien for "hopp over" typisk kan innebære i gjennomsnitt kun 2 eller 3 bit per piksel for residualene.
Videre er det en stor utfordring at mange algoritmer involverer vektorstørrelser som bare er en brøkdel av registerstørrelsene i moderne mikroprosessorer. Mens man kan legge til to vektorer med 16 elementer i én enkelt klokkesyklus, kan et problem kreve å legge til to vektorer av bare fire elementer, noe som etterlater 16-4=12 ubrukte elementer i registeret. Hvis problemet imidlertid kan omformuleres til benyttelse av vektorer på størrelse 16, vil hastighetsøkningen være 16/4=4.
Algoritmen i henhold til en anvendelse av den foreliggende oppfinnelsen beskrevet heri, kan bli eksemplifisert på et overordnet nivå med trinnene: 1. Last inn N=4, 8 eller 16 gjeldende 4x4 blokker og konvertér fra usignert (unsigned) til signert (signed) byte. 2. Last inn N=4, 8 eller 16 predikerte 4x4 blokker og konvertér fra usignerte til signerte byte.
3. Beregn residualen ved hjelp av 8-bit metningsaritmetikk
4. Transformér N=4, 8 eller 16 4x4 blokker horisontalt ved hjelp av 8-bit metningsaritmetikk.
5. Transponér N=4, 8 eller 16 4x4 blokker.
6. Transformér N=4, 8 eller 16 4x4 blokker vertikalt ved hjelp av 8-bit metningsaritmetikk.
7. Beregn absoluttverdien til de N 4x4 blokkenes koeffisienter.
8. Sammenlign de N=4, 8 eller 16 4x4 blokkenes koeffisienter med en terskelverdivektor.
En usignert byte er en byte med verdi i området [0,255], og en signert byte er en byte med verdi i området [-128,127].
Innlasting av for eksempel N=44x4 blokker på en gang i et SIMD miljø betyr at pikselposisjonene x00, xOl, x02 og x03 til 4x4 blokk nummer 0 i makroblokken vil bli lastet inn i posisjonene 0-3 til en første SIMD vektor og pikselposisjonene x00, xOl, x02, og X03 til 4x4 blokk nummer 1 i makroblokken vil bli lastet inn i posisjonene 4-7, pikselposisjonene x00, xOl, x02, og x03 av 4x4 blokk nummer 2 til makroblokken vil bli lastet inn i posisjonene 8-11, og pikselposisjonene x00, xOl, x02, og x03 til 4x4 blokk nummer 3 i makroblokken vil bli lastet inn i posisjonene 12-15 i vektoren. Denne SIMD vektoren vil derfor fortløpende bli fylt med de øverste linjene til de N=4 4x4 blokkene, som fremhevet i figur 2.
Videre, pikselposisjoner xlO, xll, xl2, og xl3 til 4x4 blokk nummer 0 i makroblokken, vil bli lastet i posisjonene 0-3 i en andre SIMD vektor, og pikselposisjonene xlO, xll, xl2, og xl3 i 4x4 blokk nummer 1 i makroblokken vil bli lastet inn i posisjonene 4-7, pikselposisjonene xlO, xll, xl2, og xl3 til 4x4 blokk nummer 2 i makroblokken vil bli lastet i posisjonene 8-11, og pikselposisjonene xlO, xll, xl2, og xl3 av 4x4 blokk nummer 3 i makroblokken vil bli lastet inn i posisjonene 12-15 i vektoren. Dette fortsetter deretter på tilsvarende måte helt til alle pikselposisjonsverdiene til alle de N=44x4 blokker er fylt i totalt fire SIMD vektorer.
Beregning av residualene i trinn 3 innebærer å utføre en SIMD addisjonsfunksjonen på de innlastede, mettede SIMD vektorene, som resulterer i en beregning av residualene for N=44x4 blokker samtidig. En SIMD vektor vil da inkludere en linje av residualer for 4 4x4 blokker i samme linje, og dermed utnytte hele størrelsen av vektoren.
Fremgangsmåten i henhold til anvendelser av den foreliggende oppfinnelsen beskrevet heri, utnytter det faktum at prosessoren tilveiebringer nok plass i registeret til å lagre N=44x4 sett med 8-bit data. Ved å utføre fire avlesninger på rad av 16 lineært justerte verdier inn i 16 SIMD registervariabler hvor hver kan lagre 16 verdier, kan hele datasettet for operasjonen lagres innenfor prosessorens SIMD registervariabler, og opereres på uten noen form for minnerelatert forsinkelse. Den horisontale transformasjonsfunksjonen kan da videre utføres i trinn 4 på de N=4 4x4 blokker på en matrisemultiplikasjon i henhold til standarden.
Symmetristrukturen i en transformasjonsmatrise iht H.246 og lignende standarder, tillater at fremgangsmåten for en komplett transformasjon kan utføres i en firetrinnsprosess ved å: "transformere horisontalt - transponere - transformere horisontalt - transponere". I algoritmen i eksemplet ovenfor, sett bort i fra det siste transponeringstrinnet, er dette utført i trinnene 4-6. Å utelate det siste transponeringstrinnet kan gjøres ettersom resultatet ikke vil bli benyttet som grunnlag for den overførte, kodede video dataen, men kun for å sammenligne med et vektorsett for blokkvise beslutninger for "hopp over" eller "ikke hopp over".
Dette sammenligningstrinnet er gjort i trinn 8 etter å ha beregnet absoluttverdien av de transformerte verdiene. Dette kan inkludere og sammenligne de transformerte absoluttverdiene med en vektor av grenseverdier og/eller å sammenligne "energien" i koeffisientmatrisen med en terskelverdi forenergien. "Energien" til koeffisientmatrisen ville bli beregnet ved en vekting av funksjonen og summering av koeffisienter. Terskelverdiverdivektoren og energiens terskelverdi ville avhenge av selve kvantiseringens oppløsning som ville blitt benyttet i den generelle kodingen. Å bestemme om en blokk skal defineres som "hopp over" eller "ikke hopp over", er i hovedsak for og prediktere hvorvidt majoriteten av transformasjonskoeffisientene i de reelle kodede dataene vil være 0 etter kvantiseringstrinnet, som igjen betyr at den er i det laveste kvantiseringsintervallet. Terskelverdivektoren kan da inneholde den laveste kvantiserte terskelverdien for hver blokkposisjon.
Prosedyren i eksemplet ovenfor omfatter kun å bestemme modusen "hopp over" modusen for de fire blokkene 0-3. For å bestemme makroblokkens "hopp over" modus for de resterende blokkene 4-15, gjentas trinnene fire ganger og metoden returnerer "sann" dersom en blokk kan hoppes over, og "usann" hvis en blokk ikke kan hoppes over.
I det følgende er et eksempel på en anvendelse av den foreliggende oppfinnelsen beskrevet, på et overordnet nivå.
I H.264 er forovertransformasjonen av en 4x4 matrise normalt skrevet på følgende måte:
[Y] = [A][X][A]<T>
Der [ Y] er koeffisientmatrisen, [ A] er transformasjonsmatrisen, og [ X] er residualmatrisen. [ A] kan være en DCT transformasjon som dette:
Kjente teknikker innenn fagområdet beskriver metoder med 4-veis SIMD som drar nytte av vektorer med lengde 4 og med 32-bits instruksjoner. I henhold til ett aspekt ved utførelsesformer og anvendelser av den foreliggende oppfinnelse beskrevet heri, vil imidlertid en 16-veis, 32-veis eller 64-veis SIMD metode med vektor av lengde N=16, 32 eller 64 og 8-bit instruksjoner bli benyttet. Som allerede antydet, kan dette gjøres ved å prosessere mer enn 4x4 piksler på en gang. Når matrisene beskrevet ovenfor involveres, innebærer dette for N = 16,
Her er henholdsvis fire [4] matriser og fire [ A] T matriser slått sammen til én for å kunne utføre operasjoner på fire blokker samtidig.
I implementasjonen kan [ Y] beregnes i to operasjoner, først [4] [ X] og deretter ([A][X]) [A]<T>
I en 16x16 makroblokk, er det til sammen 16 4x4 blokker, og i henhold til anvendelse av den foreliggende oppfinnelsen beskrevet heri, må enten fire 16x4 transformasjoner, to 32x4 eller en 64x4 transformasjon behandles. Ifølge anvendelse av den foreliggende oppfinnelsen beskrevet heri, kan mange blokker bli transformert parallelt på grunn av den stadig økende registerstørrelsen i moderne mikroprosessorer. Intel foreksempel, har utvidet størrelsen på vektorregisteret fra tidligere 128-bits xmm registre til dagens 256-bits ymm registre, og fremtidige 512-bits zmm registre.
Det henvises nå til figur 3. For å kunne dra full nytte av 512-bits zmm registre, 64 piksler fra en 16x16 makroblokk kan bli gjort på følgende måte: zmmO, inneholder linje 0, linje 4, linje 8 og linje 12 (illustrert nedenfor med grå farger), zmml inneholder linje 1, linje 5, linje 9, og linje 13, zmm2 inneholder linje 2, linje 6, linje 10 og linje 14 og til slutt zmm3 inneholder linje 3, linje 7, linje 11 og linje 15.
Normalt vil hver av de 16 4x4 makroblokkene måtte transformeres hver for seg, for eksempel på følgende måte:
Her foreslår vi i stedet å transformere alle de 16 4x4 blokker samtidig,
for (int i=0; i < 64; i ++)
Hvis maskinvaren støtter 128-bits instruksjoner, vil en vektor med 64 piksler (SIMD 16) da måtte lagres i fire 128-bit xmm registre, xmmO, xmml, xmm2, og xmm3, eller hvis maskinvaren støtter 256-bits instruksjoner (SIMD 32), må en vektor med 64 piksler lagres i 2 256-bit ymm registre, ymmO og ymml, og til slutt om maskinvaren støtter 512-bits instruksjoner (SIMD 64), ville en vektor med64 piksler måtte trenge å bli lagret i et enkelt 512-bit ymmO registrer. I tilfelle hvor mer enn ett register trengs for å lagre 64 piksler, kan en sløyfe over 64 piksler effektivt rulles ut og føre til et økt nivå av parallellisme i instruksjonen. For eksempel, med nåværende generasjon 256-bit ymm registre, kan sløyfen omskreves til:
Med introduksjonen av SSE2 (Streaming SIMD Extensions 2), blir registeret utvidet til 128-bit, slik at det er mulig å lagre 16 elementer av 8-bit i ett enkelt register, som er en perfekt tilpasning tilimplementeringer i henhold til anvendelse av den foreliggende oppfinnelsen beskrevet heri, og utførelse av 4x4 transformasjoner i henhold til H.264. Reformulering av problemet betyr faktisk at en gjennomfører en 16x4 transformasjon i ett enkelt trinn, og gjør operasjoner på elementer fra alle de fire 4x4 blokkene samtidig. Dermed inneholder en vektor 16 piksler fra fire 4x4 blokker, mens en vektor i
standardformuleringen inneholder fire piksler fra én enkelt 4x4 blokk, som vist i figur 2.
Deretter, når den første matrisemultiplikasjonen i transformasjonen er gjennomført, kan en 16x4 transponering gjøres, ved å omgjøre rader til kolonner og kolonner til rader, og gjenta det samme regnestykket igjen ved å utnytte vektorer med lengde 16.
Et eksempel på en C-kode som viser en sammenligning mellom gjennomføringen i
henhold til kjent kunnskap innenfor fagfeltet og utførelse i henhold til anvendelse av den foreliggende oppfinnelsen beskrevet heri, er vist nedenfor. Den øvre sløyfen er en vanlig implementering som drar nytte av 4-veis SIMD. Den nedre sløyfen er vår gjennomføring som drar nytte av en 16-veis SIMD.
Ettersom anvendelse av den foreliggende oppfinnelse beskrevet heri utføres ved hjelp av 8-bit SIMD for alle beregninger, benytter den resulterende metode kun 132 klokkepulser på gjennomføringen, som er tilstrekkelig raskt for anvendelser i sanntid.
Claims (10)
1. En fremgangsmåte i videokoding implementert i en prosessoren het for å forberede til å bestemme om 4x4 pikselblokker innenfor en makroblokk av transformerte, residualen pikselverdier skal angis som "hoppes over" (skipped) i henhold til en kodestandard, hvor pikslenes posisjonsverdier i makroblokken er angitt som xijrder /' er pikslenes vertikale posisjon innenfor makroblokken, og j er den horisontale pikselposisjonen i makroblokken,karakterisert vedtrinnene: I. å laste gjeldende verdier i makroblokken for posisjonene xi0til xi3inn i en første SIMD vektor, eller xi0til xi3ogX(i+4)otil x^ i+^ 3 inn i den første SIMD 32 vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x(i+8)0til x(i+8)3o<g>z(i+12)0 tilX(i+i2)3inn i den første SIMD vektoren og å konvertere bytes i den første SIMD vektoren fra usignert til signert, II. å laste inn predikerte verdier i makroblokken for posisjonene xi0til xi3inn i en andre SIMD vektor, eller xi0til xi3ogX(i+4)otil 3C(i+4)3 inn i den andre SIMD vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x(i+8)0til x(i+8)3o<g>z(i+12)0 til *(i+i2)3inn i den andre SIMD vektoren, og å konvertere bytes i den andre SIMD vektoren fra usignerte til signert, III. å subtrahere verdiene fra den første SIMD vektoren og verdiene fra de tilsvarende posisjoner i den andre SIMD vektoren, og å utføre en 8-bits metning av de resulterende verdier og å laste de resulterende verdiene inn i en tredje SIMD, IV. å transformere den tredje SIMD vektoren horisontalt med 8-bit metningsaritmetikk og å laste resultatet inn en fjerde SIMD vektor, V. å transponere den fjerde SIMD vektoren, VI. å transformere den fjerde, transponerte, SIMD vektoren vertikalt med 8-bit metningsaritmetikk og å laste resultatet inn i en femte SIMD vektor, videre å sammenligne verdiene til den femte SIMD vektoren assosiert med en 4x4 pikselblokk til makroblokken med tilhørende verdier for en terskelverdivektor, og hvis mer enn et forhåndsdefinert antall av verdier for den femte SIMD vektoren assosiert med en 4x4 pikselblokk er lavere enn de tilsvarende verdier til en terskelverdivektor, da å definere 4x4 pikselblokken som "hoppet over",
å vekte og summere verdiene til den femte SIMD vektoren assosiert til en 4x4 pikselblokk til makroblokken resulterende i en energiverdi knyttet til 4x4 pikselblokken, og hvis energiverdien er lavere enn en forhåndsdefinert terskel, da å definere 4x4 pikselblokken som "hoppes over".;
2. En fremgangsmåte som angitt i krav 1,karakterisert vedtrinnene: a) å sette i = 0, b) å gjennomføre trinnene I - VI, c) å sette i = i + 1 d) å gjenta trinn b) og c) hvis i<4;
3. En fremgangsmåte som angitt i krav 2,karakterisert vedat å utføre en 8-bits metning av de resulterende verdiene involverer å tilordne alle resulterende verdier høyere enn 127 til 127, og å tilordne alle resulterende verdier lavere enn -128 til - 128.;
4. En fremgangsmåte som angitt i ett av krav 2,karakterisert vedat å konvertere bytes fra usignert til signert omfatter å addere -128 til de respektive bytes.;
5. Fremgangsmåte som angitt i ett av krav 2,karakterisert vedat kodingsstandarden er kodingsstandarden H.264/AVC.;
6. Fremgangsmåte som angitt i ett av krav 2,karakterisert vedat prosessorenheten er en Intel prosessoren het.;
7. Fremgangsmåte som angitt i ett av krav 2,karakterisert vedat prosessorenheten er en AMD prosessorenhet.;
8. Et dataprogramprodukt i henhold til metoden ifølge ett av kravene 1-7.;
9. En prosessorenhet for å forberede for å bestemme om en 4x4 pikselblokk innenfor en makroblokk med transformerte, residuale pikselverdier skal angis som "hoppes over" i henhold til en kodingsstandard ved koding av video data, hvor verdien av pikselposisjonene til makroblokken er angitt som xijrder i er vertikal pikselposisjon innenfor makroblokken, og j er den horisontale pikselposisjonen i makroblokken,karakterisert vedat prosessoren videre omfatter en prosesseringskrets konfigurert til: I. Last gjeldende verdier av makroblokken av posisjoner xi0til xi3inn i den første SIMD vektoren, eller xi0til xi3og xii+ i) 0 til xii+ i) 3 inn i den første SIMD 32 vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x(i+8)0til x(i+8)3o<g>xit+ 12) 0 til *(i+i2)3inn i den første SIMD vektorer og konverter byte av den første SIMD vektor fra usignerte til signert, II. Last inn predikerte verdier av makroblokken av posisjoner xi0til xi3inn i en andre SIMD vektor, eller xi0til xi3og x(i+4)0til x(i+4)3inn i den andre SIMD vektoren, eller xi0til xi3og x(i+4)0til x(i+4)3og x(i+8)0 til x(i+8)3og x(i+12)0 tilX(i+i2)3inn i den andre SIMD vektoren og konverter byte av den andre SIMD vektor fra usignerte til signert, III. Subtraher verdiene fra den første SIMD vektoren og verdiene av tilsvarende posisjoner for den andre SIMD vektoren og utfør en 8-bits metning av de resulterende verdiene og laste de resulterende verdiene inn i en tredje SIMD, IV. Transformer den tredje SIMD vektoren horisontalt med 8-bit metningsaritmetikk og last resultatet inn en fjerde SIMD vektor, V. Transponer den fjerde SIMD vektoren, VI. Transformer den fjerde, transponerte, SIMD vektoren vertikalt med 8-bit metningsaritmetikk og last resultatet inn i en femte SIMD vektor, videre
å sammenligne verdiene til den femte SIMD vektoren assosiert med en 4x4 pikselblokk til makroblokken med tilhørende verdier for en terskelverdivektor, og hvis mer enn et forhåndsdefinert antall av verdier for den femte SIMD vektoren assosiert med en 4x4 pikselblokk er lavere enn de tilsvarende verdier til en terskelverdivektor, da å definere 4x4 pikselblokken som "hoppet over",
å vekte og summere verdiene til den femte SIMD vektoren assosiert til en 4x4 pikselblokk til makroblokken resulterende i en energiverdi knyttet til 4x4 pikselblokken, og hvis energiverdien er lavere enn en forhåndsdefinert terskel, da å definere 4x4 pikselblokken som "hoppes over".
10. En prosessorenhet som angitt i krav 11,karakterisert vedat prosessorkretsen videre er konfigurert til: a) å sette i = 0, b) å gjennomføre trinnene I - VI, c) å sette i = i + 1 d) å gjenta trinn b) og c) hvis i<4
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO20121355A NO336218B1 (no) | 2012-11-15 | 2012-11-15 | Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. |
US13/945,152 US8971407B2 (en) | 2012-11-15 | 2013-07-18 | Detection of skip mode |
PCT/EP2013/073796 WO2014076165A1 (en) | 2012-11-15 | 2013-11-14 | Method, computer program and system for determining skip mode |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO20121355A NO336218B1 (no) | 2012-11-15 | 2012-11-15 | Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. |
Publications (2)
Publication Number | Publication Date |
---|---|
NO20121355A1 NO20121355A1 (no) | 2014-05-20 |
NO336218B1 true NO336218B1 (no) | 2015-06-15 |
Family
ID=50935103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20121355A NO336218B1 (no) | 2012-11-15 | 2012-11-15 | Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. |
Country Status (1)
Country | Link |
---|---|
NO (1) | NO336218B1 (no) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264575A1 (en) * | 2003-06-27 | 2004-12-30 | Tandberg Telecom As | Early detection of zeros in the transform domain |
US20050125624A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7751631B2 (en) * | 2006-12-22 | 2010-07-06 | Sony Corporation | Bypass using sum of absolute transformed differences value (SATD) in a video coding process |
-
2012
- 2012-11-15 NO NO20121355A patent/NO336218B1/no unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264575A1 (en) * | 2003-06-27 | 2004-12-30 | Tandberg Telecom As | Early detection of zeros in the transform domain |
US20050125624A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
US7873812B1 (en) * | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
Non-Patent Citations (3)
Title |
---|
BANG H.I. et al.: "An Efficient Skipping Method of H.264/AVC Weighted Prediction for Various Illuminating Effects", publisert i Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), 30 mai - 2 juni 2010, Paris, Frankrike, sidene 1177-1180, E-ISBN: 978-1-4244-5309-2, INSPEC Accession Number: 11463443., Dated: 01.01.0001 * |
CHIANG J-C. et al.: "Block-based Distributed Video Coding with Variable Block Modes", publisert i Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), 30 mai - 2 juni 2010, Paris, Frankrike, sidene 125-128, E-ISBN: 978-1-4244-5309-2, INSPEC Accession Number: 11462795., Dated: 01.01.0001 * |
SONG H. et al.: "Novel Fast Motion Estimation and Mode Decision for H.264 Real-Time High-Definition Encoding", publisert i 5th International Congress on Image and Signal Processing (CISP 2012), 16-18 oktober 2012, Chongqing, Sichuan, Kina, sidene 43-48, ISBN: 978-1-4673-0965-3., Dated: 01.01.0001 * |
Also Published As
Publication number | Publication date |
---|---|
NO20121355A1 (no) | 2014-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10051273B2 (en) | Video decoder and video decoding method | |
CN104125466A (zh) | 一种基于gpu的hevc并行解码方法 | |
WO2021163862A1 (zh) | 视频编码的方法与装置 | |
JP5377395B2 (ja) | 符号化装置、復号装置及びプログラム | |
NO330107B1 (no) | Datamaskinimplementert tidlig dropping | |
KR100958177B1 (ko) | 영상의 부호화 방법 및 장치 | |
JP2021027464A (ja) | 予測ブロック生成装置、画像符号化装置、画像復号装置、及びプログラム | |
JP5302256B2 (ja) | 符号化装置、復号装置及びプログラム | |
NO336218B1 (no) | Metode, datamaskinprogram og system for å bestemme "hopp-over"-modus. | |
US8971407B2 (en) | Detection of skip mode | |
ES2964763T3 (es) | Decisión de intra-codificación temprana | |
US9094686B2 (en) | Systems and methods for faster throughput for compressed video data decoding | |
US20230269368A1 (en) | Supporting multiple partition sizes using a unified pixel input data interface for fetching reference pixels in video encoders | |
Shengfa et al. | Instruction-level optimization of H. 264 encoder using SIMD instructions | |
Hnativ et al. | Discrete cosine-sine transform and fast 16-point integer cosine-sine transform low-complexity for video coding | |
JP2016195294A (ja) | 動き探索処理装置及び画像符号化装置及び動き探索処理方法及びプログラム | |
KR20100130934A (ko) | 영상 데이터의 고속 처리를 위한 연산장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CREP | Change of representative |
Representative=s name: ONSAGERS AS, POSTBOKS 1813, VIKA, 0123 OSLO, NORGE |