Abstract:
This disclosure describes techniques for entropy coding bins representing video data symbols with reduced bottlenecks in the entropy coding process. The techniques of this disclosure enable an entropy coding device to perform entropy coding of bins grouped into bin subsets from across different bin groups, e.g., context groups or probability groups, using variable length codewords. In one example, the bins may be assigned to context groups with no context dependencies between the context groups. In another example, the bins may be assigned to probability groups associated with different intervals of probability states. The bins may be grouped into the bin subsets according to determined formations of the bin subsets. In this way, the entropy coding device may reduce an amount of bin and codeword buffering by efficiently forming the bin subsets and designing variable length codewords for each of the bin subsets.
Abstract:
In an example, aspects of this disclosure relate to a method for decoding transform coefficients in a video decoding process that includes decoding a one-dimensional array of transform coefficients, and performing a scan on the one-dimensional array of transform coefficients according to a sub-block scan order and a coefficient scan order to produce a block of transform coefficients, where the sub-block scan order comprises an order in which each sub-block of a plurality of sub-blocks within the block is scanned, and where the coefficient scan order comprises an order in which the transform coefficients corresponding to each sub-block of the plurality of sub-blocks are scanned.
Abstract:
In one example, an apparatus includes a video encoder configured to partition a block of video data into a first partition and a second partition using a geometric motion partition line, calculate a slope value and a y-intercept value of the geometric motion partition line, wherein the slope value and the y-intercept value comprise integer values, calculate a mask indicative of pixels of the block in the first partition and pixels of the block in the second partition, encode the first partition and the second partition based on the mask, and output the encoded first partition, the encoded second partition, the slope value, and the y-intercept value. This may allow for a fixed point implementation. A video decoder may receive the slope and y-intercept values to calculate the mask and decode the block based on the mask.
Abstract:
This disclosure describes techniques for adding offset to predictive video blocks during video coding. In one example, a method of encoding a video block includes interpolating a first block of predictive values based on a first reference video unit within a first list of reference data, and a second block of predictive values based on a second reference video unit within a second list of reference data, calculating, for sub-integer pixel positions, a first offset value based on the first block and the current video block, and a second offset value based on the first offset value and the second block, determining a final block of offset values based on the first block of predictive values, the second block of predictive values, the first offset values, and the second offset values, and encoding the current video block based on the final block of offset values.
Abstract:
This disclosure describes techniques for generating depth maps for video units, such as video frames or slices video frames. The techniques may be performed by a video encoder in order to convert two-dimensional (2D) video to three-dimensional (3D) video. The techniques may alternatively be performed by a video decoder in order to convert received 2D video to 3D video. The techniques may use a combination of motion and color considerations in the depth map generation process.
Abstract:
In general, techniques are described for implementing a 16-point inverse discrete cosine transform (IDCT) that is capable of applying multiple IDCTs of different sizes. For example, an apparatus comprising a 16-point inverse discrete cosine transform of type II (IDCT-II) unit may implement these techniques. The 16-point IDCT-II unit performs these IDCTs-II of different sizes to transform data from a spatial to a frequency domain. The 16-point IDCT-II unit includes an 8-point IDCT-II unit that performs one of the IDCTs-II of size 8 and a first 4-point IDCT-II unit that performs one of the IDCTs-II of size 4. The 8-point IDCT-II unit includes the first 4-point DCT-II unit. The 16-point IDCT-II unit also comprises an inverse 8-point DCT-IV unit that includes a second 4-point IDCT-II unit and a third 4-point IDCT-II unit. Each of the second and third 4-point IDCT-II units performs one of the IDCTs-II of size 4.
Abstract:
Techniques are described for encoding and decoding digital video data using macroblocks that are larger than the macroblocks prescribed by conventional video encoding and decoding standards. For example, the techniques include encoding and decoding a video stream using macroblocks comprising greater than 16x16 pixels. In one example, an apparatus includes a video encoder configured to encode a coded unit comprising a plurality of video blocks, wherein at least one of the plurality of video blocks comprises a size of more than 16x16 pixels and to generate syntax information for the coded unit that includes a maximum size value, wherein the maximum size value indicates a size of a largest one of the plurality of video blocks in the coded unit. The syntax information may also include a minimum size value. In this manner, the encoder may indicate to a decoder the proper syntax decoder to apply to the coded unit.
Abstract:
Techniques are described for encoding and decoding digital video data using macroblocks that are larger than the macroblocks prescribed by conventional video encoding and decoding standards. For example, the techniques include encoding and decoding a video stream using macroblocks comprising greater than 16x16 pixels, for example, 64x64 pixels. In one example, an apparatus includes a video encoder configured to encode a video block having a size of more than 16x16 pixels, generate block-type syntax information that indicates the size of the block, and generate a coded block pattern value for the encoded block, wherein the coded block pattern value indicates whether the encoded block includes at least one non-zero coefficient. The encoder may set the coded block pattern value to zero when the encoded block does not include at least one non-zero coefficient or set the coded block pattern value to one when the encoded block includes a non-zero coefficient.
Abstract:
In a video processing system, a method and system for applying transforms larger than 8x8 and non-rectangular transforms, and generating transform size syntax elements indicative of the transforms for video decoding are provided. The transform size syntax element may be generated by an encoder based on a prediction block size of a video block and the contents of the video block. Further, the transform size syntax element may be generated according to a set of rules to select from 4x4, 8x8, and larger transform sizes during an encoding process. A decoder may perform an inverse transform based on the transform size syntax element and the rules used by the encoder. The transform size syntax element may be transmitted to the decoder as part of the encoded video bitstream.
Abstract:
This disclosure describes techniques for generating a layered encoded bitstream structure that exploits correlation in header information among video blocks of a coded unit of video data. A video encoder configured to operate in accordance with the techniques of this disclosure separates header information of the video blocks of a slice (or other coded unit) from the residual information of the video blocks of the slice. The video encoder run length encodes the header information of the video blocks to better exploit the correlation of the header information among the blocks of the slice. After encoding the header information of the blocks of the slice, the video encoder encodes the residual information for each of the blocks of the slice. The video encoder transmits the encoded header information as a first sequence of bits and transmits the encoded residual information as second sequence of bits.