US9167253B2

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

Summary by NHIP

Video LSC Indicator Derivation

The method converts a block-based last significant coefficient indicator into a scan-based ordinal position for video decoding. It derives sub-block coordinates by right-shifting input x and y values by uiWidth 2, then calculates a scan position by summing these coordinates and comparing the result to the sub-block width.

Claim Score by NHIP

Read claim 11, the broadest

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.

US9167253B2, drawing sheet 1
Sheet 1 of 14

Term

7.2 yearsleft in the term

Expires 1 December 2033, including 522 days of term adjustment.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

14 claims: 3 independent, 11 dependent

  1. 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. 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.
  3. 11
    Broadest claimClaim Score 13, narrow(NHIP)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.