NO336218B1 - Method, computer program and system for determining "skip-over" mode. - Google Patents
Method, computer program and system for determining "skip-over" mode. 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)
- Stored Programmes (AREA)
- Advance Control (AREA)
Description
Metode, datamaskinprogram og system for å bestemme "hopp over"-modus. Method, computer program and system for determining "skip" mode.
Teknikkens område The area of technology
Den foreliggende oppfinnelse angår koding av videodata, særlig relatert til å bestemme "hopp over" modus blokker i metoder for koding av videodata. The present invention relates to coding of video data, particularly related to determining "skip" mode blocks in methods of coding video data.
Oppfinnelsens bakgrunn The background of the invention
Overføring av bevegelige bilder i sanntid anvendes i flere bruksområder som for eksempel videokonferanser, nettmøter og videotelefoni. Transmission of moving images in real time is used in several areas of use such as video conferences, online meetings and video telephony.
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. Representation of moving images requires large amounts of information, as digital video is usually represented by up to 60 individual frames per second, where each individual frame is represented by a large number of pixels, which in turn are represented by at least one byte of digital data. Such uncompressed video data results in large volumes of data that cannot be transmitted via conventional communication networks and transmission lines in real time, as it would require an unrealistically large bandwidth.
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. Thus, real-time video transmission video compression is introduced, where the main goal is to represent the video information with as few bits, and to introduce as little delay as possible without compromising the video quality too much.
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. The most common methods of video coding are described in the MPEG<*>and H.26<*>standards. The video data undergoes four main processes before transmission; prediction, transformation, quantization and entropy coding.
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. The prediction process significantly reduces the amount of bits required for each individual frame transmitted in a video sequence. It exploits the similarity of parts of the sequence to other parts of the sequence. Since the prediction part is known to both the encoder and the decoder, only the difference will need to be transmitted. This difference typically requires much less capacity for its representation, and is usually referred to as the residual. The residual, represented as a matrix block of data (eg 4x4 pixels), still contains internal correlation. A well-known method to take advantage of this is to perform a two-dimensional transformation of the block. The ITU standard H.264 uses a 4x4 integer DCT transformation. This transforms 4x4 image pixels into 4x4 transformation coefficients and these can usually be represented with fewer bits than the representation with pixels.
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. Transforming a 4x4 matrix of pixels with internal correlation is likely to result in a 4x4 block of transform coefficients with many fewer non-zero values than the original block of 4x4 pixels.
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. Direct representation of these transformation coefficients is still too expensive for many applications. A quantization process is performed to further reduce the data representation. Therefore, the transformation coefficients undergo a quantization. The possible range of the transformation coefficients' values is divided into value intervals, each bounded by an upper and a lower critical value, and assigned as a fixed quantization value. The transformation coefficients are then quantified until the quantization value is within the interval where the values of the respective coefficients are. Coefficients that have a lower value than the lowest fixed value are quantified as zeros. It should be mentioned that this quantization process results in the reconstructed video sequence being somewhat different compared to the uncompressed sequence.
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. As already indicated, a characteristic of video data to be coded is that the requirements for the number of bits to describe a sequence are highly variable. For several applications, it is known to a person skilled in the art that the content of a significant part of the image is unchanged from single image to single image. H.264 extends this definition so that even those parts of the image with constant movement can be coded without the use of additional information. Areas with little or no change from image to image require a minimal number of bits to be represented. The blocks included in such areas are defined as "skipped" or to be in "skipped" mode, reflecting that no changes, or only predictable movement relative to the corresponding previous blocks occurs, and thus no other data is required for to represent these blocks than an indication that the blocks should be decoded as "skipped". This indication can be common to several macroblocks.
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. As H.264 is a standard for decoding, it does not describe any methods for detecting areas with no or only marginal changes prior to the transformation and quantization process. As a result, these areas can undergo both motion detection, transformation and quantization, although they will eventually be defined as "skipped" and again will not be represented by any data. As these operations require processing power, this is an unnecessary consumption of the resources in the encoder unit.
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. Coding video for HD formats increases the requirements for memory and processing power, and requires efficient and high bandwidth for the memory organizations, combined with computationally intensive capabilities. Because of these requirements, an approach with flexible parallel processing must be found to meet the need in a cost-effective manner.
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ø. Video codecs are usually installed on dedicated hardware in video endpoints with processors based on DSP. However, in recent times it has become more common to install video codecs in generic processors in a SIMD processor environment.
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ø. Normally, the early "skip" process mentioned above is a complicated process that is computationally expensive, as one has to manually change and quantize each of the 16 4x4 blocks, one by one, while using 16-bit and 32-bit precision, which leads to an extensive use of the register in a SIMD processor environment.
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. A simplification of the process around "early skipping" is described in US7295613 "Early detection of zeros in the transform domain" by Gisle Bjøntegaard. However, this simplification does not take into account a SIMD processor environment, and uses the Hadamard transform in "early skip" detection, instead of the DCT. In addition, Bjøntegaard only calculates a few coefficients, and compares these with a scalar threshold. This can produce inaccurate results, which degrade the perceived video quality without achieving any significant improvement in the utilization of a SIMD processor.
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. Therefore, there is a need for a time-saving and processor-efficient method for determining "early skip" that exploits the basic characteristics of general-purpose processors in a SIMD processor environment without compromising data quality. US 2004264575 relates to early detection of zeros in the transform domain, and shows a method that detects blocks to be indicated as skipped at an earlier step in the coding process than would be the case with other implementations of ITU H.263 and H.264 the standards. The known method includes transforming 4x4 blocks into the macroblocks having a "skip" vector of zero with a binary transformation function. The blocks that have the values of the top four left binary transform coefficients less than a predefined threshold are defined as skipped. Therefore, the need for computationally demanding block transformations or quantization is minimized.
US 7873812 er relater til en framgangsmåte og system for effektiv matrisemultiplikasjon I en SIMD-prosessorarkitektur. Det kjente systemet tilveiebringer effektiv US 7873812 relates to a method and system for efficient matrix multiplication in a SIMD processor architecture. The known system provides efficient
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. implementation of matrix multiplication in a SIMD processor. The prior art provides the ability to map any element of a source vector register to be paired with any element of a second source vector register for vector operations, and specifically vector multiplication and vector multiplication accumulation operations to implement a set of matrix multiplications without instructions to relocate or data regrouping. Operations such as DCT and Color-space transforms for video processing can be very efficiently implemented using this system.
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. US 2005125624 relates to a data processing device and method for moving data between register and memory. The report describes a data processing apparatus and procedure for performing adjusted access operations. The data processing apparatus comprises a register data store which has a plurality of registers capable of storing data elements, and a processor capable of performing data processing operations on one or more data elements accessed in at least one of the registers. Further, access logic is provided which is capable, in response to an access instruction, of performing an access operation to move a number of data items between specified registers and a portion of a memory, the portion having a starting address specified by the access instruction. Further, the access instruction has an alignment specification associated therewith that is either set to a first value or one of a plurality of other values. The first value indicates that the start address should be treated as byte-aligned, and each of the other values indicates a different predetermined alignment that the start address should be treated as aligned to. The access logic is then able to adapt the access operation depending on the value of the alignment specification. This provides significantly improved flexibility in the performance of access operations.
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. SONG H. et al.: "Novel Fast Motion Estimation and Mode Decision for H.264 Real-Time High-Definition Encoding", published in 5th International Congress on Image and Signal Processing (CISP 2012), 16-18. October 2012, Chongqing, Sichuan, China, pages 43-48, ISBN: 978-1-4673-0965-3 describes an improved procedure for real-time decoding of an HD video based on the H.264/AVC standard using an algorithm for fast motion estimation (Motion Estimation (ME)) and a mode decision (Mode Decision (MD)). In section II, an algorithm for fast detection of "skip" mode is described which is a first step in an algorithm for early detection of any macroblock skipped before the motion estimation starts, see Figure 1 for an overview of the steps of the algorithm.
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. CHIANG J-C. et al.: "Block-based Distributed Video Coding with Variable Block Modes", published in Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), May 30 - June 2, 2010, Paris, France, pages 125-128 , E-ISBN: 978-1- 4244-5309-2, INSPEC Accession Number: 11462795 describes a block-based distributed video coding using variable block mode. In addition to the intra mode and Wyner-Ziv mode used in conventional block-based video decoding, a further block mode has been added; "Skip Mode" or "Zero Motion Mode" to improve the overall efficiency of decoding.
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. BANG H.I. et al.: "An Efficient Skipping Method of H.264/AVC Weighted Prediction for Various Illuminating Effects", published in Proceedings of 2010 IEEE International Symposium on Circuits and Systems (ISCAS), 30 May- 2 June 2010, Paris, France, pages 1177-1180, E-ISBN: 978-1-4244-5309-2, INSPEC Accession Number: 11463443 describes a method for improving the efficiency of decoding related to H.264/AVC decoding by performing a weighted prediction for different scenarios, typically with rapid changes in the whole or part of the image. Locally weighted prediction is used to improve the efficiency of the decoding in such conditions.
Oppsummering av oppfinnelsen Summary of the invention
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 In the application of the present invention described herein, a method of video coding is implemented in a processing unit for preparing to determine whether 4x4 pixel blocks within a macroblock of transformed residual pixel values should be designated as "skipped" according to a coding standard , where the position values of the pixels in the macroblock are indicated as xijrder/' is the vertical position of the pixels within the macroblock, and ij the horizontal pixel position in the macroblock. The steps: to load the current values in the macroblock for the positions xi0to xi3into a first SIMD vector, or xi0to xi3and x^ i+^ 0 toX(i+4)3into the first SIMD 32 vector, or xi0to xi3and x(i+4)0to x(i+4)3and x(i+8)0 to x(i+8)3o<g>z(i+12)0 to z(i+12)3 into the first SIMD vector and to convert bytes in the first SIMD vector from unsigned to signed, to load predicted values into the macroblock for the positions xi0 to xi3 into a second SIMD vector, or xi0 to xi3and x^ i+^ 0 to x^ i+^ 3 into the second SIMD vector, or xi0 to
*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. *i3and x(i+4)o to x(i+4)3 and x( i+ g) 0 to x( i+ g) 3and *(i+12)0 to x( i+ 12) 3 into the second SIMD vector , and to convert bytes in the second SIMD vector from unsigned to signed, and to subtract the values from the first SIMD vector and the values from the corresponding positions in the second SIMD vector, and to perform an 8-bit saturation of the resulting values and to loading the resulting values into a third SIMD vector, and transforming the third SIMD vector horizontally with 8-bit saturation arithmetic and loading the result into a fourth SIMD vector, and transposing the fourth SIMD vector, and transforming the fourth, transposed, The SIMD vector vertically with 8-bit saturation arithmetic, and loading the result into a fifth SIMD vector, is completed.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte med trinnene: In the application of the present invention described herein, a method with the steps is:
a) å sette i = 0, a) to put i = 0,
b) å gjennomføre trinnene I - VI, b) to carry out steps I - VI,
c) å sette i = i + 1 c) setting i = i + 1
d) å gjenta trinn b) og c) hvis i<4 d) to repeat steps b) and c) if i<4
gitt. granted.
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". In application of the present invention described herein, a method for comparing the values of the fifth SIMD vector associated with a 4x4 pixel block to the macroblock with associated values for a threshold value vector is provided. If more than a predefined number of values for the fifth SIMD vector associated with a 4x4 pixel block are lower than the corresponding values of a threshold value vector, then to define the 4x4 pixel block as "skipped".
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". In application of the present invention described herein, a method for weighting and summing the values of the fifth SIMD vector associated with a 4x4 pixel block to the macroblock resulting in an energy value associated with the 4x4 pixel block is provided. If the energy value is lower than a predefined threshold, then to define the 4x4 pixel block as "skipped".
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. In application of the present invention described herein, a method of performing an 8-bit saturation of the resulting values involves assigning all resulting values higher than 127 to 127, and assigning all resulting values lower than -128 to -128 given .
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. In the application of the present invention described herein, a method for converting bytes from unsigned to signed is provided which comprises adding -128 to the respective bytes.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor kodingsstandarden er kodingsstandarden H.264/AVC gitt. In the application of the present invention described herein, a method where the coding standard is the coding standard H.264/AVC is provided.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor prosessorenheten er en Intel prosessoren het gitt. In the application of the present invention described herein, a method where the processor unit is an Intel processor is provided.
I anvendelse av den foreliggende oppfinnelsen beskrevet heri, er en fremgangsmåte hvor prosessorenheten er en AMD prosessoren het gitt. In the application of the present invention described herein, a method where the processor unit is an AMD processor is provided.
Ved andre anvendelser av den foreliggende oppfinnelsen beskrevet her, er et dataprogramprodukt i henhold til den krevde fremgangsmåte tilveiebrakt. In other applications of the present invention described here, a computer program product according to the required method is provided.
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: In further applications of the present invention described herein, a processor unit for preparing to determine whether 4x4 pixel blocks within a macroblock of transformed residual pixel values should be designated as "skipped" according to a coding standard during video coding is provided. Pixel position values of the macroblock are denoted as xtj, where /' is the vertical pixel position within the macroblock and j is the horizontal pixel position of the macroblock. The processor further comprises a processing circuit configured to:
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, I. to load current values in the macroblock for positions xi0 to xi3 into a first SIMD vector, or xi0 to xi3and xii+ 4) 0 to xii+ 4) 3 into the first SIMD 32 vector, or xi0 to xi3and x(i+4)0 to x( i+4)3and x( i+ g) 0 to x(i+8)3and *(i+12)0 to^1+12)3into the first SIMD vector and to convert bytes in the first SIMD vector from unsigned to signed, II. to load predicted values into the macroblock for positions xi0 to xi3 into a second SIMD vector, or xi0 to xi3and xii+ 4) 0 to 3c(i+4)3 into the second SIMD vector, or xl0 to xl3and x^ l+^ 0 to x ^ l+ i^ 3 and x^ l+ g^ 0 to x^ l+ g^ 3and x^ l+ 12^ 0 to^1+12)3into the second SIMD vector, and to convert bytes in the second SIMD vector from unsigned to signed, III. subtracting the values from the first SIMD vector and the values from the corresponding positions in the second SIMD vector, and performing an 8-bit saturation of the resulting values and loading the resulting values into a third SIMD, IV. to transform the third SIMD vector horizontally with 8-bit saturation arithmetic and to load the result into a fourth SIMD vector,
V. å transponere den fjerde SIMD vektoren, V. to transpose the fourth SIMD vector,
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 WE. to vertically transform the fourth transposed SIMD vector with 8-bit saturation arithmetic and to load the result into a fifth SIMD vector, to compare the values of the fifth SIMD vector associated with a 4x4 pixel block to the macroblock with associated values of a threshold value vector, and if more than a predefined number of values of the fifth SIMD vector associated with a 4x4 pixel block are lower than the corresponding values of a threshold value vector, then defining the 4x4 pixel block as "skipped", weighting and summing the values of the fifth 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". the vector associated with a 4x4 pixel block to the macroblock resulting in an energy value associated with the 4x4 pixel block, and if the energy value is lower than a predefined threshold, then defining the 4x4 pixel block as "skipped".
I anvendelse av den foreliggende oppfinnelsen beskrevet her, er en prosessorenhet med prosessorkretsen videre konfigurert til: In the application of the present invention described herein, a processor unit with the processor circuit is further configured to:
e) å sette i = 0, e) to set i = 0,
f) å gjennomføre trinnene I - VI, f) to carry out steps I - VI,
g) å sette i = i + 1 g) setting i = i + 1
h) å gjenta trinn b) og c) hvis i<4 h) to repeat steps b) and c) if i<4
gitt. granted.
Kort beskrivelse av tegningene Brief description of the drawings
Figur 1 viser en makroblokk delt inn i nummererte blokker, Figure 1 shows a macro block divided into numbered blocks,
Figur 2 illustrerer fire 4x4- blokker, Figure 2 illustrates four 4x4 blocks,
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. Figure 3 illustrates a 16x16 block and how it can be rearranged into an imaginary 4x64 block to take advantage of hardware that supports 256 instructions.
Detaljert beskrivelse av en eksempelutførelsesform Detailed description of an example embodiment
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. In the application of the present invention described herein is a method for quickly determining whether a macroblock in H.264 or other similar standards should be encoded in "skip" mode. The energy of the frequency components is calculated after a further transformation and quantization. Normally, this is a complicated process that is computationally expensive, since one has to manually transform and quantize each of the 16 4x4 blocks, one by one, using 16-bit and 32-bit precision leading to extensive use of the register, especially in SIMD (single instruction, multiple data) environments. SIMD is a class of parallel computers according to Flynn's taxonomy. It describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously. In doing so, such machines exploit the levels of parallelism in the data. Examples of processors with a SIMD environment are Intel and AMD processors. The processing circuit can be a processing unit, a processor, a program specific integrated circuit (ASIC), a field programmable gate array (FPGA - field programmable gate array) or equivalent. As an example, a processor, an ASIC, an FPGA or the like may comprise one or more processor cores.
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. Figure 1 illustrates a macroblock that represents 16x16 pixels in an image, which is further broken down into 4x4 blocks. Each of the 4x4 blocks is numbered for reference in the following description. According to the known technique in the field, the transformation is done for each 4x4 block, but according to embodiments of the present invention described herein, N 4x4 blocks are transformed simultaneously using arithmetic calculations with 8-bit saturation, which limits the use of the processor register considerably. 8-bit saturation simply means that all absolute values above 127 are designated as 127, and all values below -128 are designated as -127. This approach may result in somewhat reduced precision, but in cases where it is transformed to determine whether the blocks should be defined as "skipped" or not "skipped", the inventor has realized that it is highly unlikely that the calculations could exceed 8-bits anyway precision.
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. This is because of the basic properties of the residual information, from which the transformation is calculated. In the data areas where "skip" is assessed, the difference between current and predicted block is so small that it is overwhelmingly likely that 8-bit per pixel is sufficient to represent the residual without resulting in a wrong assessment. 8-bit can represent values between [-128, 127], and if a number of residuals in a block is outside this interval, the block should probably still be defined as "do not skip" as the limit value for "skip" can typically mean on average only 2 or 3 bits per pixel for the residuals.
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. Furthermore, it is a major challenge that many algorithms involve vector sizes that are only a fraction of the register sizes in modern microprocessors. While one can add two vectors of 16 elements in a single clock cycle, a problem may require adding two vectors of only four elements, leaving 16-4=12 unused elements in the register. If, however, the problem can be reformulated to use vectors of size 16, the speed increase will be 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. The algorithm according to an application of the present invention described herein can be exemplified at a higher level with the steps: 1. Load N=4, 8 or 16 current 4x4 blocks and convert from unsigned to signed bytes . 2. Load N=4, 8 or 16 predicted 4x4 blocks and convert from unsigned to signed bytes.
3. Beregn residualen ved hjelp av 8-bit metningsaritmetikk 3. Calculate the residual using 8-bit saturation arithmetic
4. Transformér N=4, 8 eller 16 4x4 blokker horisontalt ved hjelp av 8-bit metningsaritmetikk. 4. Transform N=4, 8 or 16 4x4 blocks horizontally using 8-bit saturation arithmetic.
5. Transponér N=4, 8 eller 16 4x4 blokker. 5. Transpose N=4, 8 or 16 4x4 blocks.
6. Transformér N=4, 8 eller 16 4x4 blokker vertikalt ved hjelp av 8-bit metningsaritmetikk. 6. Transform N=4, 8 or 16 4x4 blocks vertically using 8-bit saturation arithmetic.
7. Beregn absoluttverdien til de N 4x4 blokkenes koeffisienter. 7. Calculate the absolute value of the coefficients of the N 4x4 blocks.
8. Sammenlign de N=4, 8 eller 16 4x4 blokkenes koeffisienter med en terskelverdivektor. 8. Compare the coefficients of the N=4, 8 or 16 4x4 blocks with a threshold value vector.
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]. An unsigned byte is a byte with a value in the range [0,255], and a signed byte is a byte with a value in the range [-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. Loading, for example, N=44x4 blocks at once in a SIMD environment means that the pixel positions x00, xOl, x02 and x03 of 4x4 block number 0 in the macroblock will be loaded into positions 0-3 of a first SIMD vector and the pixel positions x00, xOl, x02, and X03 of 4x4 block number 1 of the macroblock will be loaded into positions 4-7, pixel positions x00, xOl, x02, and x03 of 4x4 block number 2 of the macroblock will be loaded into positions 8-11, and the pixel positions x00, x01, x02, and x03 of the 4x4 block number 3 in the macro block will be loaded into positions 12-15 of the vector. This SIMD vector will therefore be successively filled with the top lines of the N=4 4x4 blocks, as highlighted in Figure 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. Furthermore, pixel positions xlO, xll, xl2, and xl3 to 4x4 block number 0 in the macroblock will be loaded into positions 0-3 in a second SIMD vector, and pixel positions xlO, xll, xl2, and xl3 in 4x4 block number 1 in the macroblock will be loaded into positions 4-7, pixel positions xlO, xll, xl2, and xl3 of 4x4 block number 2 in the macro block will be loaded into positions 8-11, and pixel positions xlO, xll, xl2, and xl3 of 4x4 block number 3 in the macro block will be loaded into positions 12-15 of the vector. This then continues in a similar manner until all the pixel position values of all the N=44x4 blocks are filled in a total of four SIMD vectors.
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. Calculation of the residuals in step 3 involves performing a SIMD addition function on the loaded, saturated SIMD vectors, which results in a calculation of the residuals for N=44x4 blocks simultaneously. A SIMD vector will then include a line of residuals for 4 4x4 blocks in the same line, thus utilizing the entire size of the vector.
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. The method according to applications of the present invention described herein takes advantage of the fact that the processor provides enough space in the register to store N=44x4 sets of 8-bit data. By performing four consecutive readings of 16 linearly adjusted values into 16 SIMD register variables each of which can store 16 values, the entire data set for the operation can be stored within the processor's SIMD register variables, and operated on without any memory-related delay. The horizontal transformation function can then be carried out in step 4 on the N=4 4x4 blocks on a matrix multiplication according to the standard.
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". The symmetry structure of a transformation matrix according to H.246 and similar standards allows the procedure for a complete transformation to be performed in a four-step process by: "transform horizontally - transpose - transform horizontally - transpose". In the algorithm in the example above, apart from the last transposition step, this is done in steps 4-6. Omitting the last transposition step can be done as the result will not be used as a basis for the transferred encoded video data, but only for comparison with a vector set for blockwise "skip" or "don't skip" decisions.
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. This comparison step is done in step 8 after calculating the absolute value of the transformed values. This may include comparing the transformed absolute values with a vector of threshold values and/or comparing the "energy" in the coefficient matrix with a threshold value for the energy. The "energy" of the coefficient matrix would be calculated by a weighting of the function and summation of coefficients. The threshold value vector and the energy threshold value would depend on the resolution of the quantization itself which would have been used in the general coding. Determining whether a block should be defined as "skip" or "don't skip" is essentially to predict whether the majority of the transform coefficients in the real coded data will be 0 after the quantization step, which in turn means it is in the lowest quantization interval . The threshold value vector can then contain the lowest quantized threshold value for each block position.
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. The procedure in the example above involves only determining the "skip" mode for the four blocks 0-3. To determine the macroblock's "skip" mode for the remaining blocks 4-15, the steps are repeated four times and the method returns "true" if a block is skippable, and "false" if a block is not skippable.
I det følgende er et eksempel på en anvendelse av den foreliggende oppfinnelsen beskrevet, på et overordnet nivå. In the following, an example of an application of the present invention is described, at an overall level.
I H.264 er forovertransformasjonen av en 4x4 matrise normalt skrevet på følgende måte: In H.264, the forward transform of a 4x4 matrix is normally written as follows:
[Y] = [A][X][A]<T>[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: Where [ Y] is the coefficient matrix, [ A] is the transformation matrix, and [ X] is the residual matrix. [ A] can be a DCT transform like this:
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, Known techniques in the art describe 4-way SIMD methods that take advantage of vectors of length 4 and with 32-bit instructions. According to one aspect of embodiments and applications of the present invention described herein, however, a 16-way, 32-way or 64-way SIMD method with vector of length N=16, 32 or 64 and 8-bit instructions will be used . As already suggested, this can be done by processing more than 4x4 pixels at once. When the matrices described above are involved, this means 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. Here, respectively, four [4] matrices and four [ A] T matrices are merged into one to be able to perform operations on four blocks simultaneously.
I implementasjonen kan [ Y] beregnes i to operasjoner, først [4] [ X] og deretter ([A][X]) [A]<T>In the implementation, [ Y] can be calculated in two operations, first [4] [ X] and then ([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. In a 16x16 macroblock, there are a total of 16 4x4 blocks, and according to the application of the present invention described herein, either four 16x4 transformations, two 32x4 or one 64x4 transformation must be processed. According to the application of the present invention described herein, many blocks can be transformed in parallel due to the ever-increasing register size in modern microprocessors. Intel, for example, has expanded the size of the vector register from previous 128-bit xmm registers to today's 256-bit ymm registers, and future 512-bit zmm registers.
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. Reference is now made to Figure 3. To take full advantage of the 512-bit zmm registers, 64 pixels from a 16x16 macroblock can be made as follows: zmmO, contains line 0, line 4, line 8 and line 12 (illustrated below with gray colors), zmml contains line 1, line 5, line 9, and line 13, zmm2 contains line 2, line 6, line 10, and line 14 and finally zmm3 contains line 3, line 7, line 11, and line 15.
Normalt vil hver av de 16 4x4 makroblokkene måtte transformeres hver for seg, for eksempel på følgende måte: Normally, each of the 16 4x4 macroblocks would have to be transformed separately, for example in the following way:
Her foreslår vi i stedet å transformere alle de 16 4x4 blokker samtidig, Here we propose instead to transform all 16 4x4 blocks at once,
for (int i=0; i < 64; i ++) 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: If the hardware supports 128-bit instructions, a vector of 64 pixels (SIMD 16) will then need to be stored in four 128-bit xmm registers, xmmO, xmml, xmm2, and xmm3, or if the hardware supports 256-bit instructions (SIMD 32) , a 64-pixel vector would need to be stored in 2,256-bit ymm registers, ymmO and ymml, and finally if the hardware supports 512-bit instructions (SIMD 64), a 64-pixel vector would need to be stored in a single 512- bit ymmO register. In the case where more than one register is needed to store 64 pixels, a loop over 64 pixels can effectively be rolled out and lead to an increased level of instruction parallelism. For example, with current generation 256-bit ymm registers, the loop can be rewritten as:
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 With the introduction of SSE2 (Streaming SIMD Extensions 2), the register is expanded to 128-bit, so that it is possible to store 16 elements of 8-bit in a single register, which is a perfect adaptation to implementations according to the application of the present the invention described herein, and performing 4x4 transformations according to H.264. Reformulating the problem actually means that one performs a 16x4 transformation in a single step, and performs operations on elements from all four 4x4 blocks simultaneously. Thus, a vector contains 16 pixels from four 4x4 blocks, while a vector i
standardformuleringen inneholder fire piksler fra én enkelt 4x4 blokk, som vist i figur 2. the default formulation contains four pixels from a single 4x4 block, as shown in Figure 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. Then, when the first matrix multiplication in the transformation is done, a 16x4 transposition can be done, turning rows into columns and columns into rows, and repeating the same calculation again using vectors of length 16.
Et eksempel på en C-kode som viser en sammenligning mellom gjennomføringen i An example of a C code that shows a comparison between the implementation 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. according to known knowledge within the field and execution according to the application of the present invention described herein, is shown below. The upper loop is a common implementation that takes advantage of 4-way SIMD. The lower loop is our implementation that takes advantage of a 16-way 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. Since the application of the present invention described herein is performed using 8-bit SIMD for all calculations, the resulting method uses only 132 clock pulses per execution, which is sufficiently fast for real-time applications.
Claims (10)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NO20121355A NO336218B1 (en) | 2012-11-15 | 2012-11-15 | Method, computer program and system for determining "skip-over" mode. |
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 (en) | 2012-11-15 | 2012-11-15 | Method, computer program and system for determining "skip-over" mode. |
Publications (2)
Publication Number | Publication Date |
---|---|
NO20121355A1 NO20121355A1 (en) | 2014-05-20 |
NO336218B1 true NO336218B1 (en) | 2015-06-15 |
Family
ID=50935103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NO20121355A NO336218B1 (en) | 2012-11-15 | 2012-11-15 | Method, computer program and system for determining "skip-over" mode. |
Country Status (1)
Country | Link |
---|---|
NO (1) | NO336218B1 (en) |
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/en 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 (en) | 2014-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10051273B2 (en) | Video decoder and video decoding method | |
WO2021163862A1 (en) | Video encoding method and device | |
CN104125466A (en) | GPU (Graphics Processing Unit)-based HEVC (High Efficiency Video Coding) parallel decoding method | |
JP5377395B2 (en) | Encoding device, decoding device, and program | |
NO330107B1 (en) | Computer implemented early dropping | |
KR100958177B1 (en) | Method and apparatus of encoding image | |
JP2021027464A (en) | Prediction block generation device, image coding device, image decoding device, and program | |
NO336218B1 (en) | Method, computer program and system for determining "skip-over" mode. | |
JP5302256B2 (en) | Encoding device, decoding device, and program | |
US8971407B2 (en) | Detection of skip mode | |
EP3754983B1 (en) | Early intra coding decision | |
US9094686B2 (en) | Systems and methods for faster throughput for compressed video data decoding | |
Shengfa et al. | Instruction-level optimization of H. 264 encoder using SIMD instructions | |
US20230269368A1 (en) | Supporting multiple partition sizes using a unified pixel input data interface for fetching reference pixels in video encoders | |
Park et al. | A Pipelined Architecture for Quarter-pel Interpolation in H. 264 | |
KR20100130934A (en) | Computing device for high speed processing of image data | |
JP2016195294A (en) | Motion search processing apparatus and image encoder and motion search processing method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
CREP | Change of representative |
Representative=s name: ONSAGERS AS, POSTBOKS 1813, VIKA, 0123 OSLO, NORGE |