IP Library Granted Patent US 9,167,253
Granted Patent B2
US 9,167,253 · App. 13/534,306 · Granted Oct 20, 2015

Derivation of the position in scan order of the last significant transform coefficient in video coding

Inventors: Joel Sole Rojals (La Jolla, CA); Rajan Laxman Joshi (San Diego, CA); Marta Karczewicz (San Diego, CA)
Assignee: QUALCOMM Incorporated
H04N19/13H04N19/129H04N19/196H04N19/44H04N19/463H04N19/91
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,167,253
App. No.
13/534,306
Granted
Oct 20, 2015
Kind
B2
Abstract

A video decoder converts a block-based LSC indicator into a scan-based LSC indicator. The block-based LSC indicator indicates coordinates of a last significant coefficient of a block of transform coefficients according to a scanning order. The scan-based LSC indicator indicates an ordinal position of the LSC according to the scanning order. The video decoder may decode, based on the scan-based LSC indicator, a significance map for the block.

Claims (100)

1. A method for decoding video data, the method comprising:

receiving, by an electronic device, a video data bitstream that includes data that represent a block-based last significant coefficient (LSC) indicator;

parsing, by the electronic device, the block-based LSC indicator from the received video data bitstream;

deriving, by the electronic device, a scan-based LSC indicator from the block-based LSC indicator, the block-based LSC indicator indicating coordinates of a last significant coefficient of a block of transform coefficients according to a sub-block scanning order, the block of transform coefficients partitioned into a plurality of sub-blocks, the scan-based LSC indicator indicating an ordinal position of the LSC according to the sub-block scanning order, wherein a sub-block width is equal to uiWidth>>2, where uiWidth is the width of the block of transform coefficients, “>>” represents the right-shift operation, a first value of a scan position variable is equal to 0, and deriving the scan-based LSC indicator comprises:

determining an x-coordinate of a top-left transform coefficient of a sub-block of the plurality of sub-blocks that contains the last significant coefficient by determining uiPosLastX>>2, where uiPosLastX is an x-coordinate of the block-based LSC indicator;

determining a y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient by determining uiPosLastY>>2, where uiPosLastX is a y-coordinate of the block-based LSC indicator;

determining a value of a first variable by adding the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and the y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

if the value of the first variable is less than the sub-block width, determining a second value of the scan position variable as being equal to the first value of the scan-based indicator plus sX+((uiDs*(uiDs+1))>>1), where sX is the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and uiDs is the first variable;

if the value of the first variable is not less than the sub-block width:

determining a value of a second variable as being equal to ((sWidth−1)<<1)−uiDs, where sWidth is the sub-block width and “<<” represents the left-shift operation; and

determining the second value of the scan position variable as being equal to the first value of the scan position variable plus sWidth*(sWidth−1)−(uiDI*(uiDI+1)>>1)+sX, where uiDI is the second variable;

determining a value of an x-coordinate variable as being equal to the x-coordinate of the block-based LSC indicator minus sX<<2;

determining a value of a y-coordinate variable as being equal to the y-coordinate of the block-based LSC indicator minus sY<<2, where sY is they-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

determining a third value of the scan position variable as being equal to the second value of the scan position variable<<4;

determining a value of a third variable as the value of the x-coordinate variable plus they-coordinate variable;

if the value of the third variable is less than 4, determining the scan-based LSC indicator as the third value of the scan position variable plus uiPosLastX+((uiD*(uiD+1))>>1), where uiPosLastX is the x-coordinate variable and uiD is the third variable;

if the value of the third variable is not less than 4;

determining a value of a fourth variable as 6−uiD; and

determining the scan-based LSC indicator as the third value of the scan position variable plus 12−(uiDI*(uiDI+1)>>1)+uiPosLastX, where uiDI is the fourth variable; and

decoding, based on the scan-based LSC indicator, a significance map for the block, by the electronic device.

2. The method of claim 1 , wherein the sub-block scanning order starts from a DC component of the block.

3. The method of claim 1 , wherein decoding the significance map comprises using the scan-based LSC indicator to determine whether the significance map includes significance flags for the transform coefficients.

4. The method of claim 3 ,

wherein the method further comprises receiving a Context Adaptive Binary Arithmetic Coding (CABAC) encoded version of the significance map;

wherein using the scan-based LSC indicator to decode the significance map comprises:

selecting a context model based on the scan-based LSC indicator; and

using the context model during a CABAC decoding operation that decodes the significance map; and

wherein the method further comprises:

receiving an encoded version of level information for the block; and

using the significance map to decode the level information.

5. The method of claim 4 , further comprising:

mapping the level information into the block according to the sub-block scanning order;

performing an inverse quantization operation on transform coefficients in the block to generate an inverse-quantized block;

performing an inverse transform operation on the inverse-quantized block to generate residual data;

performing an intra-prediction operation that generates predicted data; and

performing a reconstruction operation that uses the residual data and the predicted data to generate a reconstructed block, the reconstructed block being a portion of a picture of the video data.

6. A video decoding device comprising: a memory configured to store a block of transform coefficients; and one or more processors in communication with the memory, the one or more processors configured to:

receive a video data bitstream that includes data that represent a block-based last significant coefficient (LSC) indicator;

parse the block-based LSC indicator from the received video data bitstream;

deriving a scan-based LSC indicator from the block-based LSC indicator, the block-based LSC indicator indicating coordinates of a last significant coefficient of a block of transform coefficients according to a sub-block scanning order, the block of transform coefficients partitioned into a plurality of sub-blocks, the scan-based LSC indicator indicating an ordinal position of the LSC according to the sub-block scanning order, wherein a sub-block width is equal to uiWidth>>2, where uiWidth is the width of the block of transform coefficients, “>>” represents the right-shift operation, a first value of a scan position variable is equal to 0, and to derive the scan-based LSC indicator, the one or more processors configured to:

determine an x-coordinate of a top-left transform coefficient of a sub-block of the plurality of sub-blocks that contains the last significant coefficient by determining uiPosLastX>>2, where uiPosLastX is an x-coordinate of the block-based LSC indicator;

determine a y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient by determining uiPosLastY>>2, where uiPosLastX is a y-coordinate of the block-based LSC indicator;

determine a value of a first variable by adding the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and the y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

if the value of the first variable is less than the sub-block width, determining a second value of the scan position variable as being equal to the first value of the scan-based indicator plus sX+((uiDs*(uiDs+1))>>1), where sX is the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and uiDs is the first variable;

if the value of the first variable is not less than the sub-block width:

determine a value of a second variable as being equal to ((sWidth−1)<<1)−uiDs, where sWidth is the sub-block width and “<<” represents the left-shift operation; and

determine the second value of the scan position variable as being equal to the first value of the scan position variable plus sWidth*(sWidth−1)−(uiDI*(uiDI+1)>>1)+sX, where uiDI is the second variable;

determine a value of an x-coordinate variable as being equal to the x-coordinate of the block-based LSC indicator minus sX<<2;

determine a value of a y-coordinate variable as being equal to the y-coordinate of the block-based LSC indicator minus sY<<2, where sY is they-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

determine a third value of the scan position variable as being equal to the second value of the scan position variable<<4;

determine a value of a third variable as the value of the x-coordinate variable plus the y-coordinate variable;

if the value of the third variable is less than 4, determining the scan-based LSC indicator as the third value of the scan position variable plus uiPosLastX+((uiD*(uiD+1))>>1), where uiPosLastX is the x-coordinate variable and uiD is the third variable;

if the value of the third variable is not less than 4;

determine a value of a fourth variable as 6−uiD; and

determine the scan-based LSC indicator as the third value of the scan position variable plus 12−(uiDI*(uiDI+1)>>1)+uiPosLastX, where uiDI is the fourth variable; and

decode, based on the scan-based LSC indicator, a significance map for the block.

7. The video decoding device of claim 6 , wherein the sub-block scanning order starts from a DC component of the block.

8. The video decoding device of claim 6 , wherein the one or more processors are configured to use the scan-based LSC indicator to determine whether the significance map includes significance flags for the transform coefficients.

9. The video decoding device of claim 8 ,

wherein the one or more processors are configured to receive a Context Adaptive Binary Arithmetic Coding (CABAC) encoded version of the significance map and are configured such that as part of using the scan-based LSC indicator to decode the significance map, the one or more processors:

select a context model based on the scan-based LSC indicator; and

use the context model during a CABAC operation that decodes the significance map; and

wherein the one or more processors are further configured to:

receive an encoded version of level information for the block; and

use the significance map to decode the level information.

10. The video decoding device of claim 9 , wherein the one or more processors are further configured to:

map the level information into the block according to the sub-block scanning order;

perform an inverse quantization operation on transform coefficients in the block to generate an inverse-quantized block;

perform an inverse transform operation on the inverse-quantized block to generate residual data;

perform an intra-prediction operation that generates predicted data; and

perform a reconstruction operation that uses the residual data and the predicted data to generate a reconstructed block, the reconstructed block being a portion of a frame of video data.

11. A non-transitory computer-readable storage medium having instructions stored thereon that configure one or more processors to:

receive a video data bitstream that includes data that represent a block-based last significant coefficient (LSC) indicator;

parse the block-based LSC indicator from the received video data bitstream;

deriving a scan-based LSC indicator from the block-based LSC indicator, the block-based LSC indicator indicating coordinates of a last significant coefficient of a block of transform coefficients according to a sub-block scanning order, the block of transform coefficients partitioned into a plurality of sub-blocks, the scan-based LSC indicator indicating an ordinal position of the LSC according to the sub-block scanning order, wherein a sub-block width is equal to uiWidth>>2, where uiWidth is the width of the block of transform coefficients, “>>” represents the right-shift operation, a first value of a scan position variable is equal to 0, and to derive the scan-based LSC indicator, the one or more processors configured to:

determine an x-coordinate of a top-left transform coefficient of a sub-block of the plurality of sub-blocks that contains the last significant coefficient by determining uiPosLastX>>2, where uiPosLastX is an x-coordinate of the block-based LSC indicator;

determine a y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient by determining uiPosLastY>>2, where uiPosLastX is a y-coordinate of the block-based LSC indicator;

determine a value of a first variable by adding the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and the y-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

if the value of the first variable is less than the sub-block width, determining a second value of the scan position variable as being equal to the first value of the scan-based indicator plus sX+((uiDs*(uiDs+1))>>1), where sX is the x-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient and uiDs is the first variable;

if the value of the first variable is not less than the sub-block width:

determine a value of a second variable as being equal to ((sWidth−1)<<1)−uiDs, where sWidth is the sub-block width and “<<” represents the left-shift operation; and

determine the second value of the scan position variable as being equal to the first value of the scan position variable plus sWidth*(sWidth−1)−(uiDI*(uiDI+1)>>1)+sX, where uiDI is the second variable;

determine a value of an x-coordinate variable as being equal to the x-coordinate of the block-based LSC indicator minus sX<<2;

determine a value of a y-coordinate variable as being equal to the y-coordinate of the block-based LSC indicator minus sY<<2, where sY is they-coordinate of the top-left transform coefficient of the sub-block that contains the last significant coefficient;

determine a third value of the scan position variable as being equal to the second value of the scan position variable<<4;

determine a value of a third variable as the value of the x-coordinate variable plus the y-coordinate variable;

if the value of the third variable is less than 4, determining the scan-based LSC indicator as the third value of the scan position variable plus uiPosLastX+((uiD*(uiD+1))>>1), where uiPosLastX is the x-coordinate variable and uiD is the third variable;

if the value of the third variable is not less than 4;

determine a value of a fourth variable as 6−uiD; and

determine the scan-based LSC indicator as the third value of the scan position variable plus 12−(uiDI*(uiDI+1)>>1)+uiPosLastX, where uiDI is the fourth variable; and

decode, based on the scan-based LSC indicator, a significance map for the block.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the instructions configure the one or more processors to:

select a context model based on the scan-based LSC indicator;

use the context model during a Context Adaptive Binary Arithmetic Coding (CABAC) decoding operation that decodes the significance map; and

use to significance map to decode the level information.

13. The video decoding device of claim 6 , wherein the video decoding device comprises at least one of:

an integrated circuit;

a microprocessor; or

a telephone handset.

14. The video decoding device of claim 6 , further comprising a display configured to display decoded video data including the block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2012
From: SOLE ROJALS, JOEL; JOSHI, RAJAN LAXMAN; KARCZEWICZ, MARTA
To: QUALCOMM INCORPORATED
Reel/Frame 028452/0745 →
Continuity (5)
Provisional Application 61502269 · Jun 28, 2011
Provisional Application 61503529 · Jun 30, 2011
Provisional Application 61550775 · Oct 24, 2011
Provisional Application 61550784 · Oct 24, 2011
Related Publication 20130003834A1 · Jan 3, 2013