Fast macroblock delta QP decision
AssigneeQUALCOMM Incorporated
InventorsYan Ye, Marta Karczewicz, Peisong Chen
Life of this patent
Estimating the term…
Abstract
A system and method for encoding multimedia video is described. As video is encoded a quantization parameter is selected for each macroblock. As described herein, the quantization parameter for each macroblock may be selected by limiting the universe of all possible quantization parameters to a particular range of possible quantization parameter values. This increases the speed of video encoding by reducing the number of quantization parameters that are tested for each video macroblock.
Claims47
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a P-slice;
- and
- a processor in communication with the storage, the processor configured to:
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter in the range which results in an optimal quantization of the macroblock;
- and
- encode the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- means for receiving a video frame comprising a macroblock for quantization, wherein the received macroblock comprises a macroblock of a P-slice;
- means for determining quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- means for determining an average of the quantization parameters for the neighboring macroblocks;
- means for selecting a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- means for selecting a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- means for determining a quantization parameter in the range which results in an optimal quantization of the macroblock;
- and
- means for encoding the macroblock using the determined quantization parameter.
A method for encoding video, comprising the steps of:
- receiving a video frame comprising a macroblock for quantization, wherein the received macroblock comprises a macroblock of a P-slice;
- determining quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determining an average of the quantization parameters for the neighboring macroblocks;
- selecting a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- selecting a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determining a quantization parameter in the range which results in a lowest distortion value for the macroblock;
- and
- encoding the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a P-slice;
- and
- a processor in communication with the storage, the processor configured to:
- cache prior motion searches;
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter which results in an optimal quantization of the macroblock, based at least in part on at least one of the cached prior motion searches;
- and
- encode the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a P-slice;
- and
- a processor in communication with the storage, the processor configured to:
- cache intra mode decision results;
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter which results in an optimal quantization of the macroblock, based at least in part on at least one of the cached intra mode decision results;
- and
- encode the macroblock using the determined quantization parameter.
A non-transitory computer readable storage medium comprising a computer readable program code adapted to be executed to perform a method comprising:
- receiving a video frame comprising a macroblock for quantization, wherein the received macroblock comprises a macroblock of a P-slice;
- determining quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determining an average of the quantization parameters for the neighboring macroblocks;
- selecting a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- selecting a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determining a quantization parameter in the range which results in a lowest distortion value for the macroblock;
- and
- encoding the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a B-slice;
- and
- a processor in communication with the storage, the processor configured to:
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−1, QPpred+2], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter in the range which results in an optimal quantization of the macroblock;
- and
- encode the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- means for receiving a video frame comprising a macroblock for quantization, wherein the received macroblock comprises a macroblock of a B-slice;
- means for determining quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- means for determining an average of the quantization parameters for the neighboring macroblocks;
- means for selecting a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- means for selecting a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−1, QPpred+2], wherein QPpred is the value of the predicted quantization parameter;
- means for determining a quantization parameter in the range which results in an optimal quantization of the macroblock;
- and
- means for encoding the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a B-slice;
- and
- a processor in communication with the storage, the processor configured to:
- cache prior motion searches;
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter which results in an optimal quantization of the macroblock, based at least in part on at least one of the cached prior motion searches;
- and
- encode the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a B-slice;
- and
- a processor in communication with the storage, the processor configured to:
- cache prior motion searches;
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−2, QPpred+1], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter which results in an optimal quantization of the macroblock, based at least in part on at least one of the cached intra mode decision results;
- and
- encode the macroblock using the determined quantization parameter.
A system for encoding video, comprising:
- a storage containing a video frame comprising a macroblock, wherein the macroblock comprises a macroblock of a B-slice;
- and
- a processor in communication with the storage, the processor configured to:
- cache intra mode decision results;
- determine quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determine an average of the quantization parameters for the neighboring macroblocks;
- select a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- select a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−1, QPpred+2], wherein QPpred is the value of the predicted quantization parameter;
- determine a quantization parameter which results in an optimal quantization of the macroblock, based at least in part on at least one of the cached intra mode decision results;
- and
- encode the macroblock using the determined quantization parameter.
A non-transitory computer readable storage medium comprising a computer readable program code adapted to be executed to perform a method comprising:
- receiving a video frame comprising a macroblock for quantization, wherein the received macroblock comprises a macroblock of a B-slice;
- determining quantization parameters for a plurality of neighboring macroblocks of the macroblock in the same video frame as the macroblock;
- determining an average of the quantization parameters for the neighboring macroblocks;
- selecting a predicted quantization parameter based on the average of the quantization parameters for the neighboring macroblocks;
- selecting a range of quantization parameters for quantizing the macroblock, wherein the range is a subset of possible quantization parameters and the range is based on the value of the predicted quantization parameter, wherein the range of quantization parameters comprises:
- [QPpred−1, QPpred+2], wherein QPpred is the value of the predicted quantization parameter;
- determining a quantization parameter in the range which results in a lowest distortion value for the macroblock;
- and
- encoding the macroblock using the determined quantization parameter.
Dependencies are inferred from the claim text.