IP Library Granted Patent US 9,955,163
Granted Patent B2
US 9,955,163 · App. 13/919,875 · Granted Apr 24, 2018

Two pass quantization of video data

Inventor: Yunqing Wang (Palo Alto, CA)
Assignee: GOOGLE LLC
H04N19/124H04N19/132H04N19/136H04N19/176H04N19/194H04N19/865
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,955,163
App. No.
13/919,875
Granted
Apr 24, 2018
Kind
B2
Abstract

Disclosed is a method for encoding a block of video. The method includes identifying, by a processor, a transformed video data block including a plurality of transformed video data, identifying a first portion of the plurality of transformed video data, identifying a second portion of the plurality of transformed video data, determining a plurality of quantized values based on the second portion of the plurality of transformed video data, and generating a quantization coefficient data block including a first portion of a plurality of quantized data values corresponding to the first portion of the plurality of transformed video data and set to a default value and including a second portion of the plurality of quantized data values corresponding to the second portion of the plurality of transformed video data and set to the plurality of quantized values.

Claims (64)

1. A method for encoding a block of video, the method comprising:

storing a first plurality of values based on a first quantization parameter in a first table;

storing a second plurality of values based on a second quantization parameter in a second table;

identifying, by a processor, a transformed video data block including a plurality of transformed video data;

during a first scan, by the processor, of the transformed video data block:

identifying a first portion of the plurality of transformed video data, the first portion of the plurality of transformed video data having transformation coefficients that are at or below a compression quality level based on one of the first plurality of values stored in the first table;

identifying a second portion of the plurality of transformed video data the second portion of the plurality of transformed video data having transformation coefficients that are above the compression quality level based on one of the first plurality of values stored in the first table; and

stopping the first scan at a data position of the plurality of transformed video data having a transform coefficient value above the compression quality level;

during a second scan, by the processor, of the transformed video data block:

generating a quantization coefficient data block including a plurality of quantized data values each of the plurality of quantized data values being set to a default value;

while scanning in a direction of the second scan, changing a portion of the plurality of quantized data values in the quantization coefficient data block to a quantized value based on the second portion of the plurality of transformed video data and a value stored in the second table scaled based on a number of continuous zero quantized values since a last non-zero quantized value, each position in the quantization coefficient data block corresponding to the second portion of the plurality of transformed video data; and

stopping the second scan at the data position of the plurality of transformed video data having the transform coefficient value above the compression quality level.

2. The method of claim 1 , wherein

the first scan is performed in a reverse scan order, the reverse scan order being sequentially opposite to a quantization scan order; and

the identifying the first portion of the plurality of transformed video data includes:

upon determining at least one of the plurality of transformed video data is above the compression quality level based on one of the first plurality of values stored in the first table, storing a position associated with the at least one of the plurality of transformed video data that is above the compression quality level based on one of the first plurality of values stored in the first table and terminating processing of the first scan.

3. The method of claim 1 , wherein

the first scan is performed in a reverse scan order, the reverse scan order being sequentially opposite to a quantization scan order; and

upon determining at least one of the plurality of transformed video data is above the compression quality level based on one of the first plurality of values stored in the first table, storing a position associated with the at least one of the plurality of transformed video data that is above the compression quality level based on one of the first plurality of values stored in the first table and terminating processing of the first scan; and

identifying the second portion of the plurality of transformed video data as including an unprocessed, during the first scan, portion of the plurality of transformed video data.

4. The method of claim 1 , wherein the first table is a pre-scan ZBIN table.

5. The method of claim 1 , wherein the plurality of transformed video data are video transform coefficients.

6. The method of claim 1 , wherein generating the quantization coefficient data block includes:

determining a last scan position in a quantization scan order, the last scan position being determined during the first scan of the transformed video data block, the last scan position identifying a position, in the transformed video data block, between the first portion of the plurality of transformed video data and the second portion of the plurality of transformed video data;

processing the plurality of transformed video data in the quantization scan order;

and

terminating the processing at the last scan position.

7. The method of claim 1 , wherein generating the quantization coefficient data block includes;

reading a buffer including positions of the quantization coefficient data block and values to be quantized;

quantizing each of the values to be quantized; and

setting the quantized value to one of the plurality of quantized data values based on a position of the quantization coefficient data block and the second plurality of values stored in the second table.

8. The method of claim 1 , wherein

the first quantization parameter is based on a target video quality and a target compression level.

9. The method of claim 1 , wherein

the second quantization parameter is based on a target video quality, a target compression level, and a target bandwidth for transmission.

10. A method for encoding a block of video, the method comprising:

storing a first plurality of values based on a first quantization parameter in a first table;

storing a second plurality of values based on a second quantization parameter in a second table;

during a first scan, by a processor, of a transformed video data block:

processing, by the processor, in a reverse scan order, each of a plurality of transformed video data defining a transformed video data block, the reverse scan order being opposite a quantization scan order;

identifying a position of a data value from the plurality of transformed video data that is greater than a magnitude of a variable based on one of the first plurality of values stored in the first table, the magnitude of the variable being based on a compression quality level;

after the identifying of the position of the data value, stopping the first scan;

during a second scan, by the processor, of the transformed video data block:

generating a quantization coefficient data block including a plurality of quantized data values each of the plurality of quantized data values being set to a default value;

while processing in the quantization scan order, set a portion of the plurality of quantized data values in the quantization coefficient data block to a quantized value based on a portion of the plurality of transformed video data and a value stored in the second table scaled based on a number of continuous zero quantized values since a last non-zero quantized value, each position in the quantization coefficient data block corresponding to the portion of the plurality of transformed video data; and

while processing in the quantization scan order, terminating the processing in the quantization scan order at the position of the data value and stopping the second scan.

11. The method of claim 10 , wherein the plurality of transformed video data are video transform coefficients.

12. A method for encoding a block of video, the method comprising:

storing a first plurality of values based on a first quantization parameter in a first table;

storing a second plurality of values based on a second quantization parameter in a second table;

during a first scan, by a processor, of a transformed video data block:

processing, by the processor, in a scan order, each of a plurality of transformed video data defining a transformed video data block;

storing a data value pair including a first value indicating a scan order position and a second value associated with a video data of the plurality of transformed video data at the scan order position to a memory upon determining the second value is greater than a magnitude of a variable based on one of the first plurality of values stored in the first table, the magnitude of the variable being based on a compression quality level; and

stopping the first scan at a data position of the plurality of transformed video data having a transform coefficient value above the compression quality level; and

during a second scan, by the processor, of the transformed video data block:

generating a quantization coefficient data block including a plurality of quantized data values each of the plurality of quantized data values being set to a default value;

processing each of the data value pairs;

while processing each of the data value pairs, set a portion of the plurality of quantized data values in the quantization coefficient data block to a quantized value based on a portion of the plurality of transformed video data and a value stored in the second table scaled based on a number of continuous zero quantized values since a last non-zero quantized value, each position in the quantization coefficient data block corresponding to the portion of the plurality of transformed video data; and

while processing each of the data value pairs, stopping the second scan at the data position of the plurality of transformed video data having a transform coefficient value above the compression quality level.

13. The method of claim 12 , wherein

setting the one of the plurality of quantized data values includes, for each of the data value pairs, storing the quantized value at a position in the quantization coefficient data block based on the first value.

14. The method of claim 12 , wherein

setting the data value in the quantization coefficient data block includes, for each of the data value pairs, replacing the default value at a position in the quantization coefficient data block based on the first value with the quantized value.

15. The method of claim 12 , wherein the second value is a video transform coefficient.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2013
From: WANG, YUNQING
To: GOOGLE INC.
Reel/Frame 031529/0480 →
Continuity (1)
Related Publication 20150201190A1 · Jul 16, 2015