GB2496210A - Context adaptive (CABAC) data encoding and decoding - Google Patents

Context adaptive (CABAC) data encoding and decoding Download PDF

Info

Publication number
GB2496210A
GB2496210A GB1119710.0A GB201119710A GB2496210A GB 2496210 A GB2496210 A GB 2496210A GB 201119710 A GB201119710 A GB 201119710A GB 2496210 A GB2496210 A GB 2496210A
Authority
GB
United Kingdom
Prior art keywords
text
data
values
size
code values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB1119710.0A
Other versions
GB201119710D0 (en
Inventor
James Alexander Gamei
Karl James Sharman
Paul James Silcock
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Publication of GB201119710D0 publication Critical patent/GB201119710D0/en
Priority to PCT/GB2012/052760 priority Critical patent/WO2013068733A1/en
Publication of GB2496210A publication Critical patent/GB2496210A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

A data encoding method for successive input data values comprises: comparing an input data value with an ordered set of n-1 (plural) different threshold values, n being three or more, generating range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values according to the range data corresponding to that input data value, the portion sizes relative to the set of code values defined by at least n-1 context variables (CV) associated with that input data value; modifying the size of the set of code values, for use in respect of a next input data word, depending upon the current sizes of the set of code values and of the selected portion; detecting whether the set of code values is less than a predetermined minimum size; and, if so, successively increasing the size of the code values set to at least the predetermined minimum size; and outputting an encoded data bit in response to each size-increasing operation. An analogous decoding method, comparing a test value with the n complementary portions, is also claimed.

Description

CONTEXT ADAPTIVE DATA ENCODING
This invention relates to context adaptive data encoding.
There are several video data compression and decompression systems which involve transforming video data into a frequency domain representation, quantising the frequency domain coefficients and then applying some form of entropy encoding to the quantised coefficients.
Entropy, in the present context, can be considered as representing the information content of a data symbol or series of symbols. The aim of entropy encoding is to encode a series of data symbols in a lossless manner using (ideally) the smallest number of encoded data bits which are necessary to represent the information content of that series of data symbols. In practice, entropy encoding is used to encode the quantised coefficients such that the encoded data is smaller (in terms of its number of bits) then the data size of the original quantised coefficients. A more efficient entropy encoding process gives a smaller output data size for the same input data size.
One technique for entropy encoding video data is the so-called CABAC (context adaptive binary arithmetic coding) technique. This is just an example of a more general arithmetic coding scheme. In an example implementation, the quantised coefficients are divided info data indicating positions, relative to an array of the coefficients, of coefficient values of certain magnitudes and their signs. So, for example, a so-called "significance map" may indicate positions in an array of coefficients where the coefficient at that position has a non-zero value. Other maps may indicate where the data has a value of one or more (and its sign); or where the data has a value of two or more.
In context adaptive encoding, a data bit is encoded with respect to a probability model, or context, representing an expectation or prediction of how likely it is that the data bit will be a one or a zero. To do this, an input data bit is assigned a code value within one of two complementary sub-ranges of a range of code values, with the respective sizes of the sub-ranges being defined by the context. A next step is to modify the overall range (for use in respect of a next input data bit) in response to the assigned code value and the current size of the selected sub-range. If the modified range is then smaller than a threshold (for example, one half of an original range size) then it is increased in size, for example by doubling (shifting left) the modified range. At this point, an output encoded data bit is generated to indicate that a doubling operation took place. A further step is to modify the context for use with the next input data bit. In currently proposed systems this is carried out by using the current context and the identity of the current "most probable symbol" (either one or zero, whichever is indicated by the context to currently have a greater than 0.5 probability) as an index into a look-up table of new context values.
In current CABAC and similar encoding systems, this process is repeated several times, once for each of the plural maps" indicating the positions, in an array of data, of data values exceeding certain thresholds. So, the process may be executed once for a base "significance map" showing where there are zero or non-zero data values, then another time for a map showing where data having a first value (such as a value of 1) is located, then for a map showing where data having a second value (such as a value of 2) is located, and so on.
This invention provides a data encoding method for encoding successive input data values, the method comprising the steps of: comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; modifying the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the current size of the selected portion; and detecting whether the set of code values is less than a predetermined minimum size and if so: successively increasing the size of the set of code values until it has at least the predetermined minimum size; and outputting an encoded data bit in response to each such size-increasing operation.
The invention provides a technique of encoding multiple variables in a single context adaptive arithmetic coder encoding stage, and a corresponding decoding technique. Rather than simply conducting the multiple encodings and decodings in parallel, instead, a CABAC process is run which divides a code value range into more than two sub-ranges and applies these sub-ranges to different values of the data to be encoded. The technique can improve the data throughput of the encoding I decoding system, something which is particularly important in
the field of video data encoding and decoding.
The invention also provides a data encoding method for encoding successive input data values, the method comprising the steps of: comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; and modifying the context variables only after a group of m data values has been encoded, where m is greater than one.
In embodiments of the invention m = 16.
The invention also provides a data encoding method for encoding successive input data values, the method comprising the steps of: comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; and modifying the context variables by selecting a set of context variables from a set of available combinations of context variables, the set being smaller than all combinations of context variables values.
The invention also provides a data encoding method for encoding successive input data values, the input data values comprising a significance map indicating the presence, in an array of frequency separated image data, of non-zero data values, the method comprising the steps of: comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; and; modifying the context variables by deriving replacement values for all of the context variables from the significance map and/or data value positions defined by the position of the significance map.
Further respective aspects and features of the present invention are defined in the appended claims.
Embodiments of the invention will now be described with reference to the accompanying drawings in which: Figure 1 schematically illustrates an audio/video (AN) data transmission and reception system using video data compression and decompression; Figure 2 schematically illustrates a video display system using video data decompression; Figure 3 schematically illustrates an audio/video storage system using video data compression and decompression; Figure 4 schematically illustrates a video camera using video data compression; Figure 5 provides a schematic overview of a video data compression and decompression apparatus; Figure 6 schematically illustrates the generation of predicted images; Figure 7 schematically illustrates a largest coding unit (LCLJ); Figure 8 schematically illustrates a set of four coding units (CU); Figures 9 and 10 schematically illustrate the coding units of Figure 8 sub-divided into smaller coding units; Figure 11 schematically illustrates an array of prediction units (PU); Figure 12 schematically illustrates an array of transform units (TU); Figure 13 schematically illustrates a partially-encoded image; Figure 14 schematically illustrates a set of possible prediction directions; Figure 15 schematically illustrates a set of prediction modes; Figure 16 schematically illustrates a zigzag scan; Figure 17 schematically illustrates a CABAC entropy encoder; Figure 18 schematically illustrates a CAVLC entropy encoding process; Figures 1 9A to 1 9D schematically illustrate aspects of a CABAC encoding and decoding operation; Figure 20 schematically illustrates a CABAC encoder; Figure 21 schematically illustrates a CABAC decoder; Figure 22 schematically illustrates the partitioning of a code value space; Figures 23-25 schematically illustrate the relative age of other coefficients used in updating context values; and Figure 26 schematically illustrates an implementation of a CABAC decoder.
Referring now to the drawings, Figures 1-4 are provided to give schematic illustrations of apparatus or systems making use of the compression and/or decompression apparatus to be described below in connection with embodiments of the invention.
All of the data compression and/or decompression apparatus is to be described below may be implemented in hardware, in software running on a general-purpose data processing apparatus such as a general-purpose computer, as programmable hardware such as an application specific integrated circuit (ASIC) or field programmable gate array (FPGA) or as combinations of these. In cases where the embodiments are implemented by software and/or firmware, it will be appreciated that such software and/or firmware, and non-transitory data storage media by which such software and/or firmware are stored or otherwise provided, are considered as embodiments of the present invention.
Figure 1 schematically illustrates an audio/video data transmission and reception system using video data compression and decompression.
An input audio/video signal 10 is supplied to a video data compression apparatus 20 which compresses at least the video component of the audio/video signal 10 for transmission along a transmission route 30 such as a cable, an optical fibre, a wireless link or the like. The compressed signal is processed by a decompression apparatus 40 to provide an output audio/video signal 50. For the return path, a compression apparatus 60 compresses an audio/video signal for transmission along the transmission route 30 to a decompression apparatus 70.
The compression apparatus 20 and decompression apparatus 70 can therefore form one node of a transmission link. The decompression apparatus 40 and decompression apparatus 60 can form another node of the transmission link. Of course, in instances where the transmission link is uni-directional, only one of the nodes would require a compression apparatus and the other node would only require a decompression apparatus.
Figure 2 schematically illustrates a video display system using video data decompression. In particular, a compressed audio/video signal 100 is processed by a decompression apparatus 110 to provide a decompressed signal which can be displayed on a display 120. The decompression apparatus 110 could be implemented as an integral part of the display 120, for example being provided within the same casing as the display device.
Alternatively, the decompression apparatus 110 might be provided as (for example) a so-called set top box (STB), noting that the expression "set-top" does not imply a requirement for the box to be sited in any particular orientation or position with respect to the display 120; it is simply a term used in the art to indicate a device which is connectable to a display as a peripheral device.
Figure 3 schematically illustrates an audio/video storage system using video data compression and decompression. An input aUdio/video signal 130 is supplied to a compression apparatus 140 which generates a compressed signal for storing by a store device 150 such as a magnetic disk device, an optical disk device, a magnetic tape device, a solid state storage device such as a semiconductor memory or other storage device. For replay, compressed data is read from the store device 150 and passed to a decompression apparatus 160 for decompression to provide an output audio/video signal 170.
It will be appreciated that the compressed or encoded signal, and a storage medium storing that signal, are considered as embodiments of the present invention.
Figure 4 schematically illustrates a video camera using video data compression. In Figure 4, and image capture device 180, such as a charge coupled device (CCD) image sensor and associated control and read-out electronics, generates a video signal which is passed to a compression apparatus 190. A microphone (or plural microphones) 200 generates an audio signal to be passed to the compression apparatus 190. The compression apparatus 190 generates a compressed audio/video signal 210 to be stored and/or transmitted (shown generically as a schematic stage 220).
The techniques to be described below relate primarily to video data compression. It will be appreciated that many existing techniques may be used for audio data compression in conjunction with the video data compression techniques which will be described, to generate a compressed audio/video signal. Accordingly, a separate discussion of audio data compression will not be provided. It will also be appreciated that the data rate associated with video data, in particular broadcast quality video data, is generally very much higher than the data rate associated with audio data (whether compressed or uncompressed). It will therefore be appreciated that uncompressed audio data could accompany compressed video data to form a compressed audio/video signal. It will further be appreciated that although the present examples (shown in Figures 1-4) relate to audio/video data, the techniques to be described below can find use in a system which simply deals with (that is to say, compresses, decompresses, stores, displays and/or transmits) video data. That is to say, the embodiments can apply to video data compression without necessarily having any associated audio data handling at all.
Figure 5 provides a schematic overview of a video data compression and decompression apparatus.
Successive images of an input video signal 300 are supplied to an adder 310 and to an image predictor 320. The image predictor 320 will be described below in more detail with reference to Figure 6. The adder 310 in fact performs a subtraction (negative addition) operation in that it receives the input video signal 300 on a "+" input and the output of the image predictor 320 on a "-" input, so that the predicted image is subtracted from the input image. The result is to generate a so-called residual image signal 330 representing the difference between the actual and projected images.
One reason why a residual image signal is generated is as follows. The data coding techniques to be described, that is to say the techniques which will be applied to the residual image signal, tends to work more efficiently when there is less "energy" in the image to be encoded. Here, the term "efficiently" refers to the generation of a small amount of encoded data; for a particular image quality level, it is desirable (and considered "efficient") to generate as little data as is practicably possible. The reference to "energy" in the residual image relates to the amount of information contained in the residual image. If the predicted image were to be identical to the real image, the difference between the two (that is to say, the residual image) would contain zero information (zero energy) and would be very easy to encode into a small amount of encoded data. In general, if the prediction process can be made to work reasonably well, the expectation is that the residual image data will contain less information (less energy) than the input image and so will be easier to encode into a small amount of encoded data.
The residual image data 330 is supplied to a transform unit 340 which generates a discrete cosine transform (DOT) representation of the residual image data. The OCT technique itself is well known and will not be described in detail here. There are however aspects of the techniques used in the present apparatus which will be described in more detail below, in particular relating to the selection of different blocks of data to which the DOT operation is applied. These will be discussed with reference to Figures 7-12 below.
The output of the transform unit 340, which is to say, a set of DOT coefficients for each transformed block of image data, is supplied to a quantiser 350. Various quantisation techniques are known in the field of video data compression, ranging from a simple multiplication by a quantisation scaling factor through to the application of complicated lookup tables under the control of a quantisation parameter. The general aim is twofold. Firstly, the quantisation process reduces the number of possible values of the transformed data. Secondly, the quantisation process can increase the likelihood that values of the transformed data are zero. Both of these can make the entropy encoding process, to be described below, work more efficiently in generating small amounts of compressed video data.
A data scanning process is applied by a scan unit 360. The purpose of the scanning process is to reorder the quantised transformed data so as to gather as many as possible of the non-zero quantised transformed coefficients together, and of course therefore to gather as many as possible of the zero-valued coefficients together. These features can allow so-called run-length coding or similar techniques to be applied efficiently. So, the scanning process involves selecting coefficients from the quantised transformed data, and in particular from a block of coefficients corresponding to a block of image data which has been transformed and quantised, according to a "scanning order" so that (a) all of the coefficients are selected once as part of the scan, and (b) the scan tends to provide the desired reordering. Techniques for selecting a scanning order will be described below. One example scanning order which can tend to give useful results is a so-called zigzag scanning order.
The scanned coefficients are then passed to an entropy encoder (EE) 370. Again, various types of entropy encoding may be used. Two examples which will be described below are variants of the so-called CABAC (Context Adaptive Binary Arithmetic Coding) system and variants of the so-called OAVLO (Context Adaptive Variable-Length Coding) system. In general terms, OABAO is considered to provide a better efficiency, and in some studies has been shown to provide a 10-20% reduction in the quantity of encoded output data for a comparable image quality compared to CAVLO. However, CAVLC is considered to represent a much lower level of complexity (in terms of its implementation) than CABAC. 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 scanning process and the entropy encoding process are shown as separate processes, but in fact can be combined or treated together. That is to say, the reading of data into the entropy encoder can take place in the scan order. Corresponding considerations apply to the respective inverse processes to be described below.
The output of the entropy encoder 370, along with additional data (mentioned above and/or discussed below), for example defining the manner in which the predictor 320 generated the predicted image, provides a compressed output video signal 380.
However, a return path is also provided because the operation of the predictor 320 itself depends upon a decompressed version of the compressed output data.
The reason for this feature is as follows. At the appropriate stage in the decompression process (to be described below) a decompressed version of the residual data is generated. This decompressed residual data has to be added to a predicted image to generate an output image (because the original residual data was the difference between the input image and a predicted image). In order that this process is comparable, as between the compression side and the decompression side, the predicted images generated by the predictor 320 should be the same during the compression process and during the decompression process. Of course, at decompression, the apparatus does not have access to the original input images, but only to the decompressed images. Therefore, at compression, the predictor 320 bases its prediction (at least, for inter-image encoding) on decompressed versions of the compressed images.
The entropy encoding process carried out by the entropy encoder 370 is considered to be "lossless", which is to say that it can be reversed to arrive at exactly the same data which was first supplied to the entropy encoder 370. So, the return path can be implemented before the entropy encoding stage. Indeed, the scanning process carried out by the scan unit 360 is also considered lossless, but in the present embodiment the return path 390 is from the output of the quantiser 350 to the input of a complimentary inverse quantiser 420.
In general terms, an entropy decoder 410, the reverse scan unit 400, an inverse quantiser 420 and an inverse transform unit 430 provide the respective inverse functions of the entropy encoder 370, the scan unit 360, the quantiser 350 and the transform unit 340. For now, the discussion will continue through the compression process; the process to decompress an input compressed video signal will be discussed separately below.
In the compression process, the scanned coefficients are passed by the return path 390 from the quantiser 350 to the inverse quantiser 420 which carries out the inverse operation of the scan unit 360. An inverse quantisation and inverse transformation process are carried out by the units 420, 430 to generate a compressed-decompressed residual image signal 440.
The image signal 440 is added, at an adder 450, to the output of the predictor 320 to generate a reconstructed output image 460. This forms one input to the image predictor 320, as will be described below.
Turning now to the process applied to a received compressed video signal 470, the signal is supplied to the entropy decoder 410 and from there to the chain of the reverse scan unit 400, the inverse quantiser 420 and the inverse transform unit 430 before being added to the output of the image predictor 320 by the adder 450. In straightforward terms, the output 460 of the adder 450 forms the output decompressed video signal 480. In practice, further filtering may be applied before the signal is output.
Figure 6 schematically illustrated the generation of predicted images, and in particular the operation of the image predictor 320.
There are two basic modes of prediction: so-called intra-image prediction and so-called inter-image, or motion-compensated (MC), prediction.
Intra-image prediction bases a prediction of the content of a block of the image on data from within the same image. This corresponds to so-called l4rame encoding in other video compression techniques. In contrast to I-frame encoding, where the whole image is intra-encoded, in the present embodiments the choice between intra-and inter-encoding can be made on a block-by-block basis, though in other embodiments of the invention the choice is still made on an image-by-image basis.
Motion-compensated prediction makes use of motion information which attempts to define the source, in another adjacent or nearby image, of image detail to be encoded in the current image. Accordingly, in an ideal example, the contents of a block of image data in the predicted image can be encoded very simply as a reference (a motion vector) pointing to a corresponding block at the same or a slightly different position in an adjacent image.
Returning to Figure 6, two image prediction arrangements (corresponding to intra-and inter-image prediction) are shown, the results of which are selected by a multiplexer 500 under the control of a mode signal 510 so as to provide blocks of the predicted image for supply to the adders 310 and 450. The choice is made in dependence upon which selection gives the lowest "energy" (which, as discussed above, may be considered as information content requiring encoding), and the choice is signalled to the encoder within the encoded output datastream.
Image energy, in this context, can be detected, for example, by carrying out a trial subtraction of an area of the two versions of the predicted image from the input image, squaring each pixel value of the difference image, summing the squared values, and identifying which of the two versions gives rise to the lower mean squared value of the difference image relating to that image area.
The actual prediction, in the intra-encoding system, is made on the basis of image blocks received as part of the signal 460, which is to say, the prediction is based upon encoded-decoded image blocks in order that exactly the same prediction can be made at a decompression apparatus. However, data can be derived from the input video signal 300 by an intra-mode selector 520 to control the operation of the intra-image predictor 530.
For inter-image prediction, a motion compensated (MC) predictor 540 uses motion information such as motion vectors derived by a motion estimator 550 from the input video signal 300. Those motion vectors are applied to a processed version of the reconstructed image 460 by the motion compensated predictor 540 to generate blocks of the inter-image prediction.
The processing applied to the signal 460 will now be described. Firstly, the signal is filtered by a filter unit 560. This involves applying a "deblocking" filter to remove or at least tend to reduce the effects of the block-based processing carried out by the transform unit 340 and subsequent operations. Also, an adaptive loop filter is applied using coefficients derived by processing the reconstructed signal 460 and the input video signal 300. The adaptive loop filter is a type of filter which, using known techniques, applies adaptive filter coefficients to the data to be filtered. That is to say, the filter coefficients can vary in dependence upon various factors.
Data defining which filter coefficients to use is included as part of the encoded output datastream.
The filtered output from the filter unit 560 in fact forms the output video signal 480. It is also buffered in one or more image stores 570; the storage of successive images is a requirement of motion compensated prediction processing, and in particular the generation of motion vectors. To save on storage requirements, the stored images in the image stores 570 may be held in a compressed form and then decompressed for use in generating motion vectors. For this particular purpose, any known compression I decompression system may be used. The stored images are passed to an interpolation filter 580 which generates a higher resolution version of the stored images; in this example, intermediate samples (sub-samples) are generated such that the resolution of the interpolated image is output by the interpolation filter 580 is 8 times (in each dimension) that of the images stored in the image stores 570. The interpolated images are passed as an input to the motion estimator 550 and also to the motion compensated predictor 540.
In embodiments of the invention, a further optional stage is provided, which is to multiply the data values of the input video signal by a factor of four using a multiplier 600 (effectively just shifting the data values left by two bits), and to apply a corresponding divide operation (shift right by two bits) at the output of the apparatus using a divider or right-shifter 610. So, the shifting left and shifting right changes the data purely for the internal operation of the apparatus.
This measure can provide for higher calculation accuracy within the apparatus, as the effect of any data rounding errors is reduced.
The way in which an image is partitioned for compression processing will now be described. At a basic level, and image to be compressed is considered as an array of blocks of samples. For the purposes of the present discussion, the largest such block under consideration is a so-called largest coding unit (LCU) 700, which represents a square array of 64 x 64 samples. Here, the discussion relates to luminance samples. Depending on the chrominance mode, such as 4:4:4, 4:2:2, 4:2:0 or 4:4:4:4 (GBR plus key data), there will be differing numbers of corresponding chrominance samples corresponding to the luminance block.
Three basic types of blocks will be described: coding units, prediction units and transform units. In general terms, the recursive subdividing of the LCUs allows an input picture to be partitioned in such a way that both the block sizes and the block coding parameters (such as prediction or residual coding modes) can be set according to the specific characteristics of the image to be encoded.
The LCU may be subdivided into so-called coding units (CU). Coding units are always square and have a size between 8x8 samples and the full size of the LCU 700. The coding units can be arranged as a kind of tree structure, so that a first subdivision may take place as shown in Figure 8, giving coding units 710 of 32x32 samples; subsequent subdivisions may then take place on a selective basis so as to give some coding units 720 of 16x16 samples (Figure 9) and potentially some coding units 730 of 8x8 samples (Figure 10). Overall, this process can provide a content-adapting coding tree structure of CU blocks, each of which may be as large as the LCU or as small as 8x8 samples. Encoding of the output video data takes place on the basis of the coding unit structure.
Figure 11 schematically illustrates an array of prediction units (PU). A prediction unit is a basic unit for carrying information relating to the image prediction processes, or in other words the additional data added to the entropy encoded residual image data to form the output video signal from the apparatus of Figure 5. In general, prediction units are not restricted to being square in shape. They can take other shapes, in particular rectangular shapes forming half of one of the square coding units, as long as the coding unit is greater than the minimum (8x8) size. The aim is to allow the boundary of adjacent prediction units to match (as closely as possible) the boundary of real objects in the picture, so that different prediction parameters can be applied to different real objects. Each coding unit may contain one or more prediction units.
Figure 12 schematically illustrates an array of transform units (TU). A transform unit is a basic unit of the transform and quantisation process. Transform units are always square and can take a size from 4x4 up to 32x32 samples. Each coding unit can contain one or more transform units. The acronym SDIP-P in Figure 12 signifies a so-called shod distance intra-prediction partition. In this arrangement only one dimensional transforms are used, so a 4xN block is passed through N transforms with input data to the transforms being based upon the previously decoded neighbouring blocks and the previously decoded neighbouring lines within the current SDIP-P.
The intra-prediction process will now be discussed. In general terms, intra-prediction involves generating a prediction of a current block (a prediction unit) of samples from previously-encoded and decoded samples in the same image. Figure 13 schematically illustrates a partially encoded image 800. Here, the image is being encoded from top-left to bottom-right on an LCU basis. An example LCU encoded partway through the handling of the whole image is shown as a block 810. A shaded region 820 above and to the left of the block 810 has already been encoded. The intra-image prediction of the contents of the block 810 can make use of any of the shaded area 820 but cannot make use of the unshaded area below that.
The block 810 represents an LCU; as discussed above, for the purposes of intra-image prediction processing, this may be subdivided into a set of smaller prediction units. An example of a prediction unit 830 is shown within the [CU 810.
The intra-image prediction takes into account samples above and/or to the left of the current [CU 810. Source samples, from which the required samples are predicted, may be located at different positions or directions relative to a current prediction unit within the [CU 810. To decide which direction is appropriate for a current prediction unit, the results of a trial prediction based upon each candidate direction are compared in order to see which candidate direction gives an outcome which is closest to the corresponding block of the input image. The candidate direction giving the closest outcome is selected as the prediction direction for that prediction unit.
The picture may also be encoded on a "slice" basis. In one example, a slice is a horizontally adjacent group of [CUs. But in more general terms, the entire residual image could form a slice, or a slice could be a single [CU, or a slice could be a row of [CUs, and so on.
Slices can give some resilience to errors as they are encoded as independent units. The encoder and decoder states are completely reset at a slice boundary. For example, intra-prediction is not carried out across slice boundaries; slice boundaries are treated as image boundaries for this purpose.
Figure 14 schematically illustrates a set of possible (candidate) prediction directions. The full set of 34 candidate directions is available to a prediction unit of 8x8, 16x16 or 32x32 samples. The special cases of prediction unit sizes of 4x4 and 64x64 samples have a reduced set of candidate directions available to them (17 candidate directions and 5 candidate directions respectively). The directions are determined by horizontal and vertical displacement relative to a current block position, but are encoded as prediction "modes", a set of which is shown in Figure 15. Note that the so-called DC mode represents a simple arithmetic mean of the surrounding upper and left-hand samples.
Figure 16 schematically illustrates a zigzag scan, being a scan pattern which may be applied by the scan unit 360. In Figure 16, the pattern is shown for an example block of 8x8 DCT coefficients, with the DC coefficient being positioned at the top left position 840 of the block, and increasing horizontal and vertical spatial frequencies being represented by coefficients at increasing distances downwards and to the right of the top-left position 840.
Note that in some embodiments, the coefficients may be scanned in a reverse order (bottom right to top left using the ordering notation of Figure 16). Also it should be noted that in some embodiments, the scan may pass from left to right across a few (for example between one and three) uppermost horizontal rows, before carrying out a zig-zag of the remaining coefficients.
Figure 17 schematically illustrates the operation of a CABAC entropy encoder.
The CABAC encoder operates in respect of binary data, that is to say, data represented by only the two symbols 0 and 1. The encoder makes use of a so-called context modelling process which selects a "context" or probability model for subsequent data on the basis of previously encoded data. The selection of the context is carried out in a deterministic way so that the same determination, on the basis of previously decoded data, can be performed at the decoder without the need for further data (specifying the context) to be added to the encoded datastream passed to the decoder.
Referring to Figure 17, input data to be encoded may be passed to a binary converter 900 if it is not already in a binary form; if the data is already in binary form, the converter 900 is bypassed (by a schematic switch 910). In the present embodiments, conversion to a binary form is actually carried out by expressing the quantised DCT coefficient data as a series of binary "maps", which will be described further below.
The binary data may then be handled by one of two processing paths, a "regular" and a "bypass" path (which are shown schematically as separate paths but which, in embodiments of the invention discussed below, could in fact be implemented by the same processing stages, just using slightly different parameters). The bypass path employs a so-called bypass coder 920 which does not necessarily make use of context modelling in the same form as the regular path.
In some examples of CABAC coding, this bypass path can be selected if there is a need for particularly rapid processing of a batch of data, but in the present embodiments two features of so-called "bypass" data are noted: firstly, the bypass data is handled by the CABAC encoder (950, 960), just using a fixed context model representing a 50% probability; and secondly, the bypass data relates to certain categories of data, one particular example being coefficient sign data. Otherwise, the regular path is selected by schematic switches 930, 940. This involves the data being processed by a context modeller 950 followed by a coding engine 960.
The entropy encoder shown in Figure 17 encodes a block of data (that is, for example, data corresponding to a block of coefficients relating to a block of the residual image) as a single value if the block is formed entirely of zero-valued data. For each block that does not fall into this category, that is to say a block that contains at least some non-zero data, a "significance map" is prepared. The significance map indicates whether, for each position in a block of data to be encoded, the corresponding coefficient in the block is non-zero. The significance map data, being in binary form, is itself CABAC encoded. The use of the significance map assists with compression because no data needs to be encoded for a coefficient with a magnitude that the significance map indicates to be zero. Also, the significance map can include a special code to indicate the final non-zero coefficient in the block, so that all of the final high frequency I trailing zero coefficients can be omitted from the encoding. The significance map is followed, in the encoded bitstream, by data defining the values of the non-zero coefficients specified by the significance map.
Further levels of map data are also prepared and are CABAC encoded. An example is a map which defines, as a binary value (1 = yes, 0 = no) whether the coefficient data at a map position which the significance map has indicated to be "non-zero" actually has the value of "one". Another map specifies whether the coefficient data at a map position which the significance map has indicated to be "non-zero" actually has the value of "two". A further map indicates, for those map positions where the significance map has indicated that the coefficient data is "non-zero", whether the data has a value of "greater than two". Another map indicates, again for data identified as "non-zero", the sign of the data value (using a predetermined binary notation such as 1 fort, 0 for-, or of course the other way around).
In embodiments of the invention, the significance map and other maps are generated from the quantised DCT coefficients, for example by the scan unit 360, and is subjected to a zigzag scanning process (or a scanning process selected from zigzag, horizontal raster and vertical raster scanning according to the intra-prediction mode) before being subjected to CABAC encoding.
In general terms, CABAC encoding involves predicting a context, or a probability model, for a next bit to be encoded, based upon other previously encoded data. If the next bit is the same as the bit identified as "most likely" by the probability model, then the encoding of the information that "the next bit agrees with the probability model" can be encoded with great efficiency. It is less efficient to encode that "the next bit does not agree with the probability model", so the derivation of the context data is important to good operation of the encoder. The term "adaptive" means that the context or probability models are adapted, or varied during encoding, in an attempt to provide a good match to the (as yet uncoded) next data.
Using a simple analogy, in the written English language, the letter "U" is relatively uncommon. But in a letter position immediately after the letter "0", it is very common indeed.
So, a probability model might set the probability of a "U" as a very low value, but if the current letter is a "0", the probability model for a "U" as the next letter could be set to a very high probability value.
CABAC encoding is used, in the present arrangements, for at least the significance map and the maps indicating whether the non-zero values are one or two. Bypass processing -which in these embodiments is identical to CABAC encoding but for the fact that the probability model is fixed at an equal (0.5:0.5) probability distribution of is and Os, is used for at least the sign data and the map indicating whether a value is >2. For those data positions identified as >2, a separate so-called escape data encoding can be used to encode the actual value of the data. This may include a Golomb-Rice encoding technique.
The CABAC context modelling and encoding process is described in more detail in WD4: Working Draft 4 of High-Efficiency Video Coding, JCTVC-F803_d5, Draft ISO/lEO 23008-HEVC; 201x(E) 2011-10-28.
Figure 18 schematically illustrates a CAVLC entropy encoding process.
As with CABAC discussed above, the entropy encoding process shown in Figure 18 follows the operation of the scan unit 360. It has been noted that the non-zero coefficients in the transformed and scanned residual data are often sequences of ±1. The CAVLC coder indicates the number of high-frequency ±1 coefficients by a variable referred to as "trailing is" (Tis). For these non-zero coefficients, the coding efficiency is improved by using different (context-adaptive) variable length coding tables.
Referring to Figure 18, a first step 1000 generates values "coeff_token" to encode both the total number of non-zero coefficients and the number of trailing ones. At a step 1010, the sign bit of each trailing one is encoded in a reverse scanning order. Each remaining non-zero coefficient is encoded as a "level" variable at a step 1020, thus defining the sign and magnitude of those coefficients. At a step 1030 a variable total_zeros is used to code the total number of zeros preceding the last nonzero coefficient. Finally, at a step 1040, a variable run_before is used to code the number of successive zeros preceding each non--zero coefficient in a reverse scanning order. The collected output of the variables defined above forms the encoded data.
As mentioned above, a default scanning order for the scanning operation carried out by the scan unit 360 is a zigzag scan is illustrated schematically in Figure 16. In other arrangements, four blocks where intra-image encoding is used, a choice may be made between zigzag scanning, a horizontal raster scan and a vertical raster scan depending on the image prediction direction (Figure 15) and the transform unit (TU) size.
The CABAC process, discussed above, will now be described in a little more detail.
CABAC, at least as far as it is used in the proposed HEVC system, involves deriving a "context" or probability model in respect of a next bit to be encoded. The context, defined by a context variable or CV, then influences how the bit is encoded. In general terms, if the next bit is the same as the value which the CV defines as the expected more probable value, then there are advantages in terms of reducing the number of output bits needed to define that data bit.
The encoding process involves mapping a bit to be encoded onto a position within a range of code values. The range of code values is shown schematically in Figure 19A as a series of adjacent integer numbers extending from a lower limit, m_low, to an upper limit, rn_high. The difference between these two lirnits is rn_range, where rn_range = rn_high rn_low. By various techniques to be described below, in a basic CABAC system rn_range is constrained to lie between 256 and 512. rn_low can be any value. It can start at (say) zero, but can vary as part of the encoding process to be described.
The range of code values, rn_range, is divided into two sub-ranges, by a boundary 1100 defined with respect to the context variable as: boundary = rn_low + (CV * rn_range) So, the context variable divides the total range into two sub-ranges or sub-portions, one sub-range being associated with a value (of a next data bit) of zero, and the other being associated with a value (of the next data bit) of one. The division of the range represents the probabilities assumed by the generation of the CV of the two bit values for the next bit to be encoded. So, if the sub-range associated with the value zero is less than half of the total range, this signifies that a zero is considered less probable, as the next syrnbol, than a one.
Various different possibilities exist for defining which way round the sub-ranges apply to the possible data bit values. In one exarnple, a lower region of the range (that is, from rn_low to the boundary) is by convention defined as being associated with the data bit value of zero.
The encoder and decoder maintain a record of which data bit value is the less probable (often termed the least probable symbol" or LPS). The CV refers to the LPS, so the CV always represents a value of between 0 and 0.5.
A next bit is now mapped to the range rn_range, as divided by the boundary. This is carried out deterrninistically at both the encoder and the decoder using a technique to be described in more detail below. If the next bit is a 0, a particular code value, representing a position within the sub-range frorn rn_low to the boundary, is assigned to that bit. If the next bit is a 1, a particular code value in the sub-range frorn the boundary 1100 to m_high is assigned to that bit.
The lower limit rn_low and the range rn_range are then redefined. If the just-encoded bit is a zero, then rn_low is unchanged but rn_range is redefined to equal rn_range * CV. If the just-encoded bit is a one then m_Iow is moved to the boundary position (rn_low + (CV * rn_range)) and rn_range is redefined as the difference between the boundary and rn_high (that is, (1-CV) * m_range).
These alternatives are illustrated schernatically in Figures 19B and 19C.
In Figure 19B, the data bit was a one and so rn_low was moved up to the previous boundary position. This provides a revised set of code values for use in a next bit encoding sequence. Note that in some embodiments, the value of CV is changed for the next bit encoding, at least in part on the value of the just-encoded bit. This is why the technique refers to adaptive" contexts. The revised value of CV is used to generate a new boundary 1100'.
In Figure 190, a value of zero was encoded, and so rn_low remained unchanged but rn_high was moved to the previous boundary position. The value rn_range is redefined as the new values of rn_high rn_low. In this exarnple, this has resulted in m_range falling below its rninirnum allowable value (such as 256). When this outcome is detected, the value rn_lange is doubled, that is, shifted left by one bit, as rnany tirnes as are necessary to restore rn_range to the required range of 256 to 512. An example of this is illustrated in Figure 19D, which represents the range of Figure 190, doubled so as to comply with the required constraints. A new boundary 1100" is derived from the next value of CV and the revised rn_range.
Whenever the range has to be multiplied by two in this way, a process often called "renorrnalizing", an output bit is generated, one for each renorrnalizing stage.
In this way, the interval rn_range is successively modified and renormalized in dependence upon the adaptation of the CV values (which can be reproduced at the decoder) and the encoded bit strearn. After a series of bits has been encoded, the resulting interval and the nurnber of renorrnalizing stage uniquely defines the encoded bitstrearn. A decoder which knows such a final interval would in principle be able to reconstruct the encoded data.
However, the underlying mathematics demonstrate that it is not actually necessary to define the interval to the decoder, but just to define one position within that interval. This is the purpose of the assigned code value, which is rnaintained at the encoder and passed to the decoder (as a final part of the data stream) at the terrnination of encoding the data.
The context variable CV is defined as having 64 possible states which successively indicate different probabilities from a lower limit (such as 1%) at CV = 63 through to a 50% probability at CV = 0.
CV is changed from one bit to the next according to various known factors, which may be different depending on the block size of data to be encoded. In some instances, the state of neighbouring and previous image blocks may be taken into account.
The assigned code value is generated from a table which defines, for each possible value of CV and each possible value of bits 6 and 7 of rn_range (noting that bit 8 of rn_range is always 1 because of the constraint on the size of rn_range), a position or group of positions at which a newly encoded bit should be allocated a code value in the relevant sub-range.
Figure 20 schematically illustrates a CABAC encoder using the techniques described above.
The CV is initiated (in the case of the first CV) or modified (in the case of subsequent CV5) by a CV derivation unit 1120. A code generator 1130 divides the current rn_range according to CV and generates an assigned data code within the appropriate sub_range, using the table mentioned above. A range reset unit 1140 resets rn_range to that of the selected sub-range. If necessary, a normaliser 1150 renorrnalises the rn_range, outputting an output bit for each such renormalisation operation. As mentioned, at the end of the process, the assigned code value is also output.
In a decoder, shown schematically in Figure 21, the CV is initiated (in the case of the first CV) or modified (in the case of subsequent CVs) by a CV derivation unit 1220 which operates in the same way as the unit 1120 in the encoder. A code application unit 1230 divides the current m_range according to CV and detects in which sub-range the data code lies. A range reset unit 1240 resets m range to that of the selected sub-range. If necessary, a normaliser 1250 renormalises the rn_range in response to a received data bit.
Embodiments of the invention can provide an arithmetic coder (such as a CABAC entropy coder) that can potentially decode multiple coefficients per clock and is therefore capable of decoding even the sustained worst case (from the point of view of data amounts to be handled) of 4:4:4 data.
In summary, the technique encodes or decodes all of the required CABAC context variables (CV) for each coefficient in a single cycle using a quaternary arithmetic coding function, potentially in a single pass of the data.
The issue of speculation will be discussed; an in embodiments of the invention, with changes to the CV selection system, speculation for large blocks (16x16, 32x32) can potentially be completely removed, leaving 3 levels of speculation for the smaller block sizes (i.e. 3 possible values are prepared per coefficient and therefore the amount of logic to implement the techniques in hardware can be less than three times that of a system with no speculation.
A typical video data encoding technique, as described above, involves the following steps: 1. Determine and encode the coordinates of the first coefficient in the reverse scan order.
2. Encode significance map (sig-map) using reverse coefficient scan order, starting at the coefficient after the first coefficient.
3. Encode a magnitude is >1' map using reverse coefficient scan order, starting at the first coefficient, considering only coefficients that were significant.
4. Encode a magnitude is >2' map using reverse coefficient scan order, starting at the first coefficient, considering only coefficients that whose magnitude is >1'.
5. Encode a sign bit for all values where the sig-map is non-zero, in reverse coefficient scan order.
6. Encode an escape code (Golomb-Rice and possibly an Exponential-Golomb code) for all coefficients where the magnitude is >2' map is non-zero, in reverse coefficient scan order.
The CABAC encoding process can be involved in stages 2, 3 and 4, to encode a binary value in combination with a context variable (CV), where the CV is selected from a set using various criteria. The previous CABAC process requires multiple passes of the data, and may require 3 context variables (for the three maps) to be encoded per coefficient, as well as bypass data (sign and escape codes). Designing an encoder and decoder that can cope with the sustained worst case for 4:2:0, let alone 4:4:4 data is a challenge, making the CABAC engine a potential bottleneck in a video coder.
The present embodiments aim to encode/decode one coefficient in one step, and therefore to encode a block in one pass of the Transform Unit (TU) data. With these techniques, encoding/decoding up to 4 coefficients per clock-cycle is believed to be potentially viable, allowing the sustained worst case 4:4:4 to be supported.
In existing CABAC systems, each quantised DCT coefficient is encoded into the CABAC stream with up to 3 CVs. These 3 CVs can be thought of as probabilities of the magnitude, m, of the coefficient: P(m0) P(m=1 I m>0) P(m=2 Im>1) (the notation P(A I B) refers to the probability of outcome A given outcome B) From there, the probability of the four possible cases being encoded can be produced: P(rn=0) = P(m=0) P(rn=1) = (1-P(m0)) (P(m1 I m>0) P(rn2) = (1-P(m=0)-P(m=1)) P(m=2 I m>2) P(m>2) = (1 -P(m=Q)-P(m= 1)-P(m=2)) In the present embodiment, the probability space is split into 4 symbols, which is then represented in an 8-bit integer tractional' space corresponding to the set of code values described earlier. This is shown schematically in Figure 22, where the probability space is split (corresponding to a split amongst the set of code values) into four regions corresponding to different values of the current DCT coefficient as defined by the significance maps.
The proportion of the CABAC code value range that a symbol is allocated is proportional to the probability of a symbol; the CABAC low' part of the range is incremented by the cumulative of the allocation of ranges of the preceding' symbols.
Three 8-bit arithmetic context variables (ACVO, ACV1, ACV2) are established (where ACVO=256 x P(m0), or more generally 2 x P(m=0)) that could potentially encode a symbol.
Arithmetic context variables (ACVs) may be derived from previous ACVs and/or from the decoded data by an arithmetic process. However, context variables which are derived from previous context variables and/or decoded data by a look-up table or similar method, or by examining the probability distribution of previous data, are also envisaged as alternatives.
Arithmetic context variables are described in United Kingdom Patent Application No.1119176.4.
The encoding/decoding process is as follows. Note that >> m indicates a right bit shift by m places; <c m indicates a left bit shift by m places.
1. Form the fractional space F0,F1,F2,F3 (see below): F0=ACVO F1=(256-F0) >(ACV1) >> 8 F2=(256-F0-F1) x(ACV2)>> 8 F3=(256-FO-F1 -F2) 2. Calculate the cumulative fractional (CF) space: C FO = EQ CF1=F1+CFO CF2=F2+CF1 Note that the final fractional space can in fact be defined as "all that is left', or in other words, 1 minus the total of the other fractional spaces. Or an equivalent calculation can be used at step 3 below. The "all that is left" range can be the largest of the ranges.
3. Multiply the cumulative fractions against the current 9-bit CABAC range, to get cumulative ranges (CR): CROCFQ x CABACrange (m_range) CR1 CE1 x CABACrange CR2CF2 x CABACrange Therefore, each CV defines a respective range of code values.
4. Encode/Decode symbol: To encode, If (m=0), increase CABACI0w (m_low) by 0, set CABACrange to CR0 lf(m1), increase CABACI0w by CR0, set CABACrange to CR1 -CR0 If (m=2), increase CABACI0w by CR1, set CABACrange to CR2-CR1 If (m=3), increase CABACIow by CR2, set CABACrange to CABACrange-CR2 (that is to say, modify the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the size of the selected portion. Changing CABAC range to CRn is equivalent to multiplying CABAC_range by the corresponding fraction). Then, renormalize. That is to say, detect whether the set of code values is less than a predetermined minimum size and if so: successively increase the size of the set of code values until it has at least the predetermined minimum size; and output an encoded data bit in response to each such size-increasing operation.
To decode, If CABACvaIue c CR0, m=0, decrement CABACvaIue by 0 else if CABACvaIue <CR1, m1, decrement CABACvaIue by CR0 else if CABACvaIue < CR2, m=2, decrement CABACvaIue by CR1 else m=3, decrement CABACvaIue by CR2 In all cases, CABACrange is updated as for encoding, and renormalization occurs.
The encoding into the different fractional spaces can therefore be thought of as an example of comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; and selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value.
This arrangement is illustrated schematically in Figure 26, which also indicates the processing delays at various points in the processing. The logic flow will be apparent to the skilled person, based on context variables 1300 and fractional spaces 1310.
It should be noted that in other embodiments, the context variable CVO could be expressed as the probability of 1 rather than 0', thereby potentially reducing the delay of the critical path. Depending on implementation, this may produce/require a different bit-stream, and so corresponding changes at the decoder may be applied. To implement this, one possibility is to employ internal registers which are set to 256 minus the standard value", or the standard itself could be changed.
The cumulative ranges can be defined in an order which places a remaining portion (the CABAC_range minus the sum of the other ranges) as a largest one of the ranges.
Note that with integer arithmetic the initial fractions, Fl, F2 or F3, may be 0, and therefore this should be prevented as all possible symbols must have a space in the fractional space. Therefore the cumulative fraction of CFO is clipped to a maximum of "256-3"; the cumulative fraction of CF1 is clipped to "256-2"; the cumulative fraction of CF2 is clipped to "256-1". In other words, in embodiments of the invention, the fractions are constrained so as to have a value of at least 1 in the 2 bit fraction space.
The above technique requires multiplies on CABACrange, which would possibly impact the ability to decode multiple quaternary symbols in one clock cycle. Therefore, an adder-based system is provided, which uses as supporting data an identification of a symbol that has at least 25% of the symbol range. i.e., the first of the fractions FO, Fl, F2 and F3 that is at least 64 (in a 256-bit fraction space) is declared as the First Most Probable Symbol' (FMPS).
The processing steps then become: 1. Form the fractional space F0,F1,F2,F3 as before, except preventing 0 length symbols:
FOACVO
FlMax(1, (256-F0)x(ACV1)>> 8) lf(F1+F0>=254) F1254-F0; F21 else F2=Max(1, (256-F0-F1) x(ACV2) >> 8) If(F2+F1÷F0 >255)F2=255-F1-F0 F3=Max(1, (256-F0-F1-F2)) 2. Calculate the FMPS: If F0>=25614 FMPS=0 Else if F1>=256/4 FMPS=1 Else if F2>=25614 FMPS=2 Else FMPS=3 3. Calculate the Cumulative Fractions (CFs) and a Vector of potential Cumulative Ranges (VCRs) CFO(FMPSO?0:F0) VCRO=(CFO.[9,1 1,13,1 5])x'3 CF1 CFO+(FMFS==1?0:F1) VCR1(CF1 [9,11,13,1 5])>>3 CF2CF1 +(FMPS2?0:F2) VCR2=(CF2.[9,1 1,13,1 5])>>3 CF3CF2+(FMPS==3?0:F3) VCR3=(CF3.[9,1 1,13,1 5])>>3 Note that the vector multiplies used for the VCRs can be done with 4 adders each.
4. Select 4 cumulative ranges, one from each vector, given 2 bits of CABACrange.
For a 9-bit CABACrange system, use bits 7,6 to select (bit 8 is always 1).
5. Encode/Decode symbol To encode, If (mFPMS), increase CABACIow by CR3, set CABACrange to CABACrange-CR3 Else If (m=0), increase CABACI0w by 0, set CABACrange to CR0 Else If (m=1), increase CABACIow by CR0, set CABACrange to CR1 -CR0 Else If (m=2), increase CABACIow by CR1, set CABACrange to CR2-CR1 Else If (m3), increase CABACIow by CR2, set CABACrange to CR3-CR2 Then, renormalize.
To decode, If CABACvaIue c CR0, m0, decrement CABACvaIue by 0 else if CABACvaIue < CR1, m1, decrement CABACvaIue by CR0 else if CABACvaIue < CR2, m=2, decrement CABACvaIue by CR1 else if CABACvaIue c CR3, m=3, decrement CABACvaIue by CR2 else mFMPS, decrement CABACvaIue by CR3 In all cases, CABACrange is updated as for encoding, and renormalization occurs.
The context variables can then be modified for use in encoding a next input data value, for example to increase the size of the portion corresponding to the range in which the current data value lies. The modifying step can modify a context variable subject to predetermined maximum and minimum allowable values of the context variable.
Combining the ACVs while keeping a 9-bit CABACrange system (8-bit fractional space) can potentially reduce the accuracy of the system. For this reason, other embodiments of the invention can use an 11-bit CABACrange system (10-bit fractional space, but still with 8-bit ACV5).
Using a quaternary symbol coding algorithm (without multipliers), the proposed system 1. Reverse scan the entire block, 2. In the encoder, find the first non-zero coefficient, and encode the coordinate as in a conventional encoder; in the decoder, decode the coordinates, and check if that position has been reached.
3. For each subsequent coefficient, determine the 3 context variables that CABAC would have potentially have used to encode that coefficient.
4. Use the quaternary encoding method to encode the CABAC data.
5. Decode/encode the bypass data.
In order to cope with the sustained worst case of 4:2:0, 4:2:2 and 4:4:4, at least 1.5, 2 and 3 coefficients respectively must be decoded per pixel rate clock cycle. If multiple coefficients need to be decoded, this effectively increases the size of the logic by the same multiple: the preparation phase of the VCRs would be done in parallel; the decoding phase would be done sequentially.
However, decoding coefficient N may impact decoding coefficient N+1 (because of the way in which CV5 are modified in dependence upon previously decoded data and/or CV5), and if a system based upon these techniques was required to decode 4 coefficients in parallel, when decoding coefficient N, coefficient N+7 is being prepared: interactions between the coefficients mean that speculation on the result of coefficient N, Ni-i, N÷2, N+3, N+4, N+5, and N+6 must be taken into account when preparing coefficient N+7 for decode. With each value having 4 different outcomes, this could be impractical to implement, as it has 47 possibilities.
Therefore, a number of methods have been sought to reduce speculation, and indeed, a method to completely remove speculation for larger blocks (16x16 and 32x32) will now be described, leaving only a maximum of 3 levels of speculation for smaller blocks -ia a system where 3 different values per coefficient are prepared, and therefore only 3x the logic of the base system. A further embodiment can reduce this to two levels of speculation.
One method to reduce speculation is to defer the updating of the ACV5 until a later point, and therefore the update that an ACV undergoes does not affect any of the coefficients being decoded/prepared up until the update point. In other words, the modification takes place only after a group of m data values has been encoded, where m > 1. The ACV selection is based around a 16-coefficient group, and therefore waiting until the group of 16 is fully encoded/decoded is a practical opportunity to update the context variables; deferring the update may also have the benefit of smoothing' out the updates caused by high-frequency noise in the data.
As indicated above, a 4:2:0, 4:2:2 and 4:4:4 system needs to decode at least 1.5, 2 and 3 coefficients per cycle respectively. Consider instead decoding 2, 3 and 4 coefficients respectively for each system.
This results in a system where every 16 coefficients, a break in the processing can be enforced. Such breaks would allow the pipeline to be flushed so that the update in context variables can occur, along with other states of the context selection (such as the context sets).
For smaller blocks (8x8 and 4x4), the ACVO context variable is a function based solely upon its position in the block, and therefore not dependent on the data. With 8x8 blocks, 4 pixels in the block can update the same ACVO, but with the deferred update system, the shared use of the ACVO does not impede the decoding of any coefficients within the same group of 16.
For larger blocks, it is important to note that the system of decoding 2, 3 or 4 coefficients per clock for the 4:2:0, 4:2:2 and 4:4:4 systems, even with flushes every 16 coefficients, would also potentially result in some spare processing cycles being available. These can be used to insert pauses' into the processing so that coefficients that are "below or to the right" of the current coefficient are sufficiently old that they will not affect the current decode.
Therefore, increasing the levels of parallelism along with the "deferred update" system can potentially remove the requirement of speculation on ACVO. This is illustrated in Figure 23 for 4:2:0, Figure 24 for 4:2:2 and Figure 25 for 4:4:4, which suggest the possible clock cycles at which the coefficients can be decoded and indicates the youngest age' of the neighbours required for the ACVO context model selection.
In these three scenarios, a gap in the processing is enforced every 16 coefficients (2 clock cycles for 4:2:0; 1 clock cycle for 4:2:2 and 4:4:4), meaning that the values that are being prepared' can be ignored. In the three diagrams, the youngest age' of the neighbours is always at least 2 clock cycles, and therefore, the values being prepared will not be dependent on the values being currently decoded. i.e. the 2 clock cycle process of Figure 1 would not require speculation on ACVO for the calculation.
Note that the values highlighted in the "Youngest age" section of the figures use location based context variables, and are therefore not relevant to the neighbourhood study.
In addition, for the sustained worst case, the 4:2:0, 4:2:2 and 4:4:4 systems require 164, and 91 cycles to decode all the coefficients, and at pixel rate, the 256 coefficients would need to be completed in 256/1.5=170, 256/2=128 and 256/3=85. i.e. the 4:2:0 and 4:2:2 system can decode faster than pixel rate; the 4:4:4 system would need to have a base clock of 107% of pixel rate.
In embodiments of the invention, ACV1 is selected based upon the length of the end run of 1's in the current group of 16; the choice of ACV2 is changed each time another value whose magnitude is greater than 1 is encountered. For each group of 16 coefficients, there are only 8 valid combinations of ACV1 and ACV2.
More formally, that is to say that there is a superset of ACVs for ACV1 and a superset for ACV2 from which for any group of 16 coefficients, a subset of 5 ACVs for ACV1 and a subset of 5 ACVs for ACV2 are chosen. This selection is based upon the slice and channel type, and a function of the number of values whose magnitude >1' decoded prior to the current group of 16 coefficients.
Assume that the variable ci' counts the number of trailing magnitude l's in the current group of 16 coefficients (noting that ci is initialised to 1' and is clipped to a maximum of 4); the variable c2' counts the number of values in the group whose magnitude is >1 (where c2 is initialised to 0' and clipped to a maximum of 4). Then for each coefficient encode/decode, ACV1 = ACV seti [0] if c2!0 = ACVsetl[ci] if c2=0 ACV2 = ACVset2[c2] There are only 8 possible pairings for ACV1 and ACV2 given the two limited sized subsets. Therefore, the new ACVs are selected from a set of available combinations of values, the set being smaller than all possible combinations of values.
An alternative scheme is to use the same coefficient neighbourhood as in the significance map (so that the CVs are derived in response to neighbouring coefficients), counting the number of magnitude l's (and starting at ci =1') and magnitude is >1' (starting with c2=0') (limiting the counters to 4, and noting if c2 is non-zero after checking the neighbourhood, ci is set to 0). The neighbourhood is defined as the two coefficients to the right, the two coefficients below, and the coefficients below and to the right; if the coefficient is outside the TU, it is assumed to be 0.
The mechanism of using the same neighbourhood as the significance map (in a system in which the significance map itself forms the basis of the derivation of the modified values) therefore removes speculation of ACV1 and ACV2 for larger blocks, since the neighbouring values are sufficiently old' -which is to say that they were decoded sufficiently far in advance of the decoding of the coefficient on which the CV depends, so as to avoid speculation being required. However, note that in Figures 23-25 the top-left (low frequency) areas of the "Youngest age" indicate position-based context variables; no such rule has been applied for ACV'l and ACV2, and the three top left values use the same rule of context variable selection as the other coefficients. This increases the number of clock cycles to process the data to 166, 128 and 95 for the 3 described systems, potentially increasing the system clock rate to at least 111% of pixel rate for the 4:4:4 scenario.
For smaller blocks, a neighbourhood system does not reduce speculation, because there are not enough spare cycles available to ensure the coefficients below or to the right are sufficiently old. This would therefore leave 8 possible pairings for ACV1 and ACV2. i.e. until the decoding phase, the selection of ci and c2 would not be known, and therefore it would be necessary to prepare the VCR5 for the coefficients for all 8 combinations. This would represent a large degree of speculation in respect of these small blocks.
Therefore, for smaller blocks (i.e. 4x4 and 8x8), two methods of CV selection are described that reduce speculation to 2 levels and 3 levels, respectively (that is, a system with 2 levels of speculation would prepare 2 possible values per coefficient, requiring less than twice the amount of logic compared to a system with no speculation). These methods involve the step of modifying the context variables comprises deriving replacement values for all of the context variables in response to respective data positions relative to a currently decoded data item in the decoded data.
A new superset of ACVs is used, from which a subset is picked, based upon the same slice type and channel type scheme, and the selection of ACV1 and ACV2 is modified as follows.
Method 1 (3 x speculation): ACV1 = ACVseti{O] if c2!=0 = ACV_seti [1] if c2==0 and ci 1 or 2 = ACV seti [2] if c2==0 and ci =3 or 4 ACV2 = ACVset2[0] if c2=0 ACV2 = ACV_set2[i] if c2!=O This has 3 possible pairings, and therefore only 3 different possibilities for the fractions would need to be handled. i.e. for a 4:2:0 system decoding 2 coefficients in parallel, the amount of logic for the entropy decoder would be less than 6 times that shown in Figure 1 (i.e. 12 10-bit multipliers); for a 4:4:4 system decoding 4 coefficients in parallel, this would be 12 times that shown in Figure 26 (i.e. 24 10-bit multipliers).
Method 2 (2xspeculation): If channel is Luma, and coefficient is DC (implying that no neighbourhood check is used): ACV1 = AC V_sen [4] ACV2 = ACV_set2[4] Else: ACV1 = ACV setl [0] if c2kO = ACV_setl[i] if c2==0 ACV2 = ACVset2[O] if c2==0 ACV2 = ACVset2[1] if c2!0 This has a maximum of 2 possible pairings, and therefore 2 different possibilities for the fractions would need to be handled. Compared with Method 1, the entropy logic requirements for the decoder shown in Figure 26 for 4:2:0 and 4:4:4 systems are reduced to 4 and 8 times respectively. Note that the neighbourhood being checked could be a reduced one such as one using values below, right and below right relative to the position of the coefficient being decoded.
Note that the new superset of ACVs are currently unoptimized, and are initialised to the same values as those corresponding to the first subset (uiCtxsetO) of the larger blocks for each slice type and channel combination; in addition, the ACV supersets for the larger blocks also have not been optimized from those in HM4.0, even though they are now being used with a different selection method.
The Combined Context Variable system describes the quaternary process being used on combined context variables for coefficient data. However, the system could be extended to code CABAC header data.
If the bottleneck of the entropy coder can be removed, then the worst case bit-stream is potentially decodable by any decoder, and techniques such as wave-front processing could actually be applied within the slice, thereby increasing the parallelism for the subsequent processes.

Claims (1)

  1. <claim-text>CLAIMS1. A data encoding method for encoding successive input data values, the method comprising the steps of: comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; modifying the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the current size of the selected portion; and detecting whether the set of code values is less than a predetermined minimum size and if so: successively increasing the size of the set of code values until it has at least the predetermined minimum size; and outputting an encoded data bit in response to each such size-increasing operation.</claim-text> <claim-text>2. A method according to claim 1, in which each context variable defines a respective fraction ot the set of code values.</claim-text> <claim-text>3. A method according to claim 2, comprising n-i context variables each defining the size of n-i of the portions, the remaining portion comprising that part of the set of code values not occupied by the n-i portions defined by the context variables.</claim-text> <claim-text>4. A method according to claim 3, in which the remaining portion is the portion corresponding to the largest proportion of the set of code values.</claim-text> <claim-text>5. A method according to claim 2 or claim 3, in which modifying the size of the set of code values comprises multiplying the current size of the set of code values by the fraction corresponding to the range in which the current data value lies.</claim-text> <claim-text>6. A method according to any one of the preceding claims, comprising modifying the context variables, for use in respect of a next input data bit.</claim-text> <claim-text>7. A method according to claim 6, comprising modifying at least one of the context variables, for use in respect of a next data value, so as to increase the size of the portion corresponding to the range in which the current data value lies.</claim-text> <claim-text>8. A method according to any one of claims 1 to 7, comprising modifying at least one of the context variables, for use in respect of a next data value, in dependence upon previously encoded data values.</claim-text> <claim-text>9. A method according to claim 7 or claim 8, in which the modifying step modifies the context variable subject to predetermined maximum and minimum allowable values of the context variable.</claim-text> <claim-text>10. A method according to any one of claims 6 to 9, comprising modifying the context variables only after a group of m data values has been encoded, where m is greater than one.</claim-text> <claim-text>11. A method according to claim 10, in which mis 16.</claim-text> <claim-text>12. A method according to any one of claims 6 to 11, in which the step of modifying the context variables comprises selecting a set of context variables from a set of available combinations of context variables, the set being smaller than all combinations of context variables values.</claim-text> <claim-text>13. A method according to any one of claims 6 to 12, in which: the input data values comprise a significance map indicating the presence, in an array of frequency separated image data, of non-zero data values; and the step of modifying the context variables comprises deriving replacement values for at least one of the context variables from the significance map.</claim-text> <claim-text>14. A method according to claim 13, in which: the input data values comprise data indicating the value of data identified by the significance map to be non-zero; and the step of modifying the context variables comprises deriving replacement values for at least one of the context variables in response to decoded data items at respective data positions relative to a currently decoded data item in the decoded data, the data positions being the same as or a subset of those used in the derivation of replacement context variables from the significance map.</claim-text> <claim-text>15. A method according to claim 12, in which: the input data values comprise a significance map indicating the presence, in an array of frequency separated image data, of non-zero data values and data indicating the value of data identified by the significance map to be non-zero; and the step of modifying the context variables comprises deriving replacement values for all of the context variables in response to respective data positions relative to a currently decoded data item in the decoded data.</claim-text> <claim-text>16. A method according to claim 2, in which each context variable comprises an n-bit digital value which is divided by 2 to obtain the respective fraction.</claim-text> <claim-text>17. A video coding method comprising the steps of: generating frequency domain coefficients dependent upon respective portions of an input video signal and ordering the coefficients for encoding according to an encoding order; and entropy encoding the ordered coefficients by applying the method of any one of the preceding claims.</claim-text> <claim-text>18. Video data encoded by the encoding method of claim 17.</claim-text> <claim-text>19. A data carrier storing video data according to claim 18.</claim-text> <claim-text>20. A data decoding method for decoding successive output data values, the method comprising the steps of: defining n complementary portions of a current set of code values, where n is three or more, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables, each portion corresponding to a respective one of a set of complementary ranges of output data values bounded by an ordered set of n-i different threshold values; comparing a test value with the n complementary portions so as to detect that portion the test value lies, and selecting an output data value in dependence upon the range associated with the detected portion; modifying the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the current size of the detected portion; and modifying the test value in dependence upon the detected portion.</claim-text> <claim-text>21. A method according to claim 20, comprising: increasing the size of the set of code words by a predetermined size-increasing operation in response to a received encoded data bit specifying a size-increasing operation.</claim-text> <claim-text>22. A method according to claim 20 or claim 21, in which the step of modifying the test value comprises modifying the test value by an amount dependent upon the size of the detected portion and the size of zero or more other portions.</claim-text> <claim-text>23. A method according to claim 22, in which the zero or more other portions comprise those portions for which the corresponding ranges of output data values represent numerically smaller output data values than the range corresponding to the detected portion.</claim-text> <claim-text>24. A video decoding method comprising the step of entropy decoding encoded video data by applying the method of any one of claims 20 to 23.</claim-text> <claim-text>25. Data encoding apparatus for encoding successive input data values, the apparatus comprising: means for comparing an input data value with an ordered set of n-i different threshold values, where n is three or more, to generate range data defining that one of the n complementary ranges bounded by the threshold values in which the current data value lies; means for selecting one or more of n complementary portions of a set of code values in respect of the input data value according to the range data corresponding to that input data value, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables associated with that input data value; means for modifying the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the current size of the selected portion; and means for detecting whether the set of code values is less than a predetermined minimum size and if so: successively increasing the size of the set of code values until it has at least the predetermined minimum size; and outputting an encoded data bit in response to each such size-increasing operation.</claim-text> <claim-text>26. Data decoding apparatus for decoding successive output data values, the apparatus comprising: means for defining n complementary portions of a current set of code values, where n is three or more, the sizes of the n portions relative to the set of code values being defined by at least n-i context variables, each portion corresponding to a respective one of a set of complementary ranges of output data values bounded by an ordered set of n-i different threshold values; means for comparing a test value with the n complementary portions so as to detect that portion the test value lies, and selecting an output data value in dependence upon the range associated with the detected portion; means for modifying the size of the set of code values, for use in respect of a next input data word, in dependence upon the current size of the set of code values and the current size of the detected portion; and means for modifying the test value in dependence upon the detected portion.</claim-text> <claim-text>27. Video coding apparatus comprising: a frequency domain transformer for generating frequency domain coefficients dependent upon respective portions of an input video signal and ordering the coefficients for encoding according to an encoding order; and an entropy encoder for encoding the ordered coefficients, the entropy encoder comprising apparatus according to claim 25.</claim-text> <claim-text>28. Video decoding apparatus having an entropy decoder comprising apparatus according to claim 26.</claim-text> <claim-text>29. Computer software which, when executed by a computer, causes the computer to carry out the method of any one of claims 1 to 17 and 20 to 24.</claim-text> <claim-text>30. A non-transitory storage medium on which computer software according to claim 29 is stored.</claim-text> <claim-text>31. Video data capture, transmission and/or storage apparatus comprising apparatus according to any one of claims 25 to 28.</claim-text>
GB1119710.0A 2011-11-07 2011-11-15 Context adaptive (CABAC) data encoding and decoding Withdrawn GB2496210A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/GB2012/052760 WO2013068733A1 (en) 2011-11-07 2012-11-06 Context adaptive data encoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB201119175A GB201119175D0 (en) 2011-11-07 2011-11-07 Context adaptive data encoding

Publications (2)

Publication Number Publication Date
GB201119710D0 GB201119710D0 (en) 2011-12-28
GB2496210A true GB2496210A (en) 2013-05-08

Family

ID=45421368

Family Applications (2)

Application Number Title Priority Date Filing Date
GB201119175A Ceased GB201119175D0 (en) 2011-11-07 2011-11-07 Context adaptive data encoding
GB1119710.0A Withdrawn GB2496210A (en) 2011-11-07 2011-11-15 Context adaptive (CABAC) data encoding and decoding

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GB201119175A Ceased GB201119175D0 (en) 2011-11-07 2011-11-07 Context adaptive data encoding

Country Status (2)

Country Link
GB (2) GB201119175D0 (en)
WO (1) WO2013068733A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2513110A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
WO2020092788A3 (en) * 2018-11-01 2020-12-30 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10922026B2 (en) 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2516422A (en) * 2013-07-09 2015-01-28 Sony Corp Data encoding and decoding
GB2585042A (en) * 2019-06-25 2020-12-30 Sony Corp Image data encoding and decoding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2277315A1 (en) * 2008-04-11 2011-01-26 QUALCOMM Incorporated Rate-distortion quantization for context-adaptive variable length coding (cavlc)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE322901B (en) 1964-11-30 1970-04-20 Europ Plastic Machinery Mfg Ac

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2277315A1 (en) * 2008-04-11 2011-01-26 QUALCOMM Incorporated Rate-distortion quantization for context-adaptive variable length coding (cavlc)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2513110A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
US11290720B2 (en) 2013-04-08 2022-03-29 Sony Group Corporation Data encoding and decoding
US11671599B2 (en) 2013-04-08 2023-06-06 Sony Group Corporation Data encoding and decoding
WO2020092788A3 (en) * 2018-11-01 2020-12-30 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding
US10922026B2 (en) 2018-11-01 2021-02-16 Fungible, Inc. Data processing unit having hardware-based range encoding and decoding

Also Published As

Publication number Publication date
WO2013068733A1 (en) 2013-05-16
GB201119175D0 (en) 2011-12-21
GB201119710D0 (en) 2011-12-28

Similar Documents

Publication Publication Date Title
US11671599B2 (en) Data encoding and decoding
JP6400092B2 (en) Data encoding and decoding
US10893273B2 (en) Data encoding and decoding
JP6134055B2 (en) Data encoding and decoding
US20130128958A1 (en) Video data encoding and decoding
US9544599B2 (en) Context adaptive data encoding
US20130121423A1 (en) Video data encoding and decoding
US20140286417A1 (en) Data encoding and decoding
GB2496210A (en) Context adaptive (CABAC) data encoding and decoding
WO2013068732A1 (en) Context adaptive data encoding

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)