TW201342919A - Data encoding and decoding - Google Patents
Data encoding and decoding Download PDFInfo
- Publication number
- TW201342919A TW201342919A TW101139518A TW101139518A TW201342919A TW 201342919 A TW201342919 A TW 201342919A TW 101139518 A TW101139518 A TW 101139518A TW 101139518 A TW101139518 A TW 101139518A TW 201342919 A TW201342919 A TW 201342919A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- cabac
- encoded
- encoding
- bypass
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims description 78
- 238000000034 method Methods 0.000 claims description 78
- 239000000463 material Substances 0.000 claims description 30
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000003044 adaptive effect Effects 0.000 claims description 6
- 238000013481 data capture Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 37
- 230000006837 decompression Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 26
- 238000006243 chemical reaction Methods 0.000 description 25
- 230000000694 effects Effects 0.000 description 24
- 238000007906 compression Methods 0.000 description 21
- 230000006835 compression Effects 0.000 description 18
- 238000013144 data compression Methods 0.000 description 14
- 238000013139 quantization Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 5
- 238000009795 derivation Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 239000002131 composite material Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- YEPGIYSLLAGBSS-UHFFFAOYSA-M chloro-[3-[(4-iodophenyl)carbamoylamino]-2-methoxypropyl]mercury Chemical compound Cl[Hg]CC(OC)CNC(=O)NC1=CC=C(I)C=C1 YEPGIYSLLAGBSS-UHFFFAOYSA-M 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
- H03M7/4018—Context adapative binary arithmetic codes [CABAC]
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- 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/184—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 bits, e.g. of the compressed video stream
-
- 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/1887—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
本發明主張在分別在2011年11月15日及2011年11月7日於英國專利局所申請之GB1119687.0及GB1119180.6的早先申請日,該等申請案之整個內容係被併入作參考。 The present invention claims that the entire contents of the applications are incorporated in the earlier application days of GB1119687.0 and GB1119180.6, which were filed on November 15, 2011 and November 7, 2011, respectively. reference.
本發明關係於資料編碼及解碼。 The invention relates to data encoding and decoding.
於此所提供之“先前技術”係大致呈現所揭示之本文的目的。現行本案發明人之工作,即在本案先前技術所述之範圍及發明說明之態樣可能在申請時不被視為先前技藝,因此並不表示或暗示承認為本發明之先前技藝。 The "prior art" provided herein generally represents the purpose of the disclosure herein. The current work of the inventor of the present invention, that is, the scope of the prior art and the description of the invention in the present invention may not be considered as prior art at the time of application, and thus does not represent or imply any prior art.
作為資料編碼及解碼技術例,其中有幾項視訊資料壓縮及解壓縮系統,其涉及將視訊資料轉換為頻域表示法、量化頻域係數及然後應用一些形式之熵編碼至被量化的係數。 As an example of data encoding and decoding technology, there are several video data compression and decompression systems, which involve converting video data into frequency domain representation, quantizing frequency domain coefficients, and then applying some form of entropy coding to quantized coefficients.
在本文中,熵可以被認為是表示資料符號或系列符號的資訊內容。熵編碼的目標為以無損方式編碼一系列資料符號,(理想上)使用最少數量的編碼資料位元,其係代表該系列資料符號所需者。在實際上,熵編碼係用以編碼量化係數,使得編碼資料(以位元數量表示)更小於原始 量化係數的資料大小。更有效熵編碼處理對於相同輸入資料大小給出較小輸出資料大小。 In this context, entropy can be thought of as information content that represents a data symbol or series of symbols. The goal of entropy coding is to encode a series of data symbols in a lossless manner, (ideally) using a minimum number of encoded data bits, which are required to represent the data symbols of the series. In practice, the entropy coding is used to encode the quantized coefficients so that the encoded data (in terms of the number of bits) is smaller than the original The size of the data for the quantized coefficients. A more efficient entropy encoding process gives a smaller output data size for the same input data size.
用於熵編碼視訊資料的一種技術係被稱為所謂CABAC(上下文適應二進制算術加碼)技術。這是更一般化算術加碼(AC)技術例。在例示實施法中,量化係數係被分割成相對於係數陣列之表示某些大小及其符號的係數值的位置的資料。因此,例如,所謂“效值圖(significance map)”可以表示在一陣列係數中的位置,在該位置的係數具有非零值。其他圖也可以表示該資料具有值1或更大;或者,該資料具有值2或更大。 One technique for entropy encoding video data is known as the so-called CABAC (Context Adaptation Binary Arithmetic Plus) technique. This is an example of a more generalized arithmetic plus code (AC) technique. In the illustrated embodiment, the quantized coefficients are partitioned into data relative to the position of the coefficient array representing coefficient values of certain sizes and their signs. Thus, for example, a "significance map" can mean a position in an array of coefficients at which the coefficients have a non-zero value. Other maps may also indicate that the material has a value of one or greater; or that the material has a value of two or greater.
在CABAC編碼器及解碼器的基本例子中,效值圖被編碼為CABAC資料,但部份的其他圖係被編碼為所謂旁路資料(被資料編碼為CABAC,但具有固定50%的或然率上下文模型)。效值圖及其他圖為不同個別屬性或相同初始資料項的值範圍的所有代表。因此,各個資料項目被分成為個別次組資料及個別子組被以第一(例如CABAC)及第二(例如旁路)編碼系統加以編碼。 In the basic example of CABAC encoders and decoders, the effect map is encoded as CABAC data, but some of the other maps are encoded as so-called bypass data (coded as CABAC, but with a fixed 50% probability context) model). The effect map and other graphs are all representatives of different individual attributes or ranges of values for the same initial data item. Thus, individual data items are grouped into individual subgroups and individual subgroups are encoded with a first (eg, CABAC) and a second (eg, bypass) encoding system.
大致說來,旁路資料不能以原始形式被引入與CABAC編碼資料的相同資料串流中,但對於任何給定輸出CABAC解碼資料位元,CABAC解碼器已經較當編碼器正編碼該特定資料位元時編碼器已經寫入由該資料串流讀取更多之位元。換句話說,以由該資料串流進一步讀取CABAC編碼資料看來,CABAC解碼器先讀取,因此,其通常被認為不可能引入旁路資料進入與CABAC資料相同 的連續編碼資料串流。 Broadly speaking, the bypass data cannot be introduced into the same data stream as the CABAC coded material in its original form, but for any given output CABAC decoded data bit, the CABAC decoder has been encoding the particular data bit as the encoder is encoding. The meta-time encoder has already written more bits read from the data stream. In other words, in view of further reading of CABAC encoded data from the data stream, the CABAC decoder reads first, so it is generally considered impossible to introduce bypass data into the same CABAC data. Continuously encoded data stream.
本發明提供資料加碼設備,其中一組排序資料被編碼,包含:熵編碼器,用以編碼該排序資料,其中各個資料項被分割成為個別次組之資料及個別次組係為第一及第二編碼系統所編碼,使得對於有關於為第一編碼系統之一群資料項所產生之預定數量的編碼資料,零或更多資料的可變數量係有關於該資料群為該第二編碼系統所產生;及輸出資料串流組合器,用以由該第一及第二編碼系統所編碼的資料產生輸出資料串流,該輸出資料串流包含為第一編碼系統所產生之預定數量的資料的連續封包,其在一資料串流順序中,跟隨著有關於為第一編碼系統所編碼相同的資料項的第二編碼系統所產生之零或更多資料。 The present invention provides a data plus code device, wherein a set of sorted data is encoded, comprising: an entropy encoder for encoding the sorted data, wherein each data item is divided into individual subgroups and individual subgroups are first and The second encoding system is encoded such that for a predetermined number of encoded data generated for a group of data items of the first encoding system, a variable number of zero or more data is associated with the data set for the second encoding system And generating an output stream combiner for generating an output data stream from the data encoded by the first and second encoding systems, the output data stream including a predetermined amount of data generated by the first encoding system A contiguous packet, in a data stream sequence, followed by zero or more data generated by a second encoding system having the same data item encoded for the first encoding system.
本發明之實施例允許(例如)旁路資料在該串流中之預定位置為可用,藉由將該CABAC資料分割成預定長度的封包及隨後跟著每一封包的旁路資料(如果有的話),其對應於該係數被編碼為CABAC資料。使用此一技術,旁路資料可以與CABAC資料同時解譯。因此,本發明之實施例提供一種分割CABAC串流的方法,使得旁路資料可以以原始形式被放置於該串流中,以形成複合CABAC/旁路資料串流及可能可以與CABAC資料(在解碼時)平行解譯。 Embodiments of the present invention allow, for example, bypass information to be available at a predetermined location in the stream by splitting the CABAC data into packets of a predetermined length and then following each packet's bypass material (if any) ), which corresponds to the coefficient is encoded as CABAC data. Using this technique, the bypass data can be interpreted simultaneously with the CABAC data. Accordingly, embodiments of the present invention provide a method of segmenting CABAC streams such that bypass data can be placed in the stream in its original form to form a composite CABAC/bypass data stream and possibly with CABAC data (in Parallel interpretation when decoding.
在一例子中,在一些系統中,所謂旁路資料係被編碼為CABAC串流,藉由將每一位元編碼為如同它為CABAC位元,但具有50%的固定或然率(上下文)。這效果上涉及於編碼時,現行範圍與該旁路位元的乘法,並需要遞迴邏輯(或除法器)以解碼多位元。因為解碼器並沒有方法知道哪些位元為旁路資料及哪些為CABAC資料,所以,旁路資料不能直接引入該位元串流。 In one example, in some systems, the so-called bypass data is encoded as a CABAC stream by encoding each bit as if it were a CABAC bit, but with a 50% fixed probability (context). This effect involves multiplication of the current range with the bypass bit when encoding, and requires recursive logic (or divider) to decode the multi-bit. Because the decoder does not have a way to know which bits are bypass data and which are CABAC data, the bypass data cannot be directly introduced into the bit stream.
然而,藉由將該旁路資料放置在該串流中為該編碼器及解碼器所知的特定位置,不但可能將以原始二元形式寫入旁路資料,也允許多位元被簡單地讀取,同時也允許旁路位元被平行解碼。這將允許旁路資料(例如符號)平行該CABAC資料(例如效值圖)被解碼。 However, by placing the bypass data in a particular location in the stream that is known to the encoder and decoder, it is possible not only to write the bypass data in the original binary form, but also to allow the multi-bit to be simply Read, while also allowing bypass bits to be decoded in parallel. This will allow bypass material (eg, symbols) to be decoded parallel to the CABAC data (eg, the effect map).
下述的技術可以協助藉由排列資料成為預定大小的封包而加以完成,支援平行解碼。 The following techniques can be assisted by arranging data into packets of a predetermined size to support parallel decoding.
注意CABAC只是一例子,本發明可以應用至其他類型加碼包含(但並不限於)一般算術加碼技術。 Note that CABAC is only an example, and the present invention can be applied to other types of code inclusion including, but not limited to, general arithmetic plus code techniques.
本發明之實施例也可以提供一資料編碼器,其中,一緩衝器,用以累積由暫存器再正規化的資料,其表示CABAC範圍的下限,及用以將所儲存之資料相關成為一群,如果其具有至少一預定資料數量者;檢測器,用以檢測是否在一群中之所有資料具有資料值1沒有進位,如果是,則用以指定該群為第一類型的一群;如果否,則該群被指定為第二類型的一群;一緩衝器讀取器,如果後續儲存群為第二類型,用以 由該緩衝器讀取第一類型的一群,及將該讀取群插入輸出資料串流;檢測器,用以檢測在該緩衝器是否出現有多於一預定數量的第一類型的群,如果是,則用以終止及重新開始該資料的編碼。 Embodiments of the present invention may also provide a data encoder, wherein a buffer is used to accumulate data renormalized by the register, which represents a lower limit of the CABAC range, and is used to correlate the stored data into a group. If it has at least one predetermined amount of data; a detector for detecting whether all of the data in the group has a data value of 1 without a carry, and if so, for designating the group as a group of the first type; if not, Then the group is designated as a group of the second type; a buffer reader, if the subsequent storage group is of the second type, Reading, by the buffer, a group of the first type, and inserting the read group into the output data stream; and detecting, by the detector, detecting whether more than a predetermined number of the first type of groups appear in the buffer, if Yes, it is used to terminate and restart the encoding of the material.
本發明之進一步個別態樣及特性係在隨附之申請專利範圍加以定義。 Further individual aspects and characteristics of the present invention are defined in the scope of the accompanying patent application.
可以了解的是,本發明之前述一般說明及以下詳細說明係為例示,但並不是用以限制本發明。 It is to be understood that the foregoing general description of the invention
現參考附圖,圖1至4係被提供以給定示意顯示利用以下所述之有關本發明之實施例的壓縮及/或解壓縮設備的設備或系統。 DETAILED DESCRIPTION OF THE INVENTION Referring now to the drawings, Figures 1 through 4 are provided to provide a schematic representation of an apparatus or system utilizing a compression and/or decompression device in accordance with an embodiment of the present invention as described below.
所有資料壓縮及/或解壓縮設備係被以硬體、執行於一般目的資料處理設備,例如一般目的電腦的軟體實施加以描述,其係被實施為可程式硬體,例如特定應用積體電路(ASIC)或場可程式閘陣列(FPGA)或其組合。當實施例被以軟體及/或韌體實施時,將了解的是,此軟體及/或韌體,及非暫態機器可讀取資料儲存媒體,其中儲存或提供有此等軟體及/或韌體,並被認為是本發明之實施例。 All data compression and/or decompression devices are described in hardware as a general purpose data processing device, such as a general purpose computer software implementation, which is implemented as a programmable hardware, such as a specific application integrated circuit ( ASIC) or field programmable gate array (FPGA) or a combination thereof. When the embodiment is implemented in software and/or firmware, it will be appreciated that the software and/or firmware, and non-transitory machine can read data storage media in which such software and/or software are stored or provided. Firmware, and is considered to be an embodiment of the present invention.
圖1示意例示使用視訊資料壓縮及解壓縮的音訊/視訊資料傳輸及接收系統。 FIG. 1 schematically illustrates an audio/video data transmission and reception system using video data compression and decompression.
輸入音訊/視訊信號10係被供給至視訊資料壓縮設備20,其壓縮該視訊/音訊信號10的至少視訊分量,用以沿著例如纜線、光纖、無線鏈路或類似物之傳輸路由30傳輸。壓縮信號係為解壓縮設備40所處理,以提供輸出音訊/視訊信號50。對於返回路徑,壓縮設備60壓縮音訊/視訊信號,用以沿著傳輸路由30傳輸至解壓縮設備70。 The input audio/video signal 10 is supplied to a video data compression device 20 that compresses at least the video component of the video/audio signal 10 for transmission along a transmission path 30 such as a cable, fiber optic, wireless link or the like. . The compressed signal is processed by decompression device 40 to provide an output audio/video signal 50. For the return path, compression device 60 compresses the audio/video signals for transmission along transmission path 30 to decompression device 70.
壓縮設備20及解壓縮設備70因此可以形成傳輸鏈路的一節點。解壓縮設備40及解壓縮設備60可以形成傳輸鏈路的另一節點。當然,例如,當傳輸鏈路為單向,則這些節點只有一節點需要一壓縮設備,及另一節點將只需要解壓縮設備。 The compression device 20 and the decompression device 70 can thus form a node of the transmission link. Decompression device 40 and decompression device 60 may form another node of the transmission link. Of course, for example, when the transmission link is unidirectional, only one node of these nodes requires a compression device, and the other node will only need to decompress the device.
圖2示意顯示使用視訊資料解壓縮的視訊顯示系統。更明確地說,一壓縮音訊/視訊信號100係為解壓縮設備110所處理,以提供可以被顯示在顯示器120上之解壓縮信號。解壓縮設備110可以被實施為顯示器120的整合部件,例如被設在與顯示裝置的相同外殼內。或者,解壓縮設備110可以被提供(例如)所謂機頂盒(STB),注意用語"機頂"並不必然表示該盒需要被定位在相關於顯示器120的任何特定方向或位置;其簡單地為該技藝所用之用語,表示一裝置,其係可連接至顯示器作為週邊裝置。 Figure 2 is a schematic illustration of a video display system decompressed using video data. More specifically, a compressed audio/video signal 100 is processed by decompression device 110 to provide a decompressed signal that can be displayed on display 120. The decompression device 110 can be implemented as an integrated component of the display 120, such as within the same housing as the display device. Alternatively, decompression device 110 may be provided, for example, as a so-called set top box (STB), noting that the term "set" does not necessarily mean that the box needs to be positioned in any particular direction or position associated with display 120; it is simply The term used in the art refers to a device that can be connected to a display as a peripheral device.
圖3示意顯示使用視訊資料壓縮及解壓縮的音訊/視訊儲存系統。輸入音訊/視訊信號130係被供給至壓縮設備140,其產生用以為儲存裝置150所儲存之壓縮信號,儲存裝置150例如磁碟裝置、光碟裝置、磁帶裝置、固態 儲存裝置,例如半導體記憶體或其他儲存裝置。為了播放,壓縮資料係被由儲存裝置150所讀取並被傳送至解壓縮設備160,用以解壓縮,以提供輸出音訊/視訊信號170。 Figure 3 shows an audio/video storage system using video data compression and decompression. The input audio/video signal 130 is supplied to a compression device 140 that generates a compressed signal for storage by the storage device 150, such as a disk device, a disk device, a tape device, a solid state A storage device, such as a semiconductor memory or other storage device. For playback, the compressed data is read by storage device 150 and transmitted to decompression device 160 for decompression to provide an output audio/video signal 170.
可以了解的是,壓縮或編碼信號,及儲存該信號的儲存媒體係被認為本發明之實施例。 It will be appreciated that a compressed or encoded signal, and a storage medium storing the signal, are considered to be embodiments of the present invention.
圖4示意顯示使用視訊資料壓縮的攝影機。在圖4中,例如電荷耦合裝置(CCD)影像感應器及相關控制及讀出電子電路的影像捕捉裝置180產生視訊信號,其係被傳送至壓縮設備190。麥克風(或多數麥克風)200產生予以被傳送至壓縮設備190的音訊信號。壓縮設備190產生予以儲存及/或傳輸(大致以例示級220表示)的壓縮音訊/視訊信號210。 Figure 4 shows schematically a camera compressed using video data. In FIG. 4, a video capture device 180, such as a charge coupled device (CCD) image sensor and associated control and readout electronics, generates a video signal that is transmitted to compression device 190. The microphone (or majority of microphones) 200 produces an audio signal that is transmitted to the compression device 190. Compression device 190 generates a compressed audio/video signal 210 that is stored and/or transmitted (generally represented by exemplary stage 220).
以下所述之技術係主要關係於視訊資料壓縮。將了解的是,很多現存技術可以被用於配合下述之視訊資料壓縮技術用於音訊資料壓縮,以產生壓縮音訊/視訊信號。因此,音訊資料壓縮的分開討論將不被提供。將了解的是,有關於視訊資料特別是廣播品質視訊資料的資料率通常係遠高於音訊資料的資料率(不論是壓縮或未壓縮)。因此,可以了解的是,未壓縮音訊資料將附有壓縮視訊資料以形成壓縮音訊/視訊信號。更進一步了解,雖然本例子(示於圖1至4)有關於音訊/視訊資料,但予以說明如下之技術可以在系統中很有用,其簡單地處理(即壓縮、解壓縮、儲存、顯示及/或傳送)視訊資料。也就是說,該 等實施例可以應用至視訊資料壓縮,而不必然有任何相關的音訊資料處理。 The techniques described below are primarily related to video data compression. It will be appreciated that many existing techniques can be used with video data compression techniques described below for audio data compression to produce compressed audio/video signals. Therefore, a separate discussion of audio data compression will not be provided. It will be appreciated that the data rate for video material, especially broadcast quality video data, is generally much higher than the data rate of the audio material (whether compressed or uncompressed). Therefore, it can be appreciated that the uncompressed audio material will be accompanied by compressed video data to form a compressed audio/video signal. It is further understood that although this example (shown in Figures 1 through 4) pertains to audio/video data, the techniques described below can be useful in systems that simply handle (ie, compress, decompress, store, display, and / or transmit) video material. That is, the Embodiments can be applied to video data compression without necessarily having any associated audio data processing.
圖5提供視訊資料壓縮及解壓縮設備的示意概圖。 Figure 5 provides a schematic overview of a video data compression and decompression device.
連續影像的輸入視訊信號300係被供給至加法器310及至影像預估器320。影像預估器320將參考圖6更詳細描述如下。事實上,加法器310執行減法(負加法)運算,其接收輸入視訊信號300於“+”輸入及影像預估器320的輸出於“-”輸入,使得輸入影像係被減去預估影像。該結果被產生所謂殘留影像信號330,代表在實際及投影影像間之差。 The input video signal 300 of the continuous video is supplied to the adder 310 and to the image predictor 320. Image predictor 320 will be described in more detail below with reference to FIG. In effect, adder 310 performs a subtraction (negative addition) operation that receives the input video signal 300 at the "+" input and the output of image predictor 320 at the "-" input such that the input image is subtracted from the predicted image. This result is produced by a so-called residual image signal 330 representing the difference between the actual and projected images.
為何一殘留影像信號產生之理由係如下。資料加碼技術係被描述,即當在予以編碼的影像有較少“能量”時,將被應用至殘留影像信號的技術將傾向於更有效工作。於此,用語“有效”表示對於特定影像品質位準產生更小量的編碼資料的產生,吾人想要(及認為“有效”)產生比實際上可能儘可能小的資料。在殘留影中提及之“能量”相關於包含在殘留影像中之資訊量。如果預估影像係與實質影像相同,則在兩者間之差(即,殘留影像)將可以包含零資訊(零能量)並將很容易將之編碼為小量的編碼資料。通常,如果預估處理可以合理地良好動作,則預期為殘留影像料將包含較該輸入影像為少的資訊(較少能量),同時,將更容易地編碼為小量編碼資料。 The reason why a residual image signal is generated is as follows. The data plus code technique is described as the technique that will be applied to the residual image signal will tend to work more efficiently when there is less "energy" in the image being encoded. Herein, the term "valid" means that a smaller amount of encoded material is generated for a particular image quality level, and we want (and think "effective") to produce data that is as small as possible. The "energy" mentioned in the residual image is related to the amount of information contained in the residual image. If the projected image is the same as the real image, then the difference between the two (ie, the residual image) will contain zero information (zero energy) and will be easily encoded into a small amount of encoded data. In general, if the estimation process can reasonably perform well, it is expected that the residual image material will contain less information (less energy) than the input image, and at the same time, it will be more easily encoded as a small amount of coded material.
殘留影像資料330係被供給至轉換單元340,其產生該殘留影像資料的分立餘弦轉換(DCT)代表。DCT技術 本身為已知並將不會於此詳述。然而,用於本案設備中之技術態樣將更詳細說明如下,更有關於被施加有DCT運算的不同方塊資料的選擇。這些將參考圖7-12加以討論如下。 The residual image data 330 is supplied to a conversion unit 340 which produces a discrete cosine transform (DCT) representation of the residual image data. DCT technology It is known per se and will not be detailed here. However, the technical aspects used in the device of the present invention will be described in more detail below, more specifically regarding the selection of different block data to which DCT operations are applied. These will be discussed below with reference to Figures 7-12.
轉換單元340的輸出,也就是用於影像資料的每一轉換方塊的一組DCT係數係被供給至量化器350。各種量化技術係為視訊資料壓縮領域中所知,範圍由簡單乘法一量化縮放因數至在量化參數的控制下,應用複雜查看表。一般目標有二。第一,量化處理降低轉換資料的可能值數量。第二,量化處理可以增加轉換資料的值為零的似然。這兩者均可以使如下所述之熵編碼處理更有效以產生小量的壓縮視訊資料。 The output of the conversion unit 340, that is, a set of DCT coefficients for each conversion block of the image material, is supplied to the quantizer 350. Various quantization techniques are known in the field of video data compression, ranging from simple multiplication to quantization of scaling factors to the application of complex look-up tables under the control of quantization parameters. There are two general goals. First, the quantization process reduces the number of possible values of the converted material. Second, the quantization process can increase the likelihood that the value of the transformed data is zero. Both of these can make the entropy encoding process as described below more efficient to produce a small amount of compressed video material.
資料掃描處理係為一掃描單元360所應用。掃描處理的目的為重新排序量化之轉換資料,以取得儘可能多之非零量化轉換係數,並因此當然取得儘可能多之零值係數。這些特性可以允許所謂掃描長度加碼或類似技術可以被更有效應用。因此,該掃描處理涉及由量化轉換資料選擇係數,更明確地說,由對應於已經被轉換及量化的影像資料方塊的係數方塊,依據“掃描順序”選擇係數,使得(a)所有係數被選擇一次作為掃描的一部份,及(b)該掃描傾向於提供想要重新排序。用以選擇之掃描順序的技術將說明如下。傾向於給定有用結果的一種例示掃描順序係所謂曲折掃描順序。 The data scanning process is applied by a scanning unit 360. The purpose of the scanning process is to reorder the quantized conversion data to obtain as many non-zero quantized conversion coefficients as possible, and thus of course obtain as many zero value coefficients as possible. These characteristics may allow so-called scan length overweight or similar techniques to be more effectively applied. Therefore, the scanning process involves selecting coefficients by the quantized conversion data, more specifically, selecting coefficients by the coefficient block corresponding to the image data blocks that have been converted and quantized, so that (a) all coefficients are selected. Once as part of the scan, and (b) the scan tends to provide the ones you want to reorder. The technique for selecting the scanning order will be explained as follows. An exemplary scanning sequence that tends to give useful results is the so-called zigzag scanning sequence.
掃描係數然後被傳送至熵編碼器(EE)370。再次, 可以使用各種類型之熵編碼。以下將描述之兩例子為所謂CABAC(上下文適應二進制算術加碼)系統的變形及所謂CAVLC(上下文適應可變長度加碼)系統的變形。在常用語中,CABAC被認為提供較佳效率,及在一些研究中,已經顯示對相較於CAVLC可比較影像品質的編碼輸出資料數量提供10%-20%的降低。然而,CAVLC被認為呈現遠較CABAC為低的複雜度(以實施法表示)。CABAC技術將參考以下圖17加以討論,及CAVLC技術將參考以下圖18及19加以討論。 The scan coefficients are then passed to an entropy encoder (EE) 370. once again, Various types of entropy coding can be used. The two examples which will be described below are variants of the so-called CABAC (Context Adaptation Binary Arithmetic Plus) system and variants of the so-called CAVLC (Context Adaptation Variable Length Plus) system. In common language, CABAC is believed to provide better efficiency, and in some studies it has been shown to provide a 10%-20% reduction in the number of encoded output data compared to CAVLC comparable image quality. However, CAVLC is considered to exhibit a much lower complexity than CABAC (indicated by the implementation). The CABAC technique will be discussed with reference to Figure 17 below, and the CAVLC technique will be discussed with reference to Figures 18 and 19 below.
注意掃描處理及熵編碼處理係被顯示為分開處理,但事實上可以被組合或一起處理。也就是說,資料的讀入熵編碼器可以以掃描順序發生。對應的考量應用至下述之各個逆處理。 Note that the scan processing and the entropy encoding processing are shown as separate processing, but may in fact be combined or processed together. That is to say, the read-in entropy encoder of the data can occur in the scanning order. Corresponding considerations apply to each of the inverse processes described below.
熵編碼器370的輸出與額外資料(上述及/或下述),例如,用以定義預估器320產生預估影像的方式,提供壓縮輸出視訊信號380。 The output of the entropy encoder 370 and the additional data (described above and/or below), for example, to define the manner in which the predictor 320 produces the predicted image, provides a compressed output video signal 380.
然而,因為預估器320本身的操作取決於壓縮輸出資料的解壓縮版本,所以也設有返回路徑。 However, because the operation of the predictor 320 itself depends on the decompressed version of the compressed output data, a return path is also provided.
此特性的理由係如下。在解壓縮處理的適當級(如下述)中,產生殘留資料解壓縮版。此解壓縮殘留資料必須被加入至預估影像,以產生輸出影像(因為原始殘留資料為輸入影像與預估影像間之差)。為了該處理在壓縮側與解壓縮側為可相比,為預估器320所產生之預估影像在壓縮處理與解壓縮處理期間應相同。當然,在解壓縮時,該 設備並不必取用原始輸入影像,而只取用解壓縮影像。因此,在壓縮時,預估器320根據其預估(至少,用於影像間編碼)該壓縮影像的解壓縮版。 The reason for this feature is as follows. In the appropriate level of decompression processing (as described below), a decompressed version of the residual data is generated. This decompressed residual data must be added to the estimated image to produce an output image (because the original residual data is the difference between the input image and the predicted image). For this process to be comparable on the compression side to the decompression side, the estimated image produced by the predictor 320 should be the same during the compression process and the decompression process. Of course, when decompressing, The device does not have to use the original input image, but only the decompressed image. Thus, at the time of compression, the predictor 320 estimates (at least for inter-image encoding) an uncompressed version of the compressed image.
為該熵編碼器370所執行之該熵編碼處理係被認為“無損”,也就是說,其可逆轉以取得第一次被供給至熵編碼器370完全相同的資料。因此,在熵編碼級之前,可以實施返回路徑。確實,為掃描單元360所執行之掃描處理也被認為是無損,但在本實施例中,返回路徑390係由量化器350的輸出至互補逆轉量化器420的輸入。 The entropy encoding process performed for the entropy encoder 370 is considered "lossless", that is, it can be reversed to obtain the same material that was first supplied to the entropy encoder 370. Therefore, the return path can be implemented before the entropy coding stage. Indeed, the scanning process performed for scanning unit 360 is also considered lossless, but in the present embodiment, return path 390 is the input from quantizer 350 to the input of complementary inverse quantizer 420.
在常用語中,熵解碼器410、逆轉掃描單元400、逆轉量化器420及逆轉轉換單元430提供熵編碼器370、掃描單元360、量化器350及轉換單元340的個別逆轉函數。現在,討論將持續透過壓縮處理;解壓縮輸入壓縮視訊信號的處理將分開討論如下。 In the common language, the entropy decoder 410, the reverse scan unit 400, the inverse quantizer 420, and the inverse conversion unit 430 provide individual reversal functions of the entropy encoder 370, the scanning unit 360, the quantizer 350, and the conversion unit 340. Now, the discussion will continue through the compression process; the process of decompressing the input compressed video signal will be discussed separately as follows.
在壓縮處理中,掃描係數係為返回路徑390所由量化器350傳送至逆轉量化器420,其執行掃描單元360的逆轉運算。逆轉量化及逆轉轉換處理係為單元420、430所執行,以產生壓縮-解壓縮殘留影像信號440。 In the compression process, the scan coefficients are passed to the inverse quantizer 420 by the quantizer 350, which returns the path 390, which performs the reversal operation of the scanning unit 360. The inverse quantization and reverse conversion processing is performed by units 420, 430 to generate a compressed-decompressed residual image signal 440.
影像信號440在加法器450加入至預估器320的輸出,以產生重建輸出影像460。此形成至該影像預估器320之一輸入,並將如下所討論。 Image signal 440 is added to the output of predictor 320 at adder 450 to produce reconstructed output image 460. This is formed into one of the input of the image predictor 320 and will be discussed below.
現在,將討論施加至接收壓縮視訊信號470的處理,該信號被供給至熵解碼器410並在為加法器450加至影像預估器320的輸出之前,由該處供給至逆轉掃描單元 400、逆轉量化器420及逆轉轉換單元430的鏈中。在直接用語中,加法器450的輸出460形成輸出解壓縮視訊信號480。事實上,進一步過濾也可以在信號輸出前被應用。 Now, the process of applying to the received compressed video signal 470, which is supplied to the entropy decoder 410 and supplied to the inverse scan unit from the adder 450 before being applied to the output of the image predictor 320, will be discussed. 400. Reverse the chain of the quantizer 420 and the reverse conversion unit 430. In the direct language, the output 460 of adder 450 forms an output decompressed video signal 480. In fact, further filtering can also be applied before the signal is output.
圖6示意顯示預估影像的產生,特別有關於影像預估器320的操作。 Figure 6 is a schematic representation of the generation of an estimated image, particularly with respect to the operation of image predictor 320.
其中有兩基本模式之預估:所謂影像內(intra-image)預估及所謂影像間(inter-inage),或動作補償(MC)預估。 There are two basic models of estimation: the so-called intra-image estimation and so-called inter-inage, or motion compensation (MC) estimation.
影像內預估基礎於方塊影像內容的預估於相同影像內的資料。此對應於所謂在其他視訊壓縮技術內的I-框編碼。不同於I-框編碼,其中整個影像被內編碼,在本實施例中,在內編碼(intra-encoding)與間編碼(inter-encoding)間之選擇可以一方塊一方塊為準地完成,但在本發明之其他實施例,則該選擇仍可以一影像一影像為準地完成。 The intra-image prediction is based on the prediction of the content of the block image in the same image. This corresponds to the so-called I-frame coding within other video compression techniques. Different from the I-frame coding, in which the entire image is intra-coded, in this embodiment, the selection between intra-encoding and inter-encoding can be completed on a block-to-block basis, but In other embodiments of the invention, the selection can still be done on an image-to-image basis.
動作補償預估利用動作資訊,其嘗試以定義予以編碼在現行影像中之影像細節的來源,該來源係在另一鄰接或附近影像中。因此,在理想例子中,在預估影像中之方塊影像資料的內容可以被很簡單地編碼為一參考(動作向量),指向在鄰接影像中之相同或略微不同位置之對應方塊。 The motion compensation estimate utilizes motion information that attempts to define the source of the image detail encoded in the current image, which is in another adjacent or nearby image. Thus, in an ideal example, the content of the block image data in the predicted image can be simply encoded as a reference (motion vector) pointing to the corresponding block at the same or slightly different position in the adjacent image.
回到圖6,如所示兩影像預估配置(對應於影像內及影像間預估),其結果係為在模式信號510的控制下,為 多工器500所選擇,以提供預估影像方塊供給至加法器310及450。該選擇係基於哪一選擇給出最低“能量”(如上所討論,其可以被認為是需要編碼之資訊內容),及該選擇係被發信給在編碼輸出資料串流內的編碼器。在本文中,影像能量可以藉由執行以下加以檢測:將輸入影像嘗試減去兩版本的預估影像的區域;平方該差影像的各個像素值;總和該平方值;及指出兩版本之哪一造成有關於該影像區域的差影像的最低均方值。 Returning to Figure 6, as shown in the two image estimation configurations (corresponding to intra-image and inter-image prediction), the result is under the control of the mode signal 510, The multiplexer 500 is selected to provide an estimated image block supply to the adders 310 and 450. The selection is based on which selection gives the lowest "energy" (as discussed above, which can be considered to be the information content that needs to be encoded), and the selection is sent to the encoder within the encoded output data stream. In this context, image energy can be detected by performing an attempt to subtract the area of the two versions of the predicted image from the input image; square the pixel values of the difference image; sum the squared value; and indicate which of the two versions Causes the lowest mean square value of the difference image for the image area.
在內編碼系統中,實際預估係根據被接收為信號460的一部份的影像方塊加以完成,也就是說,預估係根據編碼-解碼影像方塊加以完成,以在解壓縮設備中完成完全相同的預估。然而,資料可以藉由內模式選擇520由輸入視訊信號300導出,以控制內影像預估器530的操作。 In the inner coding system, the actual estimate is based on the image block received as part of the signal 460, that is, the estimate is done according to the coded-decoded image block to complete in the decompression device. The same estimate. However, the data can be derived from the input video signal 300 by the internal mode selection 520 to control the operation of the intra-image predictor 530.
對於影像間預估,動作補償(MC)預估器540使用例如為動作評估器550所由輸入視訊信號300導出之動作向量的動作資訊。這些動作向量係被動作補償預估器540所應用至重建影像460的處理版本,以產生影像間預估的方塊。 For the inter-image estimation, the motion compensation (MC) predictor 540 uses, for example, motion information of the motion vector derived from the input video signal 300 of the motion evaluator 550. These motion vectors are applied to the processed version of the reconstructed image 460 by the motion compensation predictor 540 to produce an inter-image predicted block.
應用至信號460的處理現將描述。首先,信號係為一過濾單元560所過濾。此涉及施加“去方塊”過濾以移除或至少傾向於降低為轉換單元340所執行之方塊為主處理及後續操作的影響。同時,一適應環過濾器係使用藉由處理重建信號460及輸入視訊信號300所推導的係數加以施加。適應環過濾器係為一類型之過濾器,其使用已知技 術,施加適應過濾器係數至予以過濾的資料。也就是說,過濾器係數可以取決於各種因數加以改變。定義使用哪些過濾器係數的資料係被包含成為編碼輸出資料串流的一部份。 The process applied to signal 460 will now be described. First, the signal is filtered by a filtering unit 560. This involves applying a "deblocking" filter to remove or at least tend to reduce the effects of the blocks performed by the conversion unit 340 for the primary and subsequent operations. At the same time, an adaptive loop filter is applied using coefficients derived by processing the reconstructed signal 460 and the input video signal 300. Adaptable ring filters are a type of filter that uses known techniques Techniques are applied to adapt the filter coefficients to the data to be filtered. That is, the filter coefficients can be varied depending on various factors. The data defining which filter coefficients are used is included as part of the encoded output data stream.
來自過濾器單元560的過濾輸出事實上形成輸出視訊信號480。其也被緩衝於一或更多影像儲存570中;連續影像的儲存係為動作補償預估處理的要求,特別是產生動作向量。為了節省儲存要求,在影像儲存570中所儲存之影像可以被保持於壓縮形式,然後,被解壓縮,用以產生動作向量。為了此特定目的,任何已知壓縮/解壓縮系統可以被使用。所儲存之影像被傳送至內插過濾器580,其產生儲存影像的較高解析度版;在此例子中,中間取樣(次取樣)係被產生,使得為內插過濾器580輸出的該內插影像的解析度為儲存於影像儲存570中之影像解析度(在各個維度中)的8倍。內插影像係被傳送作為至動作評估器550的輸入並同時也至動作補償預估器540。 The filtered output from filter unit 560 in effect forms an output video signal 480. It is also buffered in one or more image stores 570; the storage of the continuous images is a requirement for motion compensation estimation processing, particularly the generation of motion vectors. To save storage requirements, the images stored in image storage 570 can be maintained in a compressed form and then decompressed to generate motion vectors. Any known compression/decompression system can be used for this particular purpose. The stored image is transmitted to an interpolation filter 580 which produces a higher resolution version of the stored image; in this example, an intermediate sampling (subsampling) is generated such that the internal output of the interpolation filter 580 is output. The resolution of the interpolated image is 8 times the resolution (in each dimension) stored in image storage 570. The interpolated image is transmitted as an input to the action evaluator 550 and also to the motion compensated predictor 540.
在本發明之實施例中,提供另一選用級,其係將輸入視訊信號的資料值使用乘法器600乘以四的因數(作用上只移位該資料值向左兩位元),並使用除法器或右移器610在設備的輸出施加對應除法運算(右移兩位元)。因此,左移及右移改變資料只單純作為該設備的內部運算。此手法可以在該設備內提供更高計算準確度,因為任何資料拾入誤差的影響被降低。 In an embodiment of the present invention, another selection stage is provided, which is to multiply the data value of the input video signal by a multiplier 600 by a factor of four (actually shifting only the data value to the left two-digit element) and use The divider or right shifter 610 applies a corresponding division operation (right shift two bits) at the output of the device. Therefore, the left shift and the right shift change data are simply used as internal operations of the device. This approach can provide higher computational accuracy within the device as the impact of any data pick-up errors is reduced.
影像被分割作壓縮處理的方式現將被描述。在基本層 次中,予以壓縮之影像係被認為是一陣列的取樣方塊。為了本討論的目的,考量中之最大此方塊係所謂最大加碼單元(LCU)700(圖7),其代表64×64取樣的正方陣列。於此,討論係有關於亮度取樣。取決於例如4:4:4,4:2:2,4:2:0或4:4:4:4(GBR加鍵資料)的色度模式,其中將有對應於色度方塊的對應色度取樣的不同數字。 The manner in which the image is divided into compression processing will now be described. At the base layer In the second, the image to be compressed is considered to be an array of sampling blocks. For the purposes of this discussion, the largest of these considerations is the so-called maximum plus unit (LCU) 700 (Fig. 7), which represents a square array of 64x64 samples. Here, the discussion is about luminance sampling. Depending on the chromaticity mode of 4:4:4, 4:2:2, 4:2:0 or 4:4:4:4 (GBR plus key data), there will be corresponding colors corresponding to the chrominance blocks. Different numbers for sampling.
三種基本類型方塊將描述:加碼單元、預估單元及轉換單元。通常地,LCU的遞迴細分允許輸入圖片被分割,使得方塊大小及方塊加碼參數(例如預估或殘留加碼模式)可以依據予以編碼的影像的特定特徵加以設定。 The three basic types of blocks will be described: an overweight unit, an estimation unit, and a conversion unit. In general, the recursive subdivision of the LCU allows the input picture to be segmented such that the block size and block plus parameters (e.g., predictive or residual plus mode) can be set based on the particular characteristics of the image being encoded.
LCU可以被細分為所謂加碼單元(CU)。加碼單元為一直正方並具有於8×8取樣至LCU700的全尺寸間之大小。加碼單元可以被排列為一類型之樹狀結構,使得第一細分可以如於圖8所示地發生,給出32×32取樣的加碼單元710;後續細分可以以選擇為基礎地發生,以給出部份16×16取樣的部份加碼單元720(圖9)與8×8取樣的可能一些加碼單元730(圖10)。整體說來,此處理可以提供CU方塊的內容適應加碼樹狀結構,其各個可以大至LCU或小至8×8取樣。輸出視訊資料的編碼根據加碼單元結構加以發生。 The LCU can be subdivided into so-called oversampling units (CUs). The coded unit is always square and has a size between 8x8 samples and the full size of the LCU 700. The coded units may be arranged in a tree structure of a type such that the first subdivision may occur as shown in Figure 8, giving a 32x32 sampled adder unit 710; subsequent subdivisions may occur on a selection basis to give A portion of the 16x16 sampled partial adder unit 720 (FIG. 9) and some 8x8 sampled possible adder units 730 (FIG. 10). Overall, this process can provide the content of the CU block to accommodate the overweight tree structure, each of which can be as large as LCU or as small as 8 x 8 samples. The encoding of the output video material takes place according to the structure of the adding unit.
圖11示意顯示一陣列之預估單元(PU)。預估單元係為用以承載有關於影像預估處理的資訊的基本單元,或換句話說,被加入熵編碼殘留影像資料的額外資料,以由 圖5的設備形成輸出視訊信號。通常,預估單元並不限於形狀為正方者。它們可以採任何其他形狀,尤其是形成正方加碼單元之一的一半的矩形,只要該加碼單元係大於最小(8×8)尺寸即可。該目標為允許鄰近預估單元的邊界(儘可能接近)匹配在該圖片中之真物件的邊界,使得不同預估參數可以被應用至不同真物件。各個加碼單元可以包含一或更多預估單元。 Figure 11 shows schematically an array of prediction units (PUs). The estimation unit is a basic unit for carrying information about the image estimation process, or in other words, additional information added to the entropy coded residual image data. The device of Figure 5 forms an output video signal. In general, the estimation unit is not limited to those whose shape is square. They may take any other shape, especially a rectangle forming one half of one of the square plus code units, as long as the coded unit is larger than the minimum (8 x 8) size. The goal is to allow the boundaries of neighboring prediction units (as close as possible) to match the boundaries of the real objects in the picture so that different prediction parameters can be applied to different real objects. Each of the coded units may include one or more estimation units.
圖12示意顯示轉換單元(TU)的一陣列。轉換單元係為轉換及量化處理的基本單位。轉換單元永遠是正方形並可以採由4×4至32×32取樣之大小。各個加碼單元可以包含一或更多轉換單元。在圖12中之縮寫字SDIP-P簡化所謂短距內預估分割。在此配置中,只有一維轉換被使用,因此一4×N方塊係被透過N轉換傳送至轉換器,輸入資料係根據現行SDIP-P內的先前解碼相鄰方塊及前一解碼相鄰線。 Figure 12 shows schematically an array of conversion units (TUs). The conversion unit is the basic unit of conversion and quantization processing. The conversion unit is always square and can be sized from 4 x 4 to 32 x 32 samples. Each of the coded units may include one or more conversion units. The abbreviation SDIP-P in Fig. 12 simplifies the so-called short-range intra-predictive segmentation. In this configuration, only one-dimensional conversion is used, so a 4×N block is transmitted to the converter through N-conversion, and the input data is based on previously decoded neighboring blocks and previous decoded adjacent lines in the current SDIP-P. .
該內預估處理現將討論如下。一般來說,內預估涉及由相同影像內的先前已編碼及解碼取樣,產生一現行方塊(預估單元)的預估。圖13示意顯示部份編碼影像800。於此,影像係以LCU為基礎由左上向右下編碼。一透過整個影像的處理的例示LCU編碼半路係被顯示為方塊810。在方塊810之上及左方之陰影區820係為己經編碼。方塊810的內容的影像內預估可以使用任一陰影區820,但並不能使用其下的沒有陰影區。 This internal estimation process will now be discussed as follows. In general, the inner estimate involves the generation of an estimate of the current block (estimation unit) from previously encoded and decoded samples within the same image. Figure 13 shows a partial encoded image 800. Here, the image is encoded from the upper left to the lower right on the basis of the LCU. An exemplary LCU coded halfway through the processing of the entire image is shown as block 810. The shaded area 820 above and to the left of block 810 is encoded. An intra-image estimate of the content of block 810 can use any shaded area 820, but cannot be used without an under-shaded area.
如上所討論,方塊810代表LCU;為了影像內預估處 理的目的,這可以更細分為一組更小預估單元。例示預估單元830係被顯示在LCU810內。 As discussed above, block 810 represents the LCU; for intra-image prediction For the purpose of rationality, this can be further subdivided into a smaller set of prediction units. The exemplary prediction unit 830 is displayed within the LCU 810.
影像內預估考量現行LCU810的上方及/或左方的取樣。所需取樣被預估的來源取樣可以位在相對於LCU810內的現行預估單元的不同位置或方向。為了決定哪一方向適用於現行預估單元,根據每一候選方向的嘗試預估結果係被比較,以得知哪一候選方向的結果最接近輸入影像的對應方塊。給出最接近結果的候選方向係被選定為用於該預估單元的預估方向。 The intra-image estimates take into account the sampling above and/or to the left of the current LCU 810. The sample of the desired sample to be estimated may be located at a different location or direction relative to the current prediction unit within the LCU 810. In order to determine which direction is applicable to the current prediction unit, the prediction results for each candidate direction are compared to see which candidate direction results are closest to the corresponding block of the input image. The candidate direction that gives the closest result is selected as the estimated direction for the prediction unit.
該圖片也可以以“切片”為基礎地編碼。在一例子中,切片係為水平相鄰群的LCU。但通常來說,整個殘留影像可以形成一切片,或者一切片可以為單一LCU,或一切片可以為一列之LCU等等。切片可以提供對錯誤給出一些彈性,因為它們被編碼為獨立單元。編碼器及解碼器狀態係在切片邊界被完全地重設。例如,內預估並未執行越過切片邊界,切片邊界係被處理為用於此目的影像邊界。 The picture can also be encoded on a "slice" basis. In one example, the slices are LCUs of horizontally adjacent groups. In general, however, the entire residual image may form a slice, or a slice may be a single LCU, or a slice may be a column of LCUs or the like. Slices can provide some flexibility in giving errors because they are encoded as separate units. The encoder and decoder states are completely reset at the slice boundary. For example, the inner estimate is not executed across the slice boundary, and the slice boundary is processed as the image boundary for this purpose.
圖14例示顯示一組可能(候選)預估方向。整組34候選方向係可以用於8×8、16×16或32×32取樣的預估單元。4×4及64×64取樣的預估單元大小的特殊例子具有減少組之候選方向為其所用(分別17候選方向及5候選方向)。該等方向係由相對於現行方塊位置的水平及垂直位移所決定,但編碼為預估“模式”,其中之一組係如圖15所示。注意所謂DC模式代表周圍上及左手取樣的簡單算術平均。 Figure 14 illustrates the display of a set of possible (candidate) prediction directions. The entire set of 34 candidate direction systems can be used for estimation units of 8x8, 16x16 or 32x32 samples. A special example of estimated cell sizes for 4x4 and 64x64 samples has a reduced candidate direction for the group (17 candidate directions and 5 candidate directions, respectively). These directions are determined by the horizontal and vertical displacements relative to the current block position, but are encoded as an estimated "mode", one of which is shown in Figure 15. Note that the so-called DC mode represents a simple arithmetic average of the surrounding upper and left hand samples.
圖16示意顯示曲折掃描,其係為可為掃描單元360所應用之一掃描圖案。在圖16中,圖案係被顯示為8×8DCT係數的例示方塊,DC係數係被定位在該方塊的左上位置840,且增加水平及垂直空間頻率係為向下增加至左上位置840右方的距離之係數所表示。 FIG. 16 schematically shows a zigzag scan which is one of the scan patterns that can be applied by the scanning unit 360. In FIG. 16, the pattern is shown as an exemplary block of 8x8 DCT coefficients, the DC coefficient is positioned at the upper left position 840 of the block, and the horizontal and vertical spatial frequencies are increased to the right of the upper left position 840. The coefficient of distance is expressed.
注意在一些實施例中,該等係數可以以逆向順序(右下至左上,使用圖16的排序標示)掃描。同時,應注意在一些實施例中,該掃描可以在執行殘留係數的曲折前,由左至右經由幾個(例如於一至三個間)最上水平列。 Note that in some embodiments, the coefficients may be scanned in reverse order (bottom right to top left, using the ranking of Figure 16). At the same time, it should be noted that in some embodiments, the scan may pass through several (eg, between one and three) uppermost horizontal columns from left to right before performing the tortuosity of the residual coefficients.
圖17示意例示CABAC熵編碼器的運算。 Figure 17 schematically illustrates the operation of a CABAC entropy coder.
CABAC編碼器以二進制資料運算,即,資料只以0與1的兩符號表示。編碼器使用所謂上下文模型化處理,其根據先前編碼資料,選擇“上下文”或或然率模型給下一資料。上下文的選擇係以確定性的方式執行,使得根據先前解碼資料的相同決定可以在該解碼器執行,而不必進一步資料(指明上下文)被加入至傳送給該解碼器的編碼資料流。 The CABAC encoder operates in binary data, ie, the data is represented only by two symbols of 0 and 1. The encoder uses a so-called context modeling process that selects a "context" or likelihood model for the next data based on the previously encoded material. The selection of the context is performed in a deterministic manner such that the same decision from the previously decoded material can be performed at the decoder without further data (specifying the context) being added to the encoded data stream transmitted to the decoder.
參考圖17,如果予以編碼之輸入資料並不是二進制形式,則其可以被傳送至二進制轉換器900;若已經為二進制形式,則轉換器900被略過(示意開關910)。在本實施例中,對二進制形式之轉換係實際藉由表示量化DCT係數資料為一連串的二進制“映圖”加以執行或表示,這將如以下所進一步描述。 Referring to Figure 17, if the input data to be encoded is not in binary form, it can be passed to binary converter 900; if it is already in binary form, converter 900 is skipped (schematic switch 910). In the present embodiment, the conversion to the binary form is actually performed or represented by a representation of the quantized DCT coefficient data as a series of binary "maps", as will be further described below.
二進制資料可以然後為兩處理路徑“正常”及“旁路” (其係被示意為分開路徑,但在本發明以下所討論之實施例中可以事實上為相同處理級所實施,只是略微不同的參數)之一所處理。該旁路路徑使用一所謂旁路加碼器920,其並不必然使用與正常路徑相同的形式之上下文模型化。在CABAC加碼的部份例子中,如果有需要特別一批次資料的快速處理,則此旁路路徑可以被選擇,但在本實施例中,所謂“旁路”資料的兩特性係被注意到:第一,旁路資料係為CABAC編碼器(950、960)所處置,只使用代表50%或然率的固定上下文模型;及第二,旁路資料相關於某些類別的資料,一特定例為係數符號資料。或者,正常路徑係為示意開關930、940所選擇。這涉及為上下文模型器950所處理的資料跟著有一加碼引擎960。 Binary data can then be "normal" and "bypass" for both processing paths (It is illustrated as a separate path, but may be implemented in one embodiment of the invention discussed below for the same processing stage, but with slightly different parameters). The bypass path uses a so-called bypass coder 920, which does not necessarily use contextualization of the same form as the normal path. In some examples of CABAC overwriting, if there is a need for a fast processing of a particular batch of data, then this bypass path can be selected, but in this embodiment, the two characteristics of the so-called "bypass" data are noticed. : First, the bypass data is handled by the CABAC encoder (950, 960), using only a fixed context model representing 50% probability; and second, the bypass data is related to certain categories of data, a specific case is Coefficient symbol data. Alternatively, the normal path is selected for the schematic switches 930, 940. This involves the processing of the data for the context modeler 950 followed by a plus code engine 960.
示於圖17的熵編碼器編碼一方塊的資料(即,例如,對應於有關於殘留影像方塊的係數方塊的資料)成為單一值,如果該方塊係整個零值資料所形成。對於未落入此類別的各個方塊,也就是說,至少部份非零資料的方塊,準備有“效值圖”。效值圖表示對於在一予以編碼之資料方塊中之每一位置,如果在該方塊中之對應係數為非零。為二進制形式之效值資料為本身CABAC編碼。效值圖的使用協助壓縮,因為對於具有一數量其效值圖表示為零的係數,並沒有資料需要被編碼為具有一大小的係數。同時,該效值圖可以包含特殊碼,以表示在方塊中之最終非零係數,使得所有最終高頻/尾隨零係數可以省略編碼。在編碼位元流中,效值圖係為定義為效值圖所指明之 非零係數的值之資料所跟隨。 The entropy encoder shown in Fig. 17 encodes a block of data (i.e., data corresponding to a coefficient block having respect to a residual image block) to a single value if the block is formed by the entire zero value material. For each box that does not fall into this category, that is, at least some of the blocks with non-zero data, a "effect map" is prepared. The effect map indicates that for each position in a data block to be encoded, if the corresponding coefficient in the block is non-zero. The value data for the binary form is itself CABAC coded. The use of the effect map assists in compression because there is no data to be encoded as a coefficient having a size for a coefficient having a number of its effect maps representing zero. At the same time, the effect map may contain special codes to represent the final non-zero coefficients in the block such that all final high frequency/tailing zero coefficients may omit the encoding. In the coded bit stream, the value map is defined as the value specified in the effect map. The data of the value of the non-zero coefficient is followed.
映圖資料的其他階段係被準備及編碼。一例子係為映圖,其定義二進制值(1=是,0=否)是否在效值圖之映圖位置中之係數資料已經被指定為“非零”,實際具有“一”的值。另一映圖指明是否在映圖位置效值圖被指明為“非零”的係數資料實際具有“2”的值。另一圖表示,效值圖已經顯示該係數資料為“非零”的這些圖位置,是否該資料具有“大於二”的值。對於再次被指明為“非零”的資料,另一圖表示該資料值(使用預定二進制表示法,例如1代表+、0代表-,當然其他方式也可以)的符號。 The other stages of the map data are prepared and coded. An example is a map that defines whether a binary value (1 = yes, 0 = no) has been specified as "non-zero" in the map position of the effect map, and actually has a value of "one." The other map indicates whether the coefficient data whose map position value map is indicated as "non-zero" actually has a value of "2". Another figure shows that the effect map already shows the map locations where the coefficient data is "non-zero" and whether the data has a value greater than two. For data that is again designated as "non-zero", another figure represents the symbol of the data value (using a predetermined binary representation, such as 1 for +, 0 for - and of course other ways).
在本發明之實施例中,效值圖及其他圖係被以預定方式配置至CABAC編碼器或至旁路編碼器,並為相同初始資料項的不同個別屬性或值範圍的所有代表。在一例子中,至少該效圖為CABAC編碼及至少部份殘留映圖(例如符號資料)被旁路編碼。因此,各個資料項係被分割成個別次組資料及個別次組係被第一(例如CABAC)及第二(例如旁路)編碼系統所編碼。資料的本質及CABAC與旁路編碼的本質係使得對於預定量的CABAC編碼資料,可變數量之零或更多旁路資料係相對於相同初始資料項所產生。因此,例如,如果量化重新排序DCT資料包含大致全部為零的值,則可能沒有旁路資料或者產生很少量的旁路資料,因為旁路資料只有關心效值圖表示該值為非零的圖位置。在另一例子中,在具有很高值係數的量化重新排序DCT資料中,則可能產生顯著數量的旁路資 料。 In an embodiment of the invention, the effect map and other maps are configured in a predetermined manner to the CABAC encoder or to the bypass encoder and are all representatives of different individual attributes or ranges of values for the same initial data item. In an example, at least the effect is a CABAC code and at least a portion of the residual map (eg, symbol data) is bypass coded. Thus, each data item is segmented into individual subgroup data and individual subgroups are encoded by a first (eg, CABAC) and a second (eg, bypass) encoding system. The nature of the data and the nature of CABAC and bypass coding are such that for a predetermined amount of CABAC coded data, a variable number of zero or more bypass data is generated relative to the same initial data item. Thus, for example, if the quantized reordering DCT data contains values that are substantially all zero, there may be no bypass data or a small amount of bypass data, since the bypass data only has a care effect graph indicating that the value is non-zero. Figure location. In another example, in quantitative reordering DCT data with very high value coefficients, a significant amount of bypass may be generated. material.
在本發明之實施例中,效值圖及其他圖係例如為掃描單元360所由量化DCT係數所產生並在受到CABAC編碼前先受到曲折掃描處理(或依據內預估模式,由曲折、水平掃描及垂直掃描所選出之掃描處理)。 In the embodiment of the present invention, the effect value map and other graphs are generated by the quantized DCT coefficients of the scanning unit 360 and subjected to a zigzag scan process before being subjected to CABAC encoding (or according to the internal prediction mode, by zigzag, horizontal Scan and scan the selected scan processing).
通常而言,CABAC編碼涉及預估上下文,或者根據其他先前編碼資料的予以編碼的下一位元的或然率模型。如果下一位元與被或然率模型所指明“幾乎相同”的位元相同,則“下一位元相符於或然率模型”的資訊的編碼可以更有效率地編碼。“下一位元並不相符於或然率模型”則較低效編碼,因此,對於上下文資料的推導對於編碼器的良好操作係重要的。用語“適應”表示上下文或或然率模型係於編碼時被適應或改變,以想要提供對(如未加碼)下一資料提供良好匹配。 In general, CABAC coding involves estimating the context, or a probability model of the next bit of the element encoded according to other previously encoded data. If the next bit is the same as the "almost identical" bit indicated by the likelihood model, then the encoding of the information for the "next bit in accordance with the likelihood model" can be encoded more efficiently. The "next bit does not match the probability model" is less efficient, so the derivation of the context data is important for the good operation of the encoder. The term "adaptive" means that the context or likelihood model is adapted or changed at the time of encoding to provide a good match for the next data (eg, uncoded).
使用簡單類比,在書寫的英語中,字母“U”為相當不常用。但在字母“Q”後的字母位置中,則確實很常用。因此,或然率可能設定“U”的或然率為很低值,但當現行字母為“Q”時,則“U”作為下一字母的或然率模型可以設定為很高或然率值。 Using a simple analogy, in the written English, the letter "U" is quite uncommon. But in the letter position after the letter "Q", it is really common. Therefore, the probability that the probability of setting "U" may be a very low value, but when the current letter is "Q", the probability model of "U" as the next letter may be set to a high probability value.
在本配置中,使用CABAC編碼,對於至少效值圖及圖表示是否非零值為一或二。旁路處理-在這些實施例中係相同於CABAC編碼,但事實上,對於或然率模型係固定於1與0之相等(0.5:0.5)或然率分佈,並被使用於至少符號資料及圖表示是否值>2。對於被指明為>2的這 些資料位置,一分開所謂脫離資料編碼可以用以編碼資料的實際值。這可以包含Golomb-Rice編碼技術。 In this configuration, CABAC encoding is used, and for at least the effect graph and the graph representation whether the non-zero value is one or two. Bypass processing - in these embodiments is the same as CABAC coding, but in fact, the likelihood model is fixed at 1 and 0 equal (0.5:0.5) likelihood distribution and is used for at least symbol data and graph representation of values. >2. For this indicated as >2 The location of these data, a separate separation of the data encoding can be used to encode the actual value of the data. This can include Golomb-Rice coding techniques.
CABAC上下文模型化及編碼處理係更詳細描述於WD4:2011-10-28之201×(E)的“高效視訊加碼的工作草案4”,JCTVC-F803_d5,Draft ISO/IEC23008-HEVC。 The CABAC context modeling and coding process is described in more detail in TD4: 2011-10-28 201 x (E) "Working Draft 4 for Efficient Video Plus", JCTVC-F803_d5, Draft ISO/IEC 23008-HEVC.
圖18例示顯示CAVLC熵編碼處理。 Fig. 18 illustrates a CAVLC entropy encoding process.
有關於以上討論的CABAC,示於圖18之熵編碼處理遵循掃描單元360的操作。已注意到,在轉換及掃描殘留資料中之非零係數經常為±1的順序。該CAVLC加碼器以稱為“尾隨1”(T1s)的變數來表示高頻±1係數的數量。對於這些非零係數,該加碼係數係藉由使用不同(上下文適應)可變長度加碼表加以改良。 Regarding the CABAC discussed above, the entropy encoding process shown in FIG. 18 follows the operation of the scanning unit 360. It has been noted that the non-zero coefficients in the converted and scanned residual data are often in the order of ±1. The CAVLC adder represents the number of high frequency ±1 coefficients in a variable called "Trail 1" (T1s). For these non-zero coefficients, the additive coefficients are improved by using different (context adaptive) variable length adder tables.
參考圖18,第一步驟1000產生值“coeff_token”,以編碼非零係數的總數及尾隨一的數量。在步驟1010,各個尾隨一的符號位元係以逆向掃描順序加以編碼。在步驟1020,各個殘留非零係數係被編碼為“階層”變數,因此,定義這些係數的符號與大小。在步驟1030,變數total_zeros係被用以加碼在最後非零係數前的零的總數。最後,在步驟1040,變數run_before係被用以以逆向掃描順序加碼在各個非零係數前的連續零的數目。上述定義之變數的一起輸出形成編碼資料。 Referring to Figure 18, a first step 1000 produces a value of "coeff_token" to encode the total number of non-zero coefficients and the number of trailing ones. At step 1010, each trailing one of the symbol bits is encoded in a reverse scan order. At step 1020, each residual non-zero coefficient is encoded as a "hierarchy" variable, thus defining the sign and size of these coefficients. At step 1030, the variable total_zeros is used to add the total number of zeros before the last non-zero coefficient. Finally, at step 1040, the variable run_before is used to add the number of consecutive zeros before each non-zero coefficient in the reverse scan order. The output of the variables defined above forms the encoded data.
如上所述,為掃描單元360所執行之掃描操作的預設掃描順序係為曲折掃描並例示於圖16中。在使用影像內編碼的四方塊的其他配置中,則可以取決於影像預估方向 (圖15)及轉換單元(TU)大小,而在曲折掃描、水平掃描及垂直掃描間作出選擇。 As described above, the predetermined scanning order for the scanning operation performed by the scanning unit 360 is a zigzag scanning and is illustrated in FIG. In other configurations of four squares using intra-code encoding, it can depend on the image prediction direction. (Fig. 15) and the conversion unit (TU) size, and choose between zigzag scanning, horizontal scanning and vertical scanning.
如上討論的CABAC處理將更詳細加以描述。 The CABAC process as discussed above will be described in more detail.
至少如同於在提議之HEVC系統所用之CABAC涉及相關於予以編碼之下一位元導出“上下文”或或然率模型。為上下文變數或CV所定義之上下文然後影響該位元係如何編碼。通常而言,如果下一位元係與CV定義為預期更多或然值的值相同,則以降低定義該資料位元所需之輸出位元的數量看來係有利的。 At least as the CABAC used in the proposed HEVC system involves deriving a "context" or likelihood model associated with the encoding of a bit. The context defined for the context variable or CV then affects how the bit is encoded. In general, if the next meta-system is defined to have the same value as the expected more likelihood value for the CV, it would be advantageous to reduce the number of output bits required to define the data bit.
編碼處理涉及映圖一位元至予以編碼在一範圍碼值內的位置。碼值的範圍係被示意例示於圖19A成為一連串之相鄰整數,由下限m_low延伸至上限m_high。此兩限間之差為m_range,其中m_range=m_high-m_low。藉由以下所討論之各種技術,在基本CABAC系統中,m_range係被侷限於256與512之間。m_low可以是任何值。其可以由(例如)零開始,但也可以改變作為所述之編碼處理的一部份。 The encoding process involves mapping a bit to a position within a range of code values. The range of code values is schematically illustrated in Figure 19A as a series of adjacent integers extending from the lower limit m_low to the upper limit m_high. The difference between these two limits is m_range, where m_range=m_high-m_low. In the basic CABAC system, the m_range is limited to between 256 and 512 by various techniques discussed below. M_low can be any value. It can start, for example, from zero, but can also be changed as part of the encoding process described.
碼值的範圍m_range係為相關上下文變數為邊界1100所定義細分為兩次範圍:邊界=m_low+(CV*m_range) The range of code values m_range is the relevant context variable defined for the boundary 1100 subdivided into two ranges: boundary = m_low + (CV * m_range)
因此,上下文變數將總範圍細分為兩次範圍或次部份,一次範圍為有關於零(或下一資料位元)的值,及另一次範圍係為有關於一(或下一資料位元)的值。範圍的細分代表對於下一予以編碼的位元之為該兩位元值的CV 產生所假設的或然率。因此,如果有關於值零的次範圍係小於總範圍的一半時,則此簡化了零被認為在下一符號時比1為低的可能性。 Therefore, the context variable subdivides the total range into two ranges or sub-parts, one for the value with respect to zero (or the next data bit) and the other for the one (or the next data bit) The value of ). The subdivision of the range represents the CV for the next encoded bit as the two-dimensional value. Produce the assumed probability. Thus, if there is a sub-range for the value zero that is less than half of the total range, then this simplifies the possibility that zero is considered to be lower than 1 at the next symbol.
用以定義哪一方式該次範圍應用至可能資料位元值有各種不同或然率存在。在一例中,較低區範圍(即,由m_low至邊界)係被傳統所定義為相關於零的資料位元值。 There are various probabilities of which to define which way the range applies to possible data bit values. In one example, the lower region range (ie, from m_low to boundary) is traditionally defined as a data bit value associated with zero.
編碼器與解碼器維持哪一資料位元值係低或然(經常稱為“最少或然符號”或LPS)的記錄。CV表示LPS,使得CV一直代表0與0.5間之一值。 The encoder and decoder maintain records of which data bit values are low or (often referred to as "least likelihood symbols" or LPS). CV represents LPS such that CV always represents a value between 0 and 0.5.
下一位元(現行輸入位元)現被映射或指定至為該邊界所分割之範圍m_range內的適當次範圍內的碼值。此係被在編碼器及解碼器所使用以下所詳述之技術所確定執行。如果下一位元為0,則代表在由m_low至該邊界的次範圍內的位置的特定碼值係被指定給該位元。如果下一位元為1,在由邊界1100至m_high的次範圍中之特定碼值係被指定給該位元。 The next bit (the current input bit) is now mapped or assigned to the code value within the appropriate sub-range within the range m_range divided by the boundary. This is determined by the encoder and decoder using the techniques detailed below. If the next bit is 0, then a particular code value representing the position within the sub-range from m_low to the boundary is assigned to the bit. If the next bit is 1, a particular code value in the sub-range from the boundary 1100 to m_high is assigned to the bit.
下限m_low及範圍m_range然後被重新定義,以相關於指定碼及該選定次範圍的大小,而修改該組碼值。如果剛編碼位元為零,則m_low未改變但m_range被重新定義為等於m_range*CV。如果剛編碼位元為1,則m_low被移動至邊界位置(m_low+(CV*m_range))及m_range係被重新定義為該邊界與m_high間之差(即,(1-CV)*m_range))。 The lower limit m_low and the range m_range are then redefined to modify the set of code values in relation to the specified code and the size of the selected sub-range. If the coded bit is zero, then m_low is unchanged but m_range is redefined to be equal to m_range*CV. If the coded bit is 1, then m_low is moved to the boundary position (m_low+(CV*m_range)) and m_range is redefined as the difference between the boundary and m_high (ie, (1-CV)*m_range)).
這些替代法係被例示於圖19B及19C。 These alternative methods are illustrated in Figures 19B and 19C.
在圖19B中,資料位元為1因此m_low係被向上移動至先前邊界位置。這提供改版組之碼值,用於下一位元編碼順序中。注意在一些實施例中,CV的值係被改變用於下一位元編碼,至少部份於該剛編碼位元的值上。這就是為何該技術稱為“適應”上下文。CV的改版值係被用以產生新邊界1100’。 In Figure 19B, the data bit is 1 so the m_low is moved up to the previous boundary position. This provides the code value of the revised set for use in the next metacode order. Note that in some embodiments, the value of the CV is changed for the next bit-encoding, at least in part to the value of the just-encoded bit. This is why the technology is called the "adaptation" context. The revised value of the CV is used to generate a new boundary 1100'.
在圖19C中,零值被編碼,因此,m_low保持不變,但m_high係被移動至前一邊界位置。值m_range係被重新定義為m_high-m_low的新值。在此例子中,這已經造成m_range落於其最小允許值(例如256)之下。當此結果被檢出時,值m_range被乘2,即,左移1位元,儘可能如所需地多次以回復m_range至所需範圍的256至512。換句話說,該組碼值於大小上被連續增加,直到其具有至少預定最小大小為止。此例子係被示於圖19D中,這代表圖19C的範圍兩倍,以符合所需之侷限。新邊界1100”係由CV的下一值及改版m_range所導出。 In Fig. 19C, the zero value is encoded, so m_low remains unchanged, but m_high is moved to the previous boundary position. The value m_range is redefined as the new value of m_high-m_low. In this example, this has caused m_range to fall below its minimum allowable value (eg, 256). When this result is detected, the value m_range is multiplied by 2, ie, shifted 1 bit to the left, as many times as necessary to reply m_range to 256 to 512 of the desired range. In other words, the set of code values is continuously increased in size until it has at least a predetermined minimum size. This example is shown in Figure 19D, which represents twice the range of Figure 19C to meet the required limitations. The new boundary 1100" is derived from the next value of the CV and the revised m_range.
只要該範圍必須以此方式乘以二,此處理常稱為“再正規化”,一輸出位元被產生(成為輸出編碼資料位元),一此一位元用於各個再正規化級。 As long as the range must be multiplied by two in this way, this process is often referred to as "renormalization", an output bit is generated (becomes an output encoded data bit), and one bit is used for each renormalization level.
以此方式,間距m_range係取決於CV值(其可以在解碼器被再生)及編碼位元串的適應連續地修改及再正規化。在編碼一連串位元後,所得之間距及再正規化級的數目獨特地定義該編碼位元串流。得知此一最終間距的解碼 器將主要能重建該編碼資料。然而,內藏數學展現其並不實際需要定義該解碼器的間距,而只是定義在該間距內的一位置。這是指定碼值的目的,其係被維持在該編碼器並於編碼該資料結束時,傳送至該解碼器(作為該資料串流的最終部份)。 In this way, the spacing m_range is continuously modified and renormalized depending on the CV value (which can be reproduced at the decoder) and the adaptation of the encoded bit string. After encoding a series of bits, the resulting spacing and the number of renormalization levels uniquely define the encoded bit stream. Know the decoding of this final spacing The device will primarily rebuild the encoded data. However, built-in mathematics shows that it does not actually need to define the spacing of the decoder, but only a position within the spacing. This is the purpose of assigning a code value that is maintained at the encoder and transmitted to the decoder (as the final part of the data stream) at the end of encoding the data.
上下文變數CV係被定義為具有64可能狀態,其係連續地指示由在CV=63之下限(例如1%)至在CV=0至50%或然率的不同或然率。 The context variable CV is defined as having 64 possible states that continuously indicate different likelihoods from a lower limit of CV = 63 (eg, 1%) to a probability of being at CV = 0 to 50%.
CV係依據各種已知因數由一位元改變至下一位元,各因數可能取決於予以編碼的資料的方塊大小而不同。在一些例子中,相鄰及前一影像方塊的狀態可以被列入考量。 The CV is changed from one bit to the next bit according to various known factors, and the factors may vary depending on the block size of the data to be encoded. In some examples, the state of adjacent and previous image blocks can be considered.
指定碼值係由一表產生,其定義新編碼位元應被指定的位置或位置群在相關次範圍內的碼值給每一可能CV值及m_range位元6及7的每一可能值(注意m_range的位元9永遠為1,因為m_range大小上的侷限)。 The specified code value is generated by a table that defines the code value of the new coded bit that should be specified in the position or position group in the relevant sub-range for each possible CV value and each possible value of m_range bits 6 and 7 ( Note that bit 9 of m_range is always 1 because of the limitation in m_range size).
圖20示意例示使用上述技術的CABAC編碼器。 Fig. 20 schematically illustrates a CABAC encoder using the above technique.
該CV係為CV推導單元1120所被初始化(在第一CV時)或修改(在後續CV時)。碼產生器1130依據CV細分現行m_range並使用上述表產生在適當sub_range內的指定資料碼。範圍重設單元1140重設m_range至選定次範圍的範圍。如有必要,正規化器1150重新正規化m_range,輸出一輸出位元,給各個此重新正規化操作。如前所述,在處理結束時,指定碼值也被輸出。 The CV is initialized (at the first CV) or modified (at the subsequent CV) by the CV derivation unit 1120. The code generator 1130 subdivides the current m_range according to the CV and uses the above table to generate the specified material code within the appropriate sub_range. Range reset unit 1140 resets m_range to a range of selected sub-ranges. If necessary, the normalizer 1150 renormalizes m_range and outputs an output bit for each of these renormalization operations. As mentioned earlier, at the end of the process, the specified code value is also output.
在示於圖21的解碼器中,CV係為CV推導單元1220所初始化(當第一CV時)或修改(在後續CV時),其以在編碼器中之單元1120的相同方式加以操作。碼應用單元1230依據CV細分現行m_range並檢測該資料碼置於哪次範圍內。範圍重設單元1240重設m_range至該選定次範圍的範圍。如果必要,正規化器1250回應於接收資料位元重新正規化m_range。 In the decoder shown in Fig. 21, the CV is initialized (when the first CV) or modified (at the subsequent CV) by the CV derivation unit 1220, which operates in the same manner as the unit 1120 in the encoder. The code application unit 1230 subdivides the current m_range according to the CV and detects which range the data code is placed. Range reset unit 1240 resets m_range to the range of the selected secondary range. If necessary, normalizer 1250 renormalizes m_range in response to receiving the data bit.
總結,本案技術允許CABAC資料(即,使用上下文變數的資料)被以16位元(在此例子中)的固定大小封包被寫入至位元串流,該封包稱為’CABAC封包’。在各個’CABAC封包’後,對應’旁路封包’係被寫入該位元串流。 In summary, the technique of the present invention allows CABAC data (i.e., data using context variables) to be written to a bit stream in a 16-bit (in this example) fixed size packet, which is referred to as a 'CABAC packet'. After each 'CABAC packet', a corresponding 'bypass packet' is written to the bit stream.
’旁路封包’(其在大小為可變的)包含任何旁路位元,其附著至CABAC資料,該資料可以只使用包含在先前’CABAC封包’內的位元加以解碼;此旁路資料被直接插入至該串流中。 A 'bypass packet' (which is variable in size) contains any bypass bits that are attached to the CABAC data, which can be decoded using only the bits contained in the previous 'CABAC packet'; this bypass data It is inserted directly into the stream.
為了產生CABAC封包為主串流,編碼器可以被安排以追蹤解碼器已經在各個重新正規化處理後讀取多少位元。該編碼器可以在等於解碼器被初始讀取的位元數目(在本實施例中為9)開始計數。 To generate a CABAC packet as the main stream, the encoder can be arranged to track how many bits the decoder has read after each renormalization process. The encoder can start counting at a number equal to the number of bits (9 in this embodiment) that the decoder was initially read.
一些其他背景資訊將被提供。 Some other background information will be provided.
現參考圖22及23,如上所述,形成視訊編碼設備的一部份的熵編碼器包含第一編碼系統(例如,如CABAC編碼器2400的算術加碼編碼系統)及第二編碼系統(例 如旁路編碼器2410),安排以使得一特定資料字元或值藉由CABAC編碼器或旁路編碼器但非兩者所編碼至最終輸出資料串流。在本發明之實施例,傳送至CABAC編碼器及旁路編碼器的資料值係為個別次組的順序資料值,其係由初始輸入資料(在此例子中為重新排序量化的DCT資料)分割或導出,代表由輸入資料產生之該組“圖”的不同圖。 Referring now to Figures 22 and 23, as described above, an entropy coder forming part of a video encoding device includes a first encoding system (e.g., an arithmetic plus code encoding system such as CABAC encoder 2400) and a second encoding system (example) For example, the bypass encoder 2410) is arranged such that a particular data character or value is encoded by the CABAC encoder or the bypass encoder but not both to the final output data stream. In an embodiment of the invention, the data values transmitted to the CABAC encoder and the bypass encoder are sequential data values of individual subgroups, which are segmented from the initial input data (in this example, reordered quantized DCT data). Or export, representing a different map of the set of "maps" produced by the input data.
在圖22之示意代表圖處理CABAC編碼器與旁路編碼器為分開配置。這在實際上可能是如此,但在另一可能中,則如圖23所例示的單一CABAC編碼器2420係被使用作為圖22的CABAC編碼器2400及旁路編碼器2410。編碼器2420在模式選擇信號2430的控制下操作,以當CABAC編碼器2400的模式中,以操作有適應上下文模型(如上所述),及當於旁路編碼器2410的模式中,以固定50%或然上下文模型操作。 The CABAC encoder and the bypass encoder are separately configured in the schematic representation of FIG. This may be the case in practice, but in another possibility, a single CABAC encoder 2420 as illustrated in FIG. 23 is used as the CABAC encoder 2400 and the bypass encoder 2410 of FIG. The encoder 2420 operates under the control of the mode selection signal 2430 to operate in an adaptive context model (as described above) in the mode of the CABAC encoder 2400, and in the mode of the bypass encoder 2410 to fix 50 % contingency context model operation.
第三可能組合這兩者,在於兩實質相同CABAC編碼器可以平行操作(類似於圖22的平行配置),其差異在於操作為旁路編碼器2410的CABAC編碼器具有其上下文模型固定在50%或然率上下文模型。 The third possible combination is that both substantially identical CABAC encoders can operate in parallel (similar to the parallel configuration of Figure 22) with the difference that the CABAC encoder operating as bypass encoder 2410 has its context model fixed at 50% Probability context model.
CABAC編碼處理與旁路編碼處理的輸出可以儲存(至少暫時地)在個別緩衝器2440、2450。在圖23中,一開關或解多工器2460在模式信號2430的控制下,以配送CABAC編碼資料至緩衝器2450及旁路編碼資料至緩衝器2440。 The output of the CABAC encoding process and the bypass encoding process may be stored (at least temporarily) in the individual buffers 2440, 2450. In FIG. 23, a switch or demultiplexer 2460, under the control of mode signal 2430, distributes CABAC encoded data to buffer 2450 and bypass encoded data to buffer 2440.
使用單一緩衝器的替代配置將如下參考圖26加以描述。 An alternate configuration using a single buffer will be described below with reference to FIG.
圖24及25示意例示視訊解碼設備的熵解碼器形成部的例子。參考圖24,個別緩衝器2510、2500傳送資料至CABAC解碼器2530及旁路解碼器2520,其係被配置使得一特定編碼資料字元或值係為CABAC解碼器或旁路解碼器所解碼,但非兩者所解碼。該解碼資料係為邏輯2540所重新排序為適當順序,以用於後續解碼階段。 24 and 25 schematically illustrate an example of an entropy decoder forming portion of the video decoding device. Referring to Figure 24, the individual buffers 2510, 2500 transmit data to the CABAC decoder 2530 and the bypass decoder 2520, which are configured such that a particular encoded data word or value is decoded by a CABAC decoder or a bypass decoder, But not both. The decoded data is reordered by logic 2540 into the appropriate order for subsequent decoding stages.
在圖24中之示意代表圖處理CABAC解碼器及旁路解碼器為分開配置。實際上也可能是如此,但在另一可能中,則如圖25所示,單一CABAC解碼器2550係被使用為圖24的CABAC解碼器2530及旁路解碼器2520的兩者。解碼器2550在模式選擇信號2560的控制下操作,以當CABAC解碼器2530的模式時,操作有適應上下文模型(如上所述),及在旁路編碼器2520的模式時,操作有固定50%或然率上下文模型。 The schematic representation of the CABAC decoder and the bypass decoder in Fig. 24 are separately configured. In fact, this may be the case, but in another possibility, as shown in FIG. 25, a single CABAC decoder 2550 is used as both the CABAC decoder 2530 and the bypass decoder 2520 of FIG. The decoder 2550 operates under the control of the mode selection signal 2560 to operate with an adaptive context model (as described above) when in the mode of the CABAC decoder 2530, and a fixed 50% operation when bypassing the mode of the encoder 2520. Probability context model.
如前,第三可能組合這兩種,在於兩實質相同CABAC解碼器可以平行操作(類似於圖24的平行配置),其差異為操作為旁路解碼器2520的CABAC解碼器令其上下文模型固定在50%或然上下文模型。 As before, the third may combine the two, in that the two substantially identical CABAC decoders can operate in parallel (similar to the parallel configuration of Figure 24), with the difference being that the CABAC decoder operating as the bypass decoder 2520 has its context model fixed. In the 50% likelihood context model.
在圖25的例子中,一開關或多工器2570在模式信號2560的控制下作動,以適當地由緩衝器2500或緩衝器2510配送CABAC編碼資料至解碼器2550。 In the example of FIG. 25, a switch or multiplexer 2570 operates under the control of mode signal 2560 to properly distribute CABAC encoded data to decoder 2550 by buffer 2500 or buffer 2510.
本發明之實施例將進一步詳述如下,CABAC編碼資 料及旁路編碼資料可以多工為單一資料串流。資料串流的更多細節將在以下說明,但在此階段中,注意在此配置中,輸入緩衝器2500、2510及/或輸出緩衝器2440、2450(如此例子中)可以為單一個別緩衝器2580所替換。因此,在一解碼器配置中,兩輸入緩衝器可以為單一緩衝器所替換,及在編碼器配置中,該兩輸出緩衝器可以為單一緩衝器所替換。在圖26中,緩衝器係被示意例示以包含分界資料位元或字元的垂直線,其係想要以協助代表,其中延伸於橫向中之緩衝器的資料內容(如所示)。 The embodiments of the present invention will be further described in detail below, CABAC coding Material and bypass coded data can be multiplexed into a single data stream. More details of the data streaming will be explained below, but in this phase, note that in this configuration, the input buffers 2500, 2510 and/or the output buffers 2440, 2450 (in this example) may be a single individual buffer. Replaced by 2580. Thus, in a decoder configuration, the two input buffers can be replaced by a single buffer, and in an encoder configuration, the two output buffers can be replaced by a single buffer. In Figure 26, the buffer is schematically illustrated to include vertical lines of delimited data bits or characters that are intended to be representative of the data content (as shown) extending across the buffer in the landscape.
緩衝器2580及其相關讀取及寫入控制配置因此也可以被視為用以藉由第一(例如CABAC)及第二(例如旁路)編碼系統所編碼之資料,產生輸出資料串流的輸出資料組合器的例子。 The buffer 2580 and its associated read and write control configuration can therefore also be considered to be used to generate an output stream of data encoded by the first (eg, CABAC) and second (eg, bypass) encoding systems. An example of an output data combiner.
顯示出兩緩衝器指標器2590、2600。當編碼器輸出緩衝器時,這些代表資料寫入指標,表示在緩衝器中下一資料位元被寫入之位置。在解碼器輸入緩衝器的例子中,這些表示指示緩衝器中之下一資料位元被讀取的位置之資料讀取指標。在本發明之實施例中,指標2590相關於讀取或寫入CABAC編碼資料及指標2600相關於讀取或寫入旁路編碼資料。這些指標及其相關位置的效值將討論如下。 Two buffer indicators 2590, 2600 are shown. When the encoder outputs a buffer, these representative data are written to the indicator, indicating where the next data bit is written in the buffer. In the example of a decoder input buffer, these representations indicate a data read indicator of the location in the buffer where the next data bit was read. In an embodiment of the invention, the indicator 2590 is related to reading or writing CABAC encoded data and the indicator 2600 is related to reading or writing bypass encoded data. The effectiveness of these indicators and their associated locations will be discussed below.
在CABAC編碼器及解碼器的基本例子中,編碼旁路資料(被編碼為CABAC但具有固有50%或然率上下文模型)不能以原始形式引入與CABAC解碼資料相同的資料串流,對於任何給定輸出CABAC解碼資料位元,該 CABAC解碼器已經較當該編碼器正編碼該特定資料位元時,該編碼器已經寫入由該資料串流讀取更多位元。換句話說,CABAC解碼器讀取前方,以由資料串流讀取進一步CABAC編碼資料,及因此並不認為可能引入旁路資料至與CABAC資料相同的連續編碼資料串流。此差異(解碼器向前讀取的數量)可以被稱為“解碼器偏差”。 In the basic example of a CABAC encoder and decoder, the code bypass data (encoded as CABAC but with an inherent 50% likelihood context model) cannot introduce the same data stream as the CABAC decoded data in its original form, for any given output. CABAC decoding data bit, the The CABAC decoder has been written to read more bits from the data stream than when the encoder is encoding the particular data bit. In other words, the CABAC decoder reads the front to read further CABAC encoded data from the data stream, and therefore does not consider it possible to introduce bypass data to the same continuous encoded data stream as the CABAC data. This difference (the number of forward reads by the decoder) can be referred to as "decoder offset."
換句話說,當解碼器正處理二進制值時,其已經具有一些位元,用於暫存器中之下幾個二進制值,這係被稱為“值”。 In other words, when the decoder is processing a binary value, it already has some bits for the lower binary values in the scratchpad, which is called a "value".
然而,如果一種方式可以找出使得旁路資料可以以原始形式使用,旁路資料的多數位元可以使用相對少邏輯或處理負擔立即讀取。本發明之實施例確實允許使得該旁路資料可在串流中之預定位置取用。使用所述之技術,旁路資料可以與CABAC資料同時被讀取。因此,本發明之實施例提供一方法,以將CABAC串流分割,使得旁路資料可以以原始形式放置於該串流中,以形成複合CABAC/旁路資料串流並可能可以平行於CABAC資料讀取(在解碼時)。 However, if one way to find out that the bypass material can be used in its original form, most of the bits of the bypass data can be read immediately with relatively little logic or processing overhead. Embodiments of the present invention do allow for the bypass material to be taken at a predetermined location in the stream. Using the techniques described, the bypass data can be read simultaneously with the CABAC data. Accordingly, embodiments of the present invention provide a method for segmenting a CABAC stream such that bypass data can be placed in the stream in its original form to form a composite CABAC/bypass data stream and possibly parallel to CABAC data. Read (at the time of decoding).
該技術的基礎係將CABAC資料串流(沒有旁路資料)排列為封包。於此,封包表示為一組具有預定長度(位元數)的相鄰編碼CABAC資料位元,其中用語“預定”暗示CABAC資料封包的長度為例如(a)事先決定,(b)為編碼器決定並相關於剩餘的編碼資料串流地傳送至該解碼器,或(c)以解碼器及編碼器已知的方式由先 前編碼/解碼資料導出。 The basis of this technology is to arrange CABAC data streams (without bypass data) as packets. Herein, the packet is represented as a set of adjacent coded CABAC data bits having a predetermined length (number of bits), wherein the term "predetermined" implies that the length of the CABAC data packet is, for example, (a) determined in advance, and (b) is an encoder. Determining and transmitting the remaining encoded data to the decoder in a stream, or (c) by means of a decoder and an encoder known Pre-encoding/decoding data is exported.
在各個CABAC封包被寫入至該輸出資料串流後,對應於包含於該封包內的該編碼係數的旁路資料係(以原始形式)寫至複合輸出資料串流旁。 After each CABAC packet is written to the output data stream, the bypass data corresponding to the encoding coefficient contained in the packet is written (in raw form) to the composite output data stream.
因此,此配置提供輸出資料串流產生的例子,該輸出資料串流包含由第一編碼系統(例如CABAC)所產生之預定數量的資料之連續封包,並在資料串流順序中,跟隨有相關於第一編碼系統所編碼之相同資料項的為第二編碼系統(例如旁路)所產生之零或更多資料。 Thus, this configuration provides an example of output data stream generation comprising a contiguous packet of a predetermined amount of data generated by a first coding system (e.g., CABAC), and in the data stream sequence, followed by correlation The same data item encoded by the first encoding system is zero or more data generated by the second encoding system (eg, bypass).
編碼器追蹤解碼器將在每一解碼後讀取多少位元,以決定在下一封包後的旁路資料的數量。 The encoder tracking decoder will read how many bits after each decoding to determine the amount of bypass material after the next packet.
解碼器可以將該CABAC封包載入緩衝器(例如緩衝器2510)並由該串流的直接讀取旁路資料。或者CABAC及旁路資料可以使用分開指標(參考圖26描述)由共同緩衝器或串流讀取。以此方式,可能,多數旁路位元可以一次讀取,及CABAC及旁路資料可以平行讀取,使得(可能)相對於系統中CABAC資料及旁路資料使用共同算術加碼處理被編碼為單一資料串流的系統增加系統的資料流量。 The decoder can load the CABAC packet into a buffer (e.g., buffer 2510) and read the bypass material directly from the stream. Alternatively, the CABAC and bypass data can be read by a common buffer or stream using separate indicators (described with reference to Figure 26). In this way, it is possible that most of the bypass bits can be read at once, and the CABAC and bypass data can be read in parallel, making it possible (possibly) to be encoded as a single with respect to CABAC data and bypass data in the system using common arithmetic plus code processing. The system of data streaming increases the data traffic of the system.
因此,藉由以直接方式,將CABAC資料分割成封包,有可能組合原始旁路資料與CABAC資料,允許多數位元一次讀取,及/或同時讀取旁路及CABAC資料,允許平行與改良通量。 Therefore, by dividing the CABAC data into packets in a direct manner, it is possible to combine the original bypass data with the CABAC data, allowing most of the bits to be read at once, and/or simultaneously reading the bypass and CABAC data, allowing parallelism and improvement. Flux.
在本發明之實施例中,固定大小的16位元係被用於 CABAC封包。注意,此一固定長度,以所產生之輸出資料的數量;當然,CABAC編碼處理的本質表示在CABAC封包中之16位元當然可以代表輸入資料的可變數量。16位元的長度係大於用於本發明之實施例的CABAC範圍(預設9位元)。同時注意,也可以選擇其他封包長度。 In an embodiment of the invention, a fixed size 16-bit system is used CABAC packet. Note that this fixed length is the number of output data produced; of course, the nature of the CABAC encoding process means that the 16 bits in the CABAC packet can of course represent a variable amount of input data. The 16-bit length is greater than the CABAC range (preset 9 bits) used in embodiments of the present invention. Also note that other packet lengths can also be selected.
初始化暫存器“值”的CABAC資料係被放置於第一封包,其後跟隨CABAC資料,以在第一解碼、第二解碼以此類推後重新正規化。各個CABAC封包含係為原始旁路資料所跟隨,給用於重新正規化CABAC資料係整個被包含在CABAC封包內的所有係數。 The CABAC data that initializes the register "value" is placed in the first packet, followed by the CABAC data to be renormalized after the first decoding, the second decoding, and so on. Each CABAC envelope is followed by the original bypass data, and is used to renormalize all of the coefficients of the CABAC data system that are contained within the CABAC packet.
用於具有重新正規化資料執行通過特定CABAC封包的末端的係數的旁路資料係被置於下一CABAC封包後。 The bypass data for coefficients with renormalized data execution through the end of a particular CABAC packet is placed after the next CABAC packet.
此處理係被示意顥示於圖27,其顯示封包化資料串流的一部份。CABAC封包2610係被顯示為未加陰影方塊及旁路封包2620係被顯示為加陰影方塊,資料順序由左至右。填塞零2630(如下)係被顯示相關於最後CABAC封包。因此,圖27的封包化資料串流提供視訊資料的例子,其包含預定數量的為第一編碼系統所產生的排序資料的連續封包,在資料串流順序中,跟隨有相關於為第一編碼系統所編碼之相同資料項的第二編碼系統所產生之零或更多資料,該第一及第二編碼系統係被安排以熵編碼個別次組的輸入視訊資料,使得對於為第一編碼系統之一群資料項產生的預定數量編碼資料,相關於該群為第二編碼系統所產生之資料,產生可變數量之零或更多資料。 This process is schematically illustrated in Figure 27, which shows a portion of the packetized data stream. The CABAC packet 2610 is shown as an unshaded square and the bypass packet 2620 is shown as a shaded square with data order from left to right. Padding zero 2630 (see below) is shown to be related to the last CABAC packet. Thus, the packetized data stream of Figure 27 provides an example of video data comprising a predetermined number of consecutive packets of ordered data generated by the first encoding system, in the data stream sequence, followed by a first encoding associated with Zero or more data generated by a second encoding system of the same data item encoded by the system, the first and second encoding systems being arranged to entropy encode the input video data of the individual subgroups such that the first encoding system is A predetermined amount of encoded data generated by a group of data items, related to the data generated by the group as the second encoding system, produces a variable amount of zero or more data.
當視訊資料係以一切片一切片為基礎地編碼(其中一切片係為一圖片的次組,使得解碼為自包含,或相較於圖片為其他部份,獨立編碼為獨立部份),相關於特定切片的最後封包可以小於預期的16位元,如果用於該切片的CABAC資料並未結束於封包邊界(也就是說,如果整個切片的CABAC資料總數並不是16位元的倍數)。在此等環境中,最後封包將於長度小於16位元。在此時,最後CABAC封包係為資料串流組合器所填塞,例如,為資料串流組合器所填塞以零至其預期大小,寫入填充資料至緩衝器及將其讀取出作為最後封包的部份。填充資料並未被讀取,因為該解碼器將在取得其之前解碼切片末端的旗標。在此例子中,最大的耗損量為等於小於封包大小一位元。 When the video data is encoded on a slice-by-slice basis (one of the slices is a subgroup of a picture, so that the decoding is self-contained, or the other part is independent of the picture, and the independent coding is a separate part), The last packet for a particular slice can be smaller than the expected 16 bits if the CABAC data for that slice does not end at the packet boundary (that is, if the total CABAC data for the entire slice is not a multiple of 16 bits). In these environments, the last packet will be less than 16 bits in length. At this time, the last CABAC packet is padded by the data stream combiner, for example, padding the data stream combiner to zero to its expected size, writing the padding data to the buffer and reading it out as the last packet. Part of it. The padding data is not read because the decoder will decode the flag at the end of the slice before it is taken. In this example, the maximum amount of wear is equal to one bit less than the packet size.
然而,為了降低耗損量,如果最後CABAC封包沒有相關旁路資料(零旁路資料),則最終封包可以允許短於預期大小-或換句話說,未使用填充資料。此封包含可以稱為“短封包”。 However, in order to reduce the amount of wear, if the final CABAC packet has no associated bypass material (zero bypass data), the final packet may be allowed to be shorter than expected - or in other words, the padding data is not used. This package contains what can be called a "short package."
在本發明實施例中,為了編碼封包形式之資料,該編碼器保持一緩衝器(例如緩衝器2580),其中可以寫入CABAC及旁路資料。於初始化時,CABAC寫入指標2590係被設定為零及旁路寫入指標2600被設定等於第一CABAC封包的大小(例如16位元)。因此,CABAC資料的第一位元將被寫入至緩衝器的開始處,相關於該CABAC封包的旁路資料(如果有的話)的第一位元將被 寫入至由第一CABAC寫入位置偏移開16位元的位置。該指標配置係更詳細例示於圖28。 In an embodiment of the invention, to encode data in the form of a packet, the encoder maintains a buffer (e.g., buffer 2580) in which CABAC and bypass data can be written. At initialization, the CABAC write indicator 2590 is set to zero and the bypass write indicator 2600 is set equal to the size of the first CABAC packet (eg, 16 bits). Therefore, the first bit of the CABAC data will be written to the beginning of the buffer, and the first bit of the bypass material (if any) associated with the CABAC packet will be Write to a position shifted by 16 bits by the first CABAC write position. This indicator configuration is illustrated in more detail in Figure 28.
每當編碼器檢測該解碼器已讀取16位元時,旁路指標前進通過下一CABAC封包(即,對於現行封包由旁路資料的末端前進16位元)。每當編碼器填入CABAC封包時,CABAC寫入指標係前進通過下一旁路封包及CABAC及旁路資料被送至該串流。 Whenever the encoder detects that the decoder has read 16 bits, the bypass indicator proceeds through the next CABAC packet (ie, 16 bits are advanced by the end of the bypass data for the current packet). Whenever the encoder fills in the CABAC packet, the CABAC write indicator is forwarded to the stream through the next bypass packet and CABAC and bypass data.
為了編碼CABAC封包為主串流,可以使用輸出緩衝器,其可以被寫入多個位置。 To encode a CABAC packet as a main stream, an output buffer can be used, which can be written to multiple locations.
兩寫入指標係被使用以索引此緩衝器,第一個表示將CABAC資料寫於何處(於零處開始),第二個表示旁路資料寫於何處(開始於16)。 Two write metrics are used to index this buffer, the first to indicate where the CABAC data is written (starting at zero) and the second to indicate where the bypass data is written (starting at 16).
每當編碼器檢測解碼器已經讀取16位元,旁路指標的位置被注意並增量16。當編碼器完成現行’CABAC封包’寫入,CABAC指標被設定等於旁路指標的注意先前位置。 Whenever the encoder detects that the decoder has read 16 bits, the position of the bypass indicator is noted and incremented by 16. When the encoder completes the current 'CABAC Packet' write, the CABAC indicator is set equal to the attention previous position of the Bypass indicator.
以此方式,每一指標’跳過’其他資料。在任何給定再正規化後,在解碼器已讀取位元總數及編碼器已寫入之位元總數間之差異已經大於一封包的大小。 In this way, each indicator 'skips' other information. After any given renormalization, the difference between the total number of bits read by the decoder and the total number of bits written by the encoder is already greater than the size of a packet.
因此,有必要儲存多數先前旁路指標位置。指標的所需數量可以為最大差異所約束,並為限制末決位元的理由。 Therefore, it is necessary to store most of the previous bypass indicator locations. The required number of indicators can be constrained by the maximum difference and is the reason for limiting the final position.
可以藉由快取圍繞於目標區的位元組,而在一單一寫入循環內,對緩衝器執行非字元對準寫入。 Non-word aligned writes can be performed on the buffer by caching the bytes surrounding the target area within a single write cycle.
以下步驟為描述現行編碼處理的虛擬碼。當有必要時,一些注釋的解釋係在括號內進行。 The following steps are virtual codes that describe the current encoding process. The interpretation of some notes is done in parentheses when necessary.
初始化:set ptr_CABAC=0(CABAC寫入指標)ptr_bypass=16(旁路寫入指標)ptr_bypass_old=未定義decodet_bits_read=9(CABAC_RANGE_BITS) Initialization: set ptr_CABAC = 0 (CABAC write indicator) ptr_bypass = 16 (bypass write indicator) ptr_bypass_old = undefined decodet_bits_read = 9 (CABAC_RANGE_BITS)
步驟1:編碼N CABAC位元:如果N位元配合入現行封包:在ptr_CABAC寫入位元ptr_CABAC+=N(以ptr_CABAC+N替換ptr_CABAC)否則在ptr_CABAC寫入位元,直到封包結束ptr_CABAC=ptr_bypass_old在ptr_CABAC寫入剩餘位元(N’)ptr_CABAC+=N’decoder_bits_read+=N如果decoder_bits_read>=16 decoder_bits_read-=16 ptr_bypass_old=ptr_bypass ptr_bypass+=16 Step 1: Encode the N CABAC bit: If the N bit fits into the current packet: write the bit ptr_CABAC+=N in ptr_CABAC (replace ptr_CABAC with ptr_CABAC+N) otherwise write the bit in ptr_CABAC until the end of the packet ptr_CABAC=ptr_bypass_old ptr_CABAC writes the remaining bits (N') ptr_CABAC+=N'decoder_bits_read+=N if decoder_bits_read>=16 decoder_bits_read-=16 ptr_bypass_old=ptr_bypass ptr_bypass+=16
步驟2:編碼N旁路位元:在ptr_bypass寫入位元ptr_bypass+=N Step 2: Code N bypass bit: write bit ptr_bypass+=N in ptr_bypass
步驟3:如所需地重覆步驟1及步驟2。 Step 3: Repeat steps 1 and 2 as needed.
在編碼設計中,在一組資料末端需要一終止符號,將了解的是,處理在最後封包中之可變數量的CABAC位元應仍然允許此一終止符號。該終止符號可以例如為一具有0或1的預定值之位元,表示一網路抽象層(NAL)資料 串流的末端。 In coding design, a termination symbol is required at the end of a set of data, and it will be appreciated that a variable number of CABAC bits processed in the last packet should still allow for this termination symbol. The termination symbol can be, for example, a bit having a predetermined value of 0 or 1, representing a network abstraction layer (NAL) data. The end of the stream.
使用’[...]’表示先前於此所述之CABAC封包,’C’表示CABAC位元及’R’表示終止符號,最終(短)封包可以然後例如包含類型[CCCCCCCCCCCCCCCR]的位元順序,在此例子中,具有15CABAC位元及一終止位元。 The use of '[...]' denotes a CABAC packet previously described, 'C' denotes a CABAC bit and 'R' denotes a terminating symbol, and the final (short) packet may then, for example, contain the bit order of the type [CCCCCCCCCCCCCCCR]. In this example, there are 15 CABAC bits and a terminating bit.
注意,在HEVC或AVC系統中,在本發明之實施例中,CABAC串流本身的最後位元可以為此終止符號所替換,因此,節省一位元。在此例子中,CABAC串流的最終位元係為以與編碼設計的終止符號的相同值加以替換(例如值1)。明顯地,如果此位元的最終值已經為1,則作用上沒有改變。如果位元的最終值為0,則其有將1加至整個值的作用。然而,對於2的符號範圍及對於在編碼的結束係為符號範圍的底部之值,則加1將不會移動整個值於加碼間距之外,及資料串流保持有效。因此,對於HEVC或AVC編碼,通常,CABAC串流的最後位元可以設定等於終止符號,同時保留在相同加碼間距內。將了解的是,任何加碼設計可以利用此技術類似地容許在串流中之最後位元的位元變化。 Note that in the HEVC or AVC system, in the embodiment of the present invention, the last bit of the CABAC stream itself can be replaced by this termination symbol, thus saving one bit. In this example, the final bit of the CABAC stream is replaced with the same value as the termination symbol of the encoding design (eg, a value of one). Obviously, if the final value of this bit is already 1, there is no change in effect. If the final value of the bit is 0, it has the effect of adding 1 to the entire value. However, for a symbol range of 2 and a value for the bottom of the symbol range at the end of the encoding, adding 1 will not move the entire value beyond the plus code spacing, and the data stream remains valid. Thus, for HEVC or AVC encoding, typically, the last bit of the CABAC stream can be set equal to the termination symbol while remaining within the same plus code spacing. It will be appreciated that any over-coded design can utilize this technique to similarly allow for bit changes in the last bit in the stream.
因此,在本實施例中,如果CABAC串流結束於封包的中間並沒有旁路資料可跟隨,則該串流如前所述係被終止以短封包,及該短封包的最後位元將被讀取為適當終止符號並可以被正確解碼(例如,在HM4.0解碼設計中)。使用上述例子,所得短封包將讀取[CCCCCCCCCCCCCCR],包含14CABAC位元及一終止位元以替換最後第15個 CABAC位元。 Therefore, in this embodiment, if the CABAC stream ends in the middle of the packet and no bypass data can be followed, the stream is terminated as a short packet as described above, and the last bit of the short packet will be Read as a proper termination symbol and can be decoded correctly (eg, in the HM4.0 decoding design). Using the above example, the resulting short packet will read [CCCCCCCCCCCCCCR], containing 14 CABAC bits and a terminating bit to replace the last 15th CABAC bit.
然而,如果CABAC串流終止於封包的中間及有旁路資料可跟隨,則最終封包並未截斷,以重合CABAC位元的末端,並相反地提供有填充位元。然而,仍想要終止符號。 However, if the CABAC stream terminates in the middle of the packet and there is bypass data to follow, the final packet is not truncated to coincide with the end of the CABAC bit, and conversely provided with padding bits. However, I still want to terminate the symbol.
在此例子中,在本發明之一實施例中,為了維持在編碼器與解碼器的一致性,一或更多填充位元(典型在此實施例中之所有填充位元)也使用與終止符號相同的值。使用’B’表示旁路位元,所得順序將為類型[CCCCCCCCCCRRRRRR]BBBBR。於此,10個CABAC位元,其後跟著具有與資料終止位元相同的值或符號的6個填充位元。在CABAC封包後,旁路位元然後再次為終止符號所跟隨。 In this example, in one embodiment of the invention, one or more padding bits (typically all padding bits in this embodiment) are also used with the terminator in order to maintain consistency between the encoder and the decoder. The same value. Use 'B' for the bypass bit and the resulting order will be of type [CCCCCCCCCCRRRRRR]BBBBR. Here, 10 CABAC bits are followed by 6 padding bits having the same value or sign as the data terminating bit. After the CABAC packet, the bypass bit is then followed by the termination symbol again.
再次,在HEVC、AVC或類似公差設計中,或者,CABAC位元的最終位元也可以再次為終止符號所替換,具有額外填充位元同時也使用與終止符號相同的值。在此時,所得順序將為類型[CCCCCCCCCRRRRRRR]BBBBR。於此,9個CABAC位元係為一終止位元所跟隨,以替換最終第10CABAC位元,其後隨後為6個具有與終止位元R相同的值之填充位元所跟隨。因此,有一總數7位元的一列,在此例子中,具有終止符號R的值。在CABAC封包後,旁路位元係再次為終止符號所跟隨。 Again, in HEVC, AVC or similar tolerance designs, or the final bit of the CABAC bit can be replaced again with a terminating symbol, with additional padding bits also using the same value as the terminating symbol. At this point, the resulting order will be of type [CCCCCCCCCRRRRRRR]BBBBR. Here, the nine CABAC bits are followed by a terminating bit to replace the final 10th CABAC bit, followed by six padding bits having the same value as the terminating bit R. Thus, there is a total of 7-bit columns, in this example, having the value of the termination symbol R. After the CABAC packet, the bypass bit is followed again by the termination symbol.
在任一例子中,以此方式,終止符號仍設在CABAC資料的末端也在整個位元串流的末端。 In either case, in this way, the termination symbol is still set at the end of the CABAC data and also at the end of the entire bit stream.
最後,當最後需求CABAC位元(即,依據於上所述之編碼設計,包含或不包含最後實際CABAC位元)準確地配合最終CABAC封包的第16位元,則解碼器將自動持續查看下一預期封包將在何處及因此終止符號可以放置在該位置。因此,例如在此例子中之順序包含[CCCCCCCCCCCCCCCC]R,及[CCCCCCCCCCCCCCCC]BBBBR。 Finally, when the final required CABAC bit (ie, based on the coding design described above, with or without the last actual CABAC bit) is exactly matched to the 16th bit of the final CABAC packet, the decoder will automatically continue to view Where an expected packet will be and thus the termination symbol can be placed at that location. Thus, for example, the order in this example includes [CCCCCCCCCCCCCCCC]R, and [CCCCCCCCCCCCCCCC]BBBBR.
分開或另外,也有可能較早終止CABAC串流,以插入不同資料(例如,IPCM無損碼)。結果,CABAC串流可以再次終止為短封包,但再次有旁路資料時,則最終封包可以再次包含填充位元。在此例子中,再次為節省填充位元的位元一或更多可以為在(後續串流)插入資料的開始的對應第一位元(取的值)所替換。使用’D’表示差異資料,所得封包將然後包含一順序類型[CCCCCCCDDDDDDDDD]BBBBR或(參考如上HEVC或AVC例)[CCCCCCCRDDDDDDDD]BBBBR。 Separately or additionally, it is also possible to terminate the CABAC stream earlier to insert different data (eg, IPCM lossless code). As a result, the CABAC stream can be terminated again as a short packet, but when there is bypass data again, the final packet can again contain padding bits. In this example, one or more of the bits that again save the padding bits may be replaced by the corresponding first bit (the value taken) at the beginning of the insertion of the data (subsequent stream). Using 'D' to indicate the difference data, the resulting packet will then contain a sequence type [CCCCCCCDDDDDDDDD] BBBBR or (refer to HEVC or AVC example above) [CCCCCCCRDDDDDDDD] BBBBR.
未決位元將參考圖29加以考量。作為此考量的一部份,在本發明之實施例中,編碼器保持一名單的指標,其中完成旁路封包。該名單的長度取決於上述解碼器偏移。通常而言:Decoder offset=CABAC_RANGE_BITS(預設9)+末決位元數 The pending bits will be considered with reference to Figure 29. As part of this consideration, in an embodiment of the invention, the encoder maintains a list of indicators in which the bypass packet is completed. The length of the list depends on the decoder offset described above. In general: Decoder offset=CABAC_RANGE_BITS (default 9) + number of final bits
通常,解碼器偏移理論上為末約束,然而,其提議一機制係被設有用以限制未決位元,允許編碼器維持較小數量的指標。 In general, the decoder offset is theoretically the last constraint, however, its proposed mechanism is provided to limit the pending bits, allowing the encoder to maintain a smaller number of metrics.
所需數量的指標為下式所給定:捨入(最大解碼器偏移/CABAC封包大小)的值 The required number of metrics is given by: rounding (maximum decoder offset / CABAC packet size)
未決位元係為對算術解碼器的一可能問題,當編碼器得知編碼資料在該0.49至0.51的範圍內(例如,在十進制中,而不是在一般二進制)-解碼器不知是否輸出0.4(第一效值圖)或0.5。編碼器必須延遲輸出資訊,直到其知道作什麼。對於各個延遲決定,該編碼器必須寫較所需少一位元至該串流,因此,解碼器偏移增加。最後,該問題被解決,及編碼器可以寫出遺失值,降低解碼器偏移回到9。然而,其必須寫入所有遺失值至緩衝器中之正確位置,因此,必須記得其可以寫入至串流緩衝器的何處。 The pending bit is a possible problem for the arithmetic decoder. When the encoder knows that the encoded data is in the range of 0.49 to 0.51 (for example, in decimal, not in general binary) - the decoder does not know whether to output 0.4 ( The first effect map) or 0.5. The encoder must delay outputting information until it knows what to do. For each delay decision, the encoder must write one bit less than needed to the stream, so the decoder offset increases. Finally, the problem is solved and the encoder can write the missing value and reduce the decoder offset back to 9. However, it must write all missing values to the correct location in the buffer, so it must be remembered where it can be written to the stream buffer.
因此,其必須保持追蹤位置的數目成為解碼器偏移及封包尺寸的函數。如果偏移為<=16,則其可以被了解到只保持追蹤正常寫入指標及較舊寫入指標,但如果偏移>16,則額外較舊寫入位置需要被追蹤;如果偏移>32,則兩額外較舊入位置需要被記錄,並以此類推。 Therefore, it must maintain the number of tracking locations as a function of decoder offset and packet size. If the offset is <=16, it can be learned to keep track of only normal write metrics and older write metrics, but if the offset is >16, the extra older write locations need to be tracked; if offset > 32, then the two additional older entry locations need to be recorded, and so on.
將討論未決位元的另一態樣。為了以正確順序輸出該串流,“旁路封包”必須為編碼器所儲存,直到其對應“CABAC封包”被產生為止。 Another aspect of the pending bit will be discussed. In order to output the stream in the correct order, the "bypass packet" must be stored by the encoder until its corresponding "CABAC packet" is generated.
因為編碼器可以長時間延遲寫入位元,甚至整個串流,由於這些位元為未決,所以,必須被緩衝的“旁路封包”的數量可以無限。 Because the encoder can delay writing to the bit for a long time, or even the entire stream, since these bits are pending, the number of "bypass packets" that must be buffered can be infinite.
為了限制必須被緩衝的’旁路封包’的數量,其例如使用串流終止,有用的限制未決位元的數量。 In order to limit the number of 'bypass packets' that must be buffered, for example using a stream termination, it is useful to limit the number of pending bits.
此方法允許予以限制的未決位元至固定數量,而不必在每次再正規化後它們必須被檢查。為了完成此方法,當m_low出現在編碼器中,解碼器追蹤m_low。 This method allows the restricted bits to be limited to a fixed number without having to be checked after each renormalization. To accomplish this, when m_low appears in the encoder, the decoder tracks m_low.
由m_low再正規化的位元被累積在一緩衝器中。如果在再正規化後,至少部份數量的位元已累積在此緩衝器中,則它們被認為形成一’群’。在本發明之實施例中,此最小群大小可以為15位元。因此,最大群大小將會等於22(14+8(8位元為最大可能再正規化))。 The bits renormalized by m_low are accumulated in a buffer. If at least a portion of the bits have accumulated in this buffer after renormalization, they are considered to form a 'group'. In an embodiment of the invention, this minimum group size may be 15 bits. Therefore, the maximum group size will be equal to 22 (14 + 8 (8 bits is the maximum possible renormalization)).
在該編碼器中,第一群被儲存於緩衝器中。如果隨後群並不是未決,則現行在緩衝器中之群與任何未決位元一起被沖入該串流。新的一群然後儲存在該緩衝器中。 In the encoder, the first group is stored in a buffer. If the subsequent group is not pending, the group currently in the buffer is flushed into the stream along with any pending bits. The new group is then stored in this buffer.
如果在一群中之所有位元為1並且沒有進位,該群被認為是未決。編碼器與解碼器各自保有未決群數量的計數。編碼器也保持該未決群大小總和的計數,使得當遭遇到沒有未決群時,其得知有多少未決位元需要被沖入。 If all of the bits in a group are 1 and there is no carry, the group is considered pending. The encoder and decoder each maintain a count of the number of pending groups. The encoder also maintains a count of the sum of the size of the pending group so that when no unresolved group is encountered, it knows how many pending bits need to be flushed.
如果遭遇到未決群的數量大於或等於一界定限制,則該串流係被終止。此確定下一群將不是未決,允許累積未決定群被沖洗。 If the number of unresolved groups is greater than or equal to a defined limit, the stream is terminated. This determines that the next group will not be pending, allowing the cumulative undecided group to be flushed.
使用此方法,未決位元的最大可能計數係等於為未決群的限制數量乘以最大群組大小。 With this method, the maximum possible count of pending bits is equal to the limit number of pending groups multiplied by the maximum group size.
因此,本發明之實施例可以提供一緩衝器,用以累積由m_low再正規化的資料(一暫存器表示CABAC範圍的下限),及如果該群具有至少一預定資料數量,則用以相關儲存資料成為一群; 一檢測器,用以檢測是否在一群中之所有資料具有資料值1而沒有進位,如果是,用以指定該群為第一類型的一群;如果否,則該群被指定為第二類型的一群;一緩衝器讀取器,用以自該緩衝器讀取第一類型之群,如果隨後儲存群為第二類型,及將讀取群插入輸出資料串流;一檢測器,用以檢測該緩衝器中之出現多於第一類型的群的預定數量,及如果是,用以終止及重新開始編碼該資料。 Thus, embodiments of the present invention may provide a buffer for accumulating data renormalized by m_low (a register indicating the lower limit of the CABAC range), and if the group has at least one predetermined amount of data, Store data into a group; a detector for detecting whether all of the data in the group has a data value of 1 without a carry, and if so, for designating the group as a group of the first type; if not, the group is designated as the second type a buffer reader for reading a first type of group from the buffer, if the subsequent storage group is of a second type, and inserting the read group into the output data stream; a detector for detecting There are more than a predetermined number of groups of the first type in the buffer, and if so, to terminate and resume encoding the material.
該解碼器的操作現將加以描述。 The operation of this decoder will now be described.
以通常用語表示,CABAC封包為主串流可以使用移位暫存器作為該緩衝器加以解碼。各個時間資料係由該緩衝器為設在解碼器中作為緩衝器讀取器的解碼器或控制邏輯所讀出,剩餘位元係被移位以填入為讀取位元所佔用的空間,及來自該串流的新資料係被加入至暫存器的末端。 Expressed in the usual language, a CABAC packet-based main stream can be decoded using the shift register as the buffer. Each time data is read by the buffer as a decoder or control logic provided in the decoder as a buffer reader, and the remaining bits are shifted to fill the space occupied by the read bit. And new data from the stream is added to the end of the scratchpad.
CABAC資料由移位暫存器的前端讀入m_value(作為輸入緩衝器),兩者在解碼的開始及在每一再正規化後。 The CABAC data is read into the m_value (as an input buffer) by the front end of the shift register, both at the beginning of decoding and after each renormalization.
旁路資料係由旁路指數所指示的位置讀出。此指數係初始被設定至16(第一’旁路封包’的開始)及每一讀取CABAC資料減量讀取位元的數量。 The bypass data is read by the position indicated by the bypass index. This index is initially set to 16 (the beginning of the first 'bypass packet') and the number of read CABAC data decrement read bits per read.
在平行系統中,CABAC及旁路讀-與-移同時發生。例如,解碼器2520及2530之解碼器可以作動為熵解碼器,以解碼由緩衝器讀取之個別次組資料。 In a parallel system, CABAC and bypass read-and-shift occur simultaneously. For example, the decoders of decoders 2520 and 2530 can act as an entropy decoder to decode the individual subgroups of data read by the buffer.
在’CABAC封包’的末端(即,當CABAC讀取傳送旁 路指數),該旁路指數增量16,跳過它通過下一’CABAC封包’。藉由由等於旁路指數+16及旁路指數本身的位置推論讀取,這在平行系統可以完成而沒有失速(stall)。 At the end of the 'CABAC packet' (ie, when CABAC reads the transfer) The road index), the bypass index is incremented by 16, skipping it through the next 'CABAC packet'. By inferring the reading by a position equal to the bypass index +16 and the bypass index itself, this can be done in a parallel system without stalling.
在’旁路封包’中之資料只附著至前一’CABAC封包’內的CABAC資料。藉由CABAC讀取將通過現行’CABAC封包’末端時,此確保在相關’旁路封包’中之所有資料將被讀取及因此,現行’CABAC封包’的末端係直接鄰接至下一個的開始。 The data in the 'bypass package' is only attached to the CABAC data in the previous 'CABAC packet'. By CABAC reading will pass the current 'CABAC packet' end, this ensures that all data in the relevant 'Bypass Packet' will be read and therefore, the end of the current 'CABAC Packet' is directly adjacent to the next start .
這允許CABAC資料一直被安全地讀取通過現行’CABAC封包’的末端,好像其係為一連續串流。 This allows CABAC data to be safely read through the end of the current 'CABAC packet' as if it were a continuous stream.
移位暫存器的大小係藉由需要自最遠可能位置讀取旁路位元的最大可能數量所決定並假設係數具有32768(16位元符號)的最大大小時被計算為67位元((8-1+16){最遠旁路讀取指數}+44{最大可能旁路讀取})。 The size of the shift register is calculated to be 67 bits by the maximum possible number of read bypass bits required to read from the farthest possible position and assuming that the coefficient has a maximum size of 32768 (16-bit symbols) ( (8-1+16) {farth bypass read index} + 44 {maximum possible bypass read}).
解碼器可以維持一緩衝器或移位暫存器(例如圖26所示之類型的緩衝器2580),以允許兩類型之資料(CABAC及旁路)被同時運算。 The decoder can maintain a buffer or shift register (e.g., buffer 2580 of the type shown in Figure 26) to allow both types of data (CABAC and bypass) to be operated simultaneously.
該緩衝器的最小大小=(CABAC_RANGE_BITS-2)+PACKET_SIZE+MAX_BYPASS_LENGTH;例如,使用一組先前提出之參數,最小大小=(9-2)+16+44=67。 The minimum size of the buffer = (CABAC_RANGE_BITS-2) + PACKET_SIZE + MAX_BYPASS_LENGTH; for example, using a set of previously proposed parameters, the minimum size = (9-2) + 16 + 44 = 67.
旁路資料係由為旁路讀取指標2600所指示之位置讀出。使用中之緩衝器的例子係被示意顯示在圖30。 The bypass data is read from the location indicated by the bypass read indicator 2600. An example of a buffer in use is shown schematically in Figure 30.
解碼器推論評估在旁路讀取指標後的位元,決定多少位元待被讀取,如果: The decoder infers the bit after the bypass reading indicator to determine how many bits are to be read, if:
A)不需要旁路位元(係數大小=0) A) No bypass bit is required (coefficient size = 0)
B)只需要一符號位元(係數大小=1或2) B) only one symbol bit is needed (coefficient size = 1 or 2)
C)需要符號位元及脫離碼(所有其他大小)。 C) Symbol bits and escape codes (all other sizes) are required.
另外,該解碼器也推論解碼(旁路指標+16)(如果有效)(見如下)。 In addition, the decoder also infers decoding (bypass indicator +16) (if valid) (see below).
參考圖30,在每一CABAC再正規化後,CABAC資料係由緩衝器的前面讀入暫存器“值”(前端係被顯示於圖30的左方),向左移位所有其他位元與旁路讀取指標2600。換句話說,在此例子中,由緩衝器讀取之資料具有由緩衝器移除該資料的作用。(取決於由CABAC解碼處理所決定的大小)旁路資料係由旁路指標2600所指示的位置讀出,再次移位所有位元至旁路讀取指標的右方,以進一步向下數緩衝器(的左方)。 Referring to FIG. 30, after each CABAC renormalization, the CABAC data is read into the register "value" from the front of the buffer (the front end is displayed on the left side of FIG. 30), and all other bits are shifted to the left. Read indicator 2600 with bypass. In other words, in this example, the material read by the buffer has the effect of removing the data by the buffer. (depending on the size determined by the CABAC decoding process) The bypass data is read by the position indicated by the bypass indicator 2600, and all bits are shifted again to the right of the bypass read indicator to further buffer down. (left of the device).
等於兩移位的總和的新資料數量係被由編碼資料串流加入緩衝器的末端(即,如圖30所示之右手端)。換句話說,緩衝器係在這些讀取操作後再填充。 The amount of new data equal to the sum of the two shifts is added to the end of the buffer by the encoded data stream (i.e., the right hand end as shown in Figure 30). In other words, the buffer is refilled after these read operations.
(當CABAC讀取指標通過旁路指標)在CABAC封包的末端,旁路指數係被跳至通過下一CABAC封包的下一個位置。 (When CABAC reads the indicator through the Bypass indicator) At the end of the CABAC packet, the Bypass Index is skipped to the next location through the next CABAC packet.
旁路封包必須在該點為空的(因為該旁路位元係在對應於整個包含在CABAC封包內的係數的該封包中),使得CABAC指標可以一直安全讀取通過封包的末端,好像其係為一連續串流。 The bypass packet must be empty at this point (because the bypass bit is in the packet corresponding to the entire coefficient contained in the CABAC packet) so that the CABAC indicator can be safely read through the end of the packet as if it were It is a continuous stream.
一旦推論評估位元在(旁路讀取指標+16),在此情 況中有可能確保立即跳躍至下一旁路封包,而完全不需要額外處理延遲。 Once the inference evaluation bit is in (bypass reading indicator +16), in this case In this case it is possible to ensure that the next bypass packet is immediately jumped without any additional processing delay.
此處理係被示意例示於圖31。注意,所示至左方之CABAC封包係為現行封包的現行未讀取內容的示意例示,也就是說,其只顯示現行封包的剩餘部份。 This processing is schematically illustrated in Fig. 31. Note that the CABAC packet shown to the left is a schematic illustration of the current unread content of the current packet, that is, it only shows the remainder of the current packet.
一般來說,推論指標永遠高於主指標16位元:該想法為如果有需要存取在該主指標的資料(因為其在新封包的開始),解碼器將已經解碼在下一旁路封包的開始之第一旁路資料。換句話說,此協助確保旁路資料已經被解譯。 In general, the inference indicator is always higher than the main indicator of 16 bits: the idea is that if there is a need to access the data in the main indicator (because it is at the beginning of the new packet), the decoder will have already decoded at the beginning of the next bypass packet. The first bypass data. In other words, this assists in ensuring that the bypass material has been interpreted.
以下虛擬碼,使用與先前虛擬碼相同的標註,描述解碼處理並可以配合圖32讀取,其例示四個處理階段,如所示為在圖32內的連續行,注意,本發明之實施例中,到四個此階段可以在各個解碼時脈循環中完成:初始化:Fill the register“Value”with(CABAC_RANGE_BITS)from stream Fill shift register from stream index_bypass=(16-CABAC_RANGE_BITS)(set bypass read pointer) The following virtual code, using the same labeling as the previous virtual code, describes the decoding process and can be read in conjunction with Figure 32, which illustrates four processing stages, as shown in Figure 32 as a continuous line, noting that embodiments of the present invention In this, four stages can be completed in each decoding clock cycle: Initialization: Fill the register "Value" with (CABAC_RANGE_BITS) from stream Fill shift register from stream index_bypass=(16-CABAC_RANGE_BITS)(set bypass read pointer)
步驟1a(與步驟1b平行):Decode CABAC data:Determine symbol ranges Compare the register“value”with symbol ranges to determine symbol(magnitude)Determine number of renormalisation bits for CABAC data(Nc)value<<=Nc Step 1a (parallel to step 1b): Decode CABAC data:Determine symbol ranges Compare the register "value" with symbol ranges to determine symbol(magnitude)Determine number of renormalisation bits for CABAC data(Nc)value<<=Nc
步驟1b(與步驟1a平行):Decode bypass data:Decode sign bit Sn from position index_bypass;Decode escape data En from position(index_bypass+1);Nbn=(escape length+1)Decode sign bit Ss from position(index_bypass+16);Decode escape data Es from position(index_bypass+17);Nbs=(escape length+1) Step 1b (parallel to step 1a): Decode bypass data: Decode sign bit Sn from position index_bypass; Decode escape data En from position(index_bypass+1); Nbn=(escape length+1)Decode sign bit Ss from position(index_bypass+ 16); Decode escape data Es from position(index_bypass+17); Nbs=(escape length+1)
步驟1c(在步驟1a及1b之後):if(Nc>index_bypass)- New packet encountered-use speculative path escape=Es;sign=Ss;Nb_escape=Nbs;Index_bypass+=16 Else escape=En;sign-Sn;Nb_escape=Nbn If(magnitude>2)output=(magnitude+escape)* sign;Nb=Nb_escape Else if(magnitude>0)output=(magnitude * sign);Nb=1 Else output=0;Nb=0 Step 1c (after steps 1a and 1b): if(Nc>index_bypass)- New packet encountered-use speculative path escape=Es;sign=Ss;Nb_escape=Nbs;Index_bypass+=16 Else escape=En;sign-Sn;Nb_escape =Nbn If(magnitude>2)output=(magnitude+escape)* sign;Nb=Nb_escape Else if(magnitude>0)output=(magnitude * sign);Nb=1 Else output=0;Nb=0
步驟2:shift and refill:Shift register<<=Nc index_bypass-=Nc Shift register[index_bypass to end]<<=Nb Read(Nc+Nb)bits from stream into last bits of shift register Step 2: shift and refill: Shift register<<=Nc index_bypass-=Nc Shift register[index_bypass to end]<<=Nb Read(Nc+Nb)bits from stream into last bits of shift register
將CABAC資料分割為封包,可以特別有利於影像內模式。在影像間模式中,轉換係數資料經常稀疏矩陣,及一些CU/LCU可以完全不包含係數。因為模式間動作向量可能經常提供較在影像內模式中可取得之為佳之預估造成,所以,因此,量化殘留資料可以經常很小/不存在。 Dividing CABAC data into packets can be particularly beneficial for intra-image modes. In the inter-image mode, the conversion coefficient data is often sparse in the matrix, and some CU/LCUs may not contain coefficients at all. Because inter-mode motion vectors may often provide better predictions than are available in intra-image modes, therefore, quantized residual data can often be small/non-existent.
在內模式中之較高密度資料對編碼器/解碼器流量提出較高需求,因此,一較想要的平行度。 Higher density data in the internal mode places higher demands on the encoder/decoder flow and, therefore, a more desirable parallelism.
這些方法可以對於實施法有較大優點。 These methods can have great advantages for the implementation method.
CABAC及旁路資料可以同時讀取,允許平行解碼。 CABAC and bypass data can be read simultaneously, allowing parallel decoding.
多位元的旁路資料可以在同時讀取。這允許所有用於係數之旁路資料在一級中被解碼。 Multi-bit bypass data can be read at the same time. This allows all bypass data for coefficients to be decoded in one stage.
只需要一小解碼器緩衝器。16位元之封包大小及9的CABAC_RANGE_BITS時,只需要67位元緩衝器。 Only a small decoder buffer is needed. A 16-bit buffer is required for a 16-bit packet size and a 9 CABAC_RANGE_BITS.
這些技術可以適用以工作於每循環多係數系統中。 These techniques can be adapted to work in a multi-factor system per cycle.
該等技術可以增加流量。 These technologies can increase traffic.
因此,前述討論只揭露及描述本發明之例示實施例。可以為熟習於本技藝者所了解,本發明可以以其他特定形式實施,而不脫離本案之精神與基本特徵。因此,本發明之揭露係作例示,並不限制本發明之範圍,及其他申請專利範圍。包含於此之教示的可立即得知之變化的揭露界定部份前述申請專利範圍,使得無發明標的係為屬於公眾。 Accordingly, the foregoing discussion discloses and describes only exemplary embodiments of the invention. The invention may be embodied in other specific forms without departing from the spirit and scope of the invention. Therefore, the disclosure of the present invention is intended to be illustrative, and not to limit the scope of the invention. The disclosure of the immediately-available changes included in the teachings herein defines a part of the scope of the aforementioned patent application, such that the no-invention subject matter belongs to the public.
10‧‧‧音訊/視訊信號 10‧‧‧Optical/Video Signals
20‧‧‧視訊壓縮設備 20‧‧‧Video compression equipment
30‧‧‧傳輸路由 30‧‧‧Transmission routing
40‧‧‧解壓縮設備 40‧‧‧Decompression equipment
50‧‧‧音訊/視訊信號 50‧‧‧Audio/Video Signal
60‧‧‧壓縮設備 60‧‧‧Compression equipment
70‧‧‧解壓縮設備 70‧‧‧Decompression equipment
100‧‧‧壓縮音訊/視訊信號 100‧‧‧Compressed audio/video signals
110‧‧‧解壓縮設備 110‧‧‧Decompression equipment
120‧‧‧顯示器 120‧‧‧ display
130‧‧‧音訊/視訊信號 130‧‧‧Audio/Video Signal
140‧‧‧壓縮設備 140‧‧‧Compression equipment
150‧‧‧儲存裝置 150‧‧‧Storage device
160‧‧‧解壓縮設備 160‧‧‧Decompression equipment
170‧‧‧音訊/視訊信號 170‧‧‧Optical/Video Signals
180‧‧‧影像捕捉裝置 180‧‧‧Image capture device
190‧‧‧壓縮設備 190‧‧‧Compression equipment
200‧‧‧麥克風 200‧‧‧ microphone
210‧‧‧壓縮音訊/視訊信號 210‧‧‧Compressed audio/video signals
220‧‧‧儲存及/或傳送 220‧‧‧Storage and / or transmission
300‧‧‧輸入視訊信號 300‧‧‧Input video signal
310‧‧‧加法器 310‧‧‧Adder
320‧‧‧影像預估器 320‧‧‧Image Estimator
330‧‧‧殘留影像信號 330‧‧‧Residual image signal
340‧‧‧轉換單元 340‧‧‧Conversion unit
350‧‧‧量化器 350‧‧‧Quantifier
360‧‧‧掃描單元 360‧‧‧Scan unit
370‧‧‧熵編碼器 370‧‧‧Entropy encoder
380‧‧‧壓縮輸出視訊信號 380‧‧‧Compressed output video signal
390‧‧‧返回路徑 390‧‧‧Return path
400‧‧‧逆向掃描單元 400‧‧‧Reverse Scanning Unit
410‧‧‧熵解碼器 410‧‧‧ Entropy decoder
420‧‧‧逆向量化器 420‧‧‧ inverse vectorizer
430‧‧‧逆向轉換單元 430‧‧‧Reverse conversion unit
440‧‧‧殘留影像信號 440‧‧‧Residual image signal
450‧‧‧加法器 450‧‧‧Adder
460‧‧‧輸出影像 460‧‧‧ output image
470‧‧‧壓縮視訊信號 470‧‧‧Compressed video signal
480‧‧‧解壓縮視訊信號 480‧‧‧Uncompressed video signal
500‧‧‧多工器 500‧‧‧Multiplexer
510‧‧‧模式信號 510‧‧‧ mode signal
520‧‧‧模式內選擇器 520‧‧‧Mode selector
530‧‧‧影像內預估器 530‧‧Intra-image predictor
540‧‧‧動作補償預估器 540‧‧‧motion compensation predictor
550‧‧‧動作預估器 550‧‧‧Action Estimator
560‧‧‧過濾單元 560‧‧‧Filter unit
570‧‧‧影像儲存 570‧‧‧Image storage
580‧‧‧內插過濾器 580‧‧‧Interpolation filter
600‧‧‧乘法器 600‧‧‧multiplier
610‧‧‧除法器 610‧‧‧ divider
700‧‧‧最大加碼單元 700‧‧‧Maximum overweight unit
710‧‧‧加碼單元 710‧‧‧Plus unit
720‧‧‧加碼單元 720‧‧‧Plus unit
730‧‧‧加碼單元 730‧‧‧Plus unit
800‧‧‧部份編碼影像 800‧‧‧Partial coded image
810‧‧‧方塊 810‧‧‧ square
820‧‧‧陰影區域 820‧‧‧Shaded area
830‧‧‧預估單元 830‧‧‧ Estimation unit
840‧‧‧左上位置 840‧‧‧Upper position
900‧‧‧轉換器 900‧‧‧ converter
910‧‧‧開關 910‧‧‧ switch
920‧‧‧旁路加碼器 920‧‧‧ Bypass adder
930‧‧‧開關 930‧‧‧ switch
940‧‧‧開關 940‧‧‧ switch
950‧‧‧上下文模型器 950‧‧‧Context Modeler
960‧‧‧加碼引擎 960‧‧‧Plus engine
1120‧‧‧CV推導單元 1120‧‧‧CV derivation unit
1130‧‧‧碼產生器 1130‧‧ ‧ code generator
1140‧‧‧範圍重設單元 1140‧‧‧ Range reset unit
1150‧‧‧正規化器 1150‧‧‧Normalizer
1220‧‧‧CV推導單元 1220‧‧‧CV derivation unit
1230‧‧‧碼施加單元 1230‧‧‧ code application unit
1240‧‧‧範圍重設單元 1240‧‧‧ Range reset unit
1250‧‧‧正規化器 1250‧‧‧Normalizer
2400‧‧‧CABAC編碼器 2400‧‧‧CABAC encoder
2410‧‧‧旁路編碼器 2410‧‧‧bypass encoder
2420‧‧‧CABAC編碼器 2420‧‧‧CABAC encoder
2430‧‧‧模式選擇信號 2430‧‧‧ mode selection signal
2440‧‧‧緩衝器 2440‧‧‧buffer
2450‧‧‧緩衝器 2450‧‧‧buffer
2460‧‧‧解多工器 2460‧‧‧Solution multiplexer
2500‧‧‧緩衝器 2500‧‧‧buffer
2510‧‧‧緩衝器 2510‧‧‧buffer
2520‧‧‧旁路解碼器 2520‧‧‧Bypass decoder
2530‧‧‧CABAC解碼器 2530‧‧‧CABAC decoder
2540‧‧‧邏輯 2540‧‧‧Logic
2550‧‧‧CABAC解碼器 2550‧‧‧CABAC decoder
2560‧‧‧模式選擇信號 2560‧‧‧ mode selection signal
2570‧‧‧開關 2570‧‧‧Switch
2580‧‧‧緩衝器 2580‧‧‧buffer
2590‧‧‧緩衝器指標 2590‧‧‧Buffer indicator
2600‧‧‧緩衝器指標 2600‧‧‧Buffer indicator
本揭示之更完成了解與其很多隨附優點將藉由參考本發明實施例之以下詳細說明配合附圖考量而更佳了解,其中:圖1示意顯示使用視訊資料壓縮及解壓縮的音訊/視訊(A/V)資料傳輸及接收系統;圖2示意顯示使用視訊資料解壓縮的視訊顯示系統;圖3示意顯示使用視訊資料壓縮及解壓縮的音訊/視訊儲存系統; 圖4示意顯示使用視訊資料壓縮的攝影機;圖5提供視訊資料壓縮及解壓縮設備示意圖;圖6示意顯示預估影像的產生;圖7示意顯示最大加碼單元(LCU);圖8示意顯示一組四個加碼單元(CU);圖9及10示意顯示圖8的加碼單元細分為更小加碼單元;圖11示意顯示一陣列之預估單元(PU);圖12示意顯示一陣列之轉換單元(TU);圖13示意顯示部份編碼影像;圖14示意顯示一組可能預估方向;圖15示意顯示一組預估模式;圖16示意顯示曲折掃描;圖17示意顯示CABAC熵編碼器;圖18示意顯示CAVLC熵編碼處理;圖19A至19D示意顯示CABAC編碼及解碼操作態樣;圖20示意顯示CABAC編碼器;圖21示意顯示CABAC解碼器;圖22示意顯示具有分開旁路編碼器的CABAC編碼器;圖23示意顯示編碼器,作動為CABAC編碼器及旁路編碼器;圖24示意顯示具有分開旁路解碼器的CABAC解碼 器;圖25示意顯示一解碼器,作動為CABAC解碼器及旁路解碼器;圖26示意顯示共同緩衝器;圖27示意顯示封包化資料串流;圖28及29示意顯示資料寫入指標的使用;圖30及31示意顯示資料讀取指標的使用;及圖32示意顯示在CABAC及旁路解碼處理操作中之階段。 A more complete understanding of the present disclosure and many of its advantages will be better understood by referring to the following detailed description of the embodiments of the present invention in conjunction with the drawings, wherein: FIG. 1 is a schematic diagram showing audio/video (compressed and decompressed using video data) A/V) data transmission and reception system; Figure 2 shows a video display system decompressed using video data; Figure 3 shows an audio/video storage system compressed and decompressed using video data; Figure 4 is a schematic view showing a video camera using video data compression; Figure 5 is a schematic diagram showing a video data compression and decompression device; Figure 6 is a schematic view showing the generation of an estimated image; Figure 7 is a schematic view showing a maximum coding unit (LCU); Four plus code units (CU); Figures 9 and 10 schematically show that the code unit of Figure 8 is subdivided into smaller code units; Figure 11 shows an array of prediction units (PU); Figure 12 shows an array of conversion units ( Figure 13 shows a partially encoded image; Figure 14 shows a set of possible prediction directions; Figure 15 shows a set of prediction modes; Figure 16 shows a zigzag scan; Figure 17 shows a CABAC entropy; 18 schematically shows CAVLC entropy coding processing; FIGS. 19A to 19D schematically show CABAC encoding and decoding operation modes; FIG. 20 schematically shows a CABAC encoder; FIG. 21 schematically shows a CABAC decoder; and FIG. 22 schematically shows CABAC with separate bypass encoders Encoder; Figure 23 shows schematically the encoder, actuated as CABAC encoder and bypass encoder; Figure 24 shows schematically CABAC decoding with separate bypass decoder Figure 25 shows a decoder that is actuated as a CABAC decoder and a bypass decoder; Figure 26 shows a common buffer; Figure 27 shows a packetized data stream; Figures 28 and 29 show data write indicators. Use; Figures 30 and 31 schematically show the use of data reading indicators; and Figure 32 shows the stages in the CABAC and bypass decoding processing operations.
2590‧‧‧緩衝器指標 2590‧‧‧Buffer indicator
2600‧‧‧緩衝器指標 2600‧‧‧Buffer indicator
Claims (18)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1119180.6A GB201119180D0 (en) | 2011-11-07 | 2011-11-07 | Data encoding and decoding |
GB1119687.0A GB2496209A (en) | 2011-11-07 | 2011-11-15 | Entropy encoder with first and second, bypass encoding systems |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201342919A true TW201342919A (en) | 2013-10-16 |
Family
ID=45421373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101139518A TW201342919A (en) | 2011-11-07 | 2012-10-25 | Data encoding and decoding |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140286417A1 (en) |
CN (1) | CN103918272A (en) |
GB (2) | GB201119180D0 (en) |
TW (1) | TW201342919A (en) |
WO (1) | WO2013068731A1 (en) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2805491B1 (en) | 2012-01-20 | 2021-05-12 | GE Video Compression, LLC | Coding concept allowing parallel processing, transport demultiplexer and video bitstream |
GB2501535A (en) | 2012-04-26 | 2013-10-30 | Sony Corp | Chrominance Processing in High Efficiency Video Codecs |
GB2513111A (en) | 2013-04-08 | 2014-10-22 | Sony Corp | Data encoding and decoding |
GB2513110A (en) | 2013-04-08 | 2014-10-22 | Sony Corp | Data encoding and decoding |
GB2532420A (en) | 2014-11-18 | 2016-05-25 | Sony Corp | Data encoding and decoding |
US9484954B1 (en) | 2015-09-10 | 2016-11-01 | Intel Corporation | Methods and apparatus to parallelize data decompression |
US10602192B2 (en) * | 2016-02-04 | 2020-03-24 | Mediatek Inc. | Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion |
US10244261B2 (en) * | 2017-01-26 | 2019-03-26 | Google Llc | Transform coefficient coding using level maps |
US10547869B2 (en) | 2017-12-08 | 2020-01-28 | Google Llc | Template-based entropy coding of quantized transform coefficients |
US10609421B2 (en) | 2018-07-12 | 2020-03-31 | Google Llc | Context derivation for coefficient coding |
JP2022523287A (en) * | 2019-03-11 | 2022-04-22 | インターデジタル ヴイシー ホールディングス, インコーポレイテッド | Reduced number of regular coded bins |
EP3709657A1 (en) * | 2019-03-11 | 2020-09-16 | InterDigital VC Holdings, Inc. | Reducing the number of regular coded bins |
GB2585040A (en) | 2019-06-25 | 2020-12-30 | Sony Corp | Image data encoding and decoding |
GB2585042A (en) * | 2019-06-25 | 2020-12-30 | Sony Corp | Image data encoding and decoding |
GB2587359A (en) * | 2019-09-24 | 2021-03-31 | Sony Corp | Image data encoding and decoding |
GB2596100A (en) * | 2020-06-17 | 2021-12-22 | Sony Group Corp | Data encoding and decoding |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002247137A (en) * | 2000-04-25 | 2002-08-30 | Canon Inc | Communication apparatus and communication method |
JP4240283B2 (en) * | 2002-10-10 | 2009-03-18 | ソニー株式会社 | Decoding device and decoding method |
US7286710B2 (en) * | 2003-10-01 | 2007-10-23 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Coding of a syntax element contained in a pre-coded video signal |
US7626522B2 (en) * | 2007-03-12 | 2009-12-01 | Qualcomm Incorporated | Data compression using variable-to-fixed length codes |
US8630364B2 (en) * | 2008-07-25 | 2014-01-14 | Nokia Siemens Networks Oy | Termination techniques for multi-index continuous phase encoders for wireless networks |
US9325999B2 (en) * | 2011-03-10 | 2016-04-26 | Sharp Kabushiki Kaisha | Video decoder for slices |
-
2011
- 2011-11-07 GB GBGB1119180.6A patent/GB201119180D0/en not_active Ceased
- 2011-11-15 GB GB1119687.0A patent/GB2496209A/en not_active Withdrawn
-
2012
- 2012-10-25 TW TW101139518A patent/TW201342919A/en unknown
- 2012-11-06 CN CN201280054508.9A patent/CN103918272A/en active Pending
- 2012-11-06 US US14/352,456 patent/US20140286417A1/en not_active Abandoned
- 2012-11-06 WO PCT/GB2012/052758 patent/WO2013068731A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
GB201119687D0 (en) | 2011-12-28 |
GB2496209A (en) | 2013-05-08 |
US20140286417A1 (en) | 2014-09-25 |
WO2013068731A1 (en) | 2013-05-16 |
CN103918272A (en) | 2014-07-09 |
GB201119180D0 (en) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201342919A (en) | Data encoding and decoding | |
KR101356733B1 (en) | Method and apparatus for Context Adaptive Binary Arithmetic Coding and decoding | |
JP2870515B2 (en) | Variable length coding device | |
TWI658702B (en) | Data encoding and decoding | |
JP4313771B2 (en) | Method and apparatus for encoding transform coefficients in image and / or video encoder and decoder and corresponding computer program and corresponding computer readable storage medium | |
JP5258664B2 (en) | Image coding apparatus, method and program, and image decoding apparatus, method and program | |
KR102240333B1 (en) | Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs | |
KR100930263B1 (en) | Video Compression Method and Its System Using Iterative Encoding Algorithm | |
US8018996B2 (en) | Arithmetic decoding apparatus and method | |
KR0180169B1 (en) | Variable-length encoder | |
KR102123620B1 (en) | Method and apparatus for entropy encoding or entropy decoding of video signals for large-scale parallel processing | |
KR20160101925A (en) | Data encoding and decoding | |
US9544599B2 (en) | Context adaptive data encoding | |
CN102740068A (en) | image memory compression method and device | |
CN114009029B (en) | Image data encoding and decoding | |
JP5231243B2 (en) | Encoding apparatus and encoding method | |
JP5116704B2 (en) | Image coding apparatus and image coding method | |
JP2009021775A (en) | Encoding apparatus and encoding method | |
JP2010004284A (en) | Image decoder, and image decoding method | |
KR20070075267A (en) | How to encode and decode video signals | |
JP2000165873A (en) | Moving image information compression method and system | |
US20120147972A1 (en) | Image decoding apparatus, image decoding method, image encoding apparatus, image encoding method, and program | |
KR20120038355A (en) | Method and apparatus of entropy encoding/decoding and symbol endcoding/decoding method and apparatus therefor | |
JP2012023715A (en) | Code amount prediction device and program | |
TW201334427A (en) | Context adaptive data encoding |