System and methods for fixed-point approximations in display stream compression (DSC)
AssigneeQUALCOMM Incorporated
InventorsNatan Haim Jacobson, Vijayaraghavan Thirumalai, Ike Ikizyan, Rajan Laxman Joshi
Life of this patent
Estimating the term…
Abstract
Provided are systems and methods for used fixed-point instead of floating point techniques in order to calculate various parameters for coding video data, including target rate, QP adjustment, buffer fullness, a Lagrangian parameters for a bitrate, and/or a Lagrangian parameter for the fullness of the buffer. By determining one or more of the parameters using fixed-point, hardware implementation costs may be decreased.
Claims29
An apparatus for coding video data, comprising:
- a memory for storing the video data, the memory including a buffer;
- and
- a hardware processor operationally coupled to the memory and configured to:
- determine and store a scaling parameter based upon a total number of pixels within a slice of video data;
- determine and store a data structure associating a plurality of input values with their reciprocal values;
- receive the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- determine a threshold value based upon the stored scaling parameter;
- for a block of the slice to be coded, in response to a determination that a number of remaining pixels in the slice is less than the threshold value, update the scaling parameter and determine an updated threshold value based upon the scaling factor;
- and
- perform one or more fixed-point approximation operations to determine a target rate for the block, based upon a reciprocal value associated with the number of remaining pixels scaled based upon the scaling factor, wherein the reciprocal value is determined using the stored data structure.
A computer implemented method for determining target rates for coding blocks of video data, comprising:
- determining and storing a scaling parameter based upon a total number of pixels within a slice of video data;
- determining and storing a data structure associating a plurality of input values with their reciprocal values;
- receiving the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- determining a threshold value based upon the stored scaling parameter;
- for a block of the slice to be coded, in response to a determination that a number of remaining pixels in the slice is less than the threshold value, updating the scaling parameter and determining an updated threshold value based upon the scaling factor;
- and
- performing one or more fixed-point approximation operations to determine a target rate for the block, based upon a reciprocal value associated with the number of remaining pixels scaled based upon the scaling factor, wherein the reciprocal value is determined using the stored data structure.
An apparatus comprising:
- means for determining and storing a scaling parameter based upon a total number of pixels within a slice of video data;
- means for determining and storing a data structure associating a plurality of input values with their reciprocal values;
- means for receiving the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- means for determining a threshold value based upon the stored scaling parameter;
- for a block of the slice to be coded, in response to a determination that a number of remaining pixels in the slice is less than the threshold value, means for updating the scaling parameter and determining an updated threshold value based upon the scaling factor;
- and
- means for performing one or more fixed-point approximation operations to determine a target rate for the block, based upon a reciprocal value associated with the number of remaining pixels scaled based upon the scaling factor, wherein the reciprocal value is determined using the stored data structure.
A non-transitory computer readable storage medium having stored thereon video data relating to a slice of an image, the slice comprising one or more blocks, wherein the storage medium further has stored thereon instructions that, when executed, cause a processor of a device to:
- determine and store a scaling parameter based upon a total number of pixels within a slice of video data;
- determine and store a data structure associating a plurality of input values with their reciprocal values;
- receive the video data to be coded, the video data comprising at least one slice;
- determine a threshold value based upon the stored scaling parameter;
- for a block of the slice to be coded, in response to a determination that a number of remaining pixels in the slice is less than the threshold value, update the scaling parameter and determine an updated threshold value based upon the scaling factor;
- and
- perform one or more fixed-point approximation operations to determine a target rate for the block, based upon a reciprocal value associated with the number of remaining pixels scaled based upon the scaling factor, wherein the reciprocal value is determined using the stored data structure.
An apparatus for coding video data, comprising:
- a memory for storing the video data, the memory including a buffer;
- and
- a hardware processor operationally coupled to the memory and configured to:
- determine and store a first parameter value based upon a reciprocal of a maximum buffer size;
- receive the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- for a block of the slice to be coded, scale the first parameter based upon a first value indicating a number of bits used to represent buffer fullness, and a second value indicating precision for which to calculate buffer fullness;
- and
- perform one or more fixed-point approximation operations to determine a buffer fullness value for the block, based upon the scaled first parameter, a current size of the buffer, a buffer offset value based upon a position of the block within the slice, and the second value indicating precision for which to calculate buffer fullness.
An apparatus for coding video data, comprising:
- a memory for storing the video data, the memory including a buffer;
- and
- a hardware processor operationally coupled to the memory and configured to:
- determine and store a data structure associating buffer fullness values with quantization parameter (QP) adjustment values;
- receive the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- for a block of the slice to be coded, determine whether the block contains a transition between a complex region and a flat region, wherein complex regions have a higher complexity in comparison to flat regions;
- in response to a determination that the block contains a transition, shift a buffer fullness value based upon a number of bits used to code the buffer fullness value and a number of bits to be used to code a QP adjustment value;
- perform one or more fixed-point approximation operations to determine a QP adjustment value for the block, based upon the stored data structure and the shifted buffer fullness value;
- and
- set a QP of the block to the determined QP adjustment value.
An apparatus for coding video data, comprising:
- a memory for storing the video data;
- and
- a hardware processor operationally coupled to the memory and configured to:
- determine and store a first scaling parameter based upon a maximum number of bits that can be used to code a block of video data;
- determine and store a data structure associating numbers of bits used to code blocks of video data with Lagrangian parameters for bitrate;
- receive the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- for a block of the slice to be coded, perform one or more fixed-point approximation operations determine a Lagrangian for a bitrate of the block using the data structure, based upon a number of bits to code the block adjusted by the first scaling parameter.
An apparatus for coding video data, comprising:
- a memory for storing the video data, the memory including a buffer;
- and
- a hardware processor operationally coupled to the memory and configured to:
- determine and store a data structure associating buffer fullness values with Lagrangian values for buffer fullness values;
- receive the video data to be coded, the video data comprising at least one slice divided into a plurality of blocks;
- for a block of the slice to be coded, scale a calculated buffer fullness value of the block based upon a first parameter indicating a number of bits used to code the buffer fullness value and a second parameter indicating a number of bits used to code an index of the data structure;
- and
- perform one or more fixed-point approximation operations to determine a Lagrangian value for the buffer fullness value using the stored data structure and the scaled buffer fullness value.
Dependencies are inferred from the claim text.