IP Library › Granted Patent US 10,158,879
Granted Patent B2
US 10,158,879 · App. 15/246,237 · Granted Dec 18, 2018

Sub-block transform coding of prediction residuals

Inventors: Thomas W. Holcomb (Bothell, WA); Chih-Lung Lin (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/523G06T3/40G06T7/0012H04N19/105H04N19/115H04N19/117H04N19/119H04N19/122H04N19/124H04N19/129H04N19/132H04N19/136H04N19/137H04N19/146H04N19/147H04N19/15H04N19/154H04N19/172H04N19/176H04N19/18H04N19/46H04N19/50H04N19/513H04N19/52H04N19/527H04N19/533H04N19/547H04N19/57H04N19/59H04N19/593H04N19/61H04N19/625H04N19/63H04N19/70H04N19/80H04N19/82H04N19/86H04N19/895H04N19/182
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 10,158,879
App. No.
15/246,237
Granted
Dec 18, 2018
Kind
B2
Abstract

Techniques and tools for sub-block transform coding are described. For example, a video encoder adaptively switches between 8×8, 8×4, and 4×8 DCTs when encoding 8×8 prediction residual blocks; a corresponding video decoder switches between 8×8, 8×4, and 4×8 inverse DCTs during decoding. The video encoder may determine the transform sizes as well as switching levels (e.g., frame, macroblock, or block) in a closed loop evaluation of the different transform sizes and switching levels. The encoder and decoder may use different scan patterns for different transform sizes when scanning values from two-dimensional blocks into one-dimensional arrays, or vice versa. The encoder and decoder may use sub-block pattern codes to indicate the presence or absence of information for the sub-blocks of particular blocks.

Claims (45)

1. A computer system comprising one or more processors and memory, wherein the computer system implements a video encoder configured to perform operations to encode one or more video frames, the operations comprising:

encoding one or more video frames to produce encoded data using a variable-block-size frequency transform with support for switching of transform size at varying levels within the one or more video frames,

wherein the encoding includes:

testing each of plural available transform sizes, including evaluating rate and/or distortion that results from applying the transform size to blocks of prediction residual data for at least part of the one or more video frames;

selecting a transform size to use during the encoding based on results of the evaluating; and

for one of the blocks of prediction residual data:

evaluating values of transform coefficients of prediction residual data for the block; and

determining, based at least in part on the values of the transform coefficients, sub-block pattern information that indicates an information pattern for presence or absence in a bitstream of the prediction residual data for plural sub-blocks of the block; and

outputting the encoded data in the bitstream, wherein the encoded data includes the sub-block pattern information.

2. The computer system of claim 1 , wherein the block is an 8×8 block and the plural sub-blocks are 4×4 sub-blocks.

3. The computer system of claim 1 , wherein the plural available transform sizes include 8×8 and 4×4.

4. The computer system of claim 1 , wherein the varying levels include frame level and block level.

5. The computer system of claim 1 , wherein, for each of the respective sub-blocks of the block, if the sub-block has at least one non-zero transform coefficient, the sub-block pattern information indicates presence in the bitstream of prediction residual data for that sub-block.

6. The computer system of claim 1 , wherein, for each of the respective sub-blocks of the block, if the sub-block has mostly zero-value transform coefficients, the sub-block pattern information indicates absence in the bitstream of prediction residual data for that sub-block.

7. A computer system comprising one or more processors and memory, wherein the computer system implements a video decoder configured to perform operations to decode one or more video frames, the operations comprising:

receiving encoded data in a bitstream, wherein the encoded data includes sub-block pattern information,

the sub-block pattern information indicating an information pattern for presence or absence in the bitstream of prediction residual data for plural sub-blocks of a block of the one or more video frames; and

decoding the encoded data to reconstruct the one or more video frames using a variable-block-size inverse frequency transform with support for switching of transform size at varying levels within the one or more video frames,

wherein the decoding for each of the respective sub-blocks of the block includes:

using the sub-block pattern information for the sub-block to determine whether the sub-block has prediction residual data in the bitstream; and

if the sub-block has prediction residual data in the bitstream, getting, from the encoded data in the bitstream, encoded transform coefficients for the sub-block and reconstructing the transform coefficients for the sub-block.

8. The computer system of claim 7 , wherein the block is an 8×8 block and the plural sub-blocks are 4×4 sub-blocks.

9. The computer system of claim 7 , wherein the varying levels include frame level and block level.

10. The computer system of claim 7 , wherein the block is decoded using a transform size selected from among plural available transform sizes.

11. The computer system of claim 10 , wherein the plural available transform sizes include 8×8 and 4×4.

12. The computer system of claim 7 , wherein, for each of the respective sub-blocks of the block, if the sub-block has at least one non-zero transform coefficient, the sub-block pattern information indicates presence in the bitstream of prediction residual data for that sub-block.

13. In a computer system that implements a video decoder, a method comprising:

receiving encoded data in a bitstream, wherein the encoded data includes sub-block pattern information, the sub-block pattern information indicating an information pattern for presence or absence in the bitstream of prediction residual data for plural sub-blocks of a block of one or more video frames; and

decoding the encoded data to reconstruct the one or more video frames using a variable-block-size inverse frequency transform with support for switching of transform size at varying levels within the one or more video frames,

wherein the decoding for each of the respective sub-blocks of the block includes:

using the sub-block pattern information for the sub-block to determine whether the sub-block has prediction residual data in the bitstream; and

if the sub-block has prediction residual data in the bitstream, getting, from the encoded data in the bitstream, encoded transform coefficients for the sub-block and reconstructing the transform coefficients for the sub-block.

14. The method of claim 13 , wherein the block is an 8×8 block and the plural sub-blocks are 4×4 sub-blocks.

15. The method of claim 13 , wherein the varying levels include frame level and block level.

16. The method of claim 13 , wherein the block is decoded using a transform size selected from among plural available transform sizes.

17. The method of claim 16 , wherein the plural available transform sizes include 8×8 and 4×4.

18. The method of claim 13 , wherein, for each of the respective sub-blocks of the block, if the sub-block has at least one non-zero transform coefficient, the sub-block pattern information indicates presence in the bitstream of prediction residual data for that sub-block.

19. The method of claim 13 , wherein the decoding for each of the respective sub-blocks of the block further includes:

inverse quantizing the transform coefficients for the sub-block;

with an inverse frequency transform, converting the transform coefficients for the sub-block to prediction residual values for the sub-block; and

combining the prediction residual values for the sub-block with predicted values for the sub-block.

20. The computer system of claim 7 , wherein the decoding for each of the respective sub-blocks of the block further includes:

inverse quantizing the transform coefficients for the sub-block;

with an inverse frequency transform, converting the transform coefficients for the sub-block to prediction residual values for the sub-block; and

combining the prediction residual values for the sub-block with predicted values for the sub-block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2016
From: HOLCOMB, THOMAS W.; LIN, CHIH-LUNG
To: MICROSOFT CORPORATION
Reel/Frame 040163/0260 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2016
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 040163/0264 →
Continuity (5)
Continuation 14337578 · Jul 22, 2014
Continuation 11890059 · Aug 3, 2007
Division 10322352 · Dec 17, 2002
Provisional Application 60341674 · Dec 17, 2001
Related Publication 20160366443A1 · Dec 15, 2016