IP Library Granted Patent US 11,284,103
Granted Patent B2
US 11,284,103 · App. 14/455,856 · Granted Mar 22, 2022

Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning

Inventors: Lihua Zhu (Mountain View, CA); Yongjun Wu (Bellevue, WA); Gary J. Sullivan (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/52H04N19/105H04N19/11H04N19/119H04N19/159H04N19/176H04N19/593H04N19/61H04N19/70
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 11,284,103
App. No.
14/455,856
Granted
Mar 22, 2022
Kind
B2
Abstract

Innovations in intra block copy (“BC”) prediction as well as innovations in encoder-side search patterns and approaches to partitioning. For example, some of the innovations relate to use of asymmetric partitions for intra BC prediction. Other innovations relate to search patterns or approaches that an encoder uses during block vector estimation (for intra BC prediction) or motion estimation. Still other innovations relate to uses of BV search ranges that have a horizontal or vertical bias during BV estimation.

Claims (89)

1. In a computing device that implements a video encoder adapted for encoding screen capture content, a method comprising:

receiving a frame of screen capture content;

splitting the frame of screen capture content into multiple 2N×2N blocks, the multiple 2N×2N blocks including a current 2N×2N block of the frame of screen capture content;

encoding the current 2N×2N block of the frame of screen capture content to produce encoded data, the current 2N×2N block being within a given slice of the frame of screen capture content and being within a given tile of the frame of screen capture content, the current 2N×2N block having dimensions of 64×64, 32×32, or 16×16, including:

constraining values of vectors for intra block copy (“BC”) prediction to have integer-sample precision and to indicate reference regions that are within the given slice, within the given tile, and not overlapping the current 2N×2N block within the frame of screen capture content:

asymmetrically partitioning the current 2N×2N block into first and second partitions for intra BC prediction by splitting the current 2N×2N block horizontally or vertically into the first and second partitions, the first and second partitions having dimensions of:

(a) 64×16 and 64×48, respectively, or 16×64 and 48×64, respectively, if the current 2N×2N block has dimensions of 64×64;

(b) 32×8 and 32×24, respectively, or 8×32 and 24×32, respectively, if the current 2N×2N block has dimensions of 32×32; and

(c) 16×4 and 16×12, respectively, or 4×16 and 12×16, respectively, if the current 2N×2N block has dimensions of 16×16;

performing intra BC prediction for the first partition; and

performing intra BC prediction for the second partition; and

outputting the encoded data as part of a bitstream.

2. The method of claim 1 wherein the encoding further includes performing intra BC prediction for another 2N×2N block that is symmetrically partitioned for the intra BC prediction, and wherein the other 2N×2N block is partitioned into (1) two 2N>N blocks, (2) two N×2N blocks, or (3) four N×N blocks, each of which can be further partitioned into two N×N/2 blocks, two N/2×N blocks or four N/2×N/2 blocks.

3. A computing device comprising:

one or more processing units;

volatile memory; and

non-volatile memory and/or storage, the non-volatile memory and/or storage having stored therein computer-executable instructions for causing the computing device, when programmed thereby, to perform operations of a video decoder adapted for decoding screen capture content, the operations comprising:

receiving encoded data as part of a bitstream; and

decoding the encoded data to reconstruct a frame of screen capture content, including performing intra block copy (“BC”) prediction for first and second partitions of a current 2N×2N block of the frame of screen capture content, the current 2N×2N block being within a given slice of the frame of screen capture content and being within a given tile of the frame of screen capture content, and values of vectors for the intra BC prediction being constrained to have integer-sample precision and to indicate reference regions that are within the given slice, within the given tile, and not overlapping the current 2N×2N block within the frame of screen capture content, the current 2N×2N block having been asymmetrically partitioned for the intra BC prediction, the current 2N×2N block having dimensions of 64×64, 32×32, or 16×16, the current 2N×2N block having been split horizontally or vertically into the first and second partitions, the first and second partitions having dimensions of:

(a) 64×16 and 64×48, respectively, or 16×64 and 48×64, respectively, if the current 2N×2N block has dimensions of 64×64;

(b) 32×8 and 32×24, respectively, or 8×32 and 24×32, respectively, if the current 2N×2N block has dimensions of 32×32; and

(c) 16×4 and 16×12, respectively, or 4×16 and 12×16, respectively, if the current 2N×2N block has dimensions of 16×16.

4. The computing device of claim 3 wherein the decoding further includes performing intra BC prediction for another 2N×2N block that has been symmetrically partitioned for the intra BC prediction, and wherein the other 2N×2N block has been partitioned into (1) two 2N×N blocks, (2) two N×2N blocks, or (3) four N×N blocks, each of which can be further partitioned into two N×N/2 blocks, two N/2×N blocks or four N/2×N/2 blocks.

5. The method of claim 1 wherein the encoding further includes, for the current 2N×2N block:

determining a first vector that indicates a first displacement to a first reference region of the frame of screen capture content;

as part of the performing intra BC prediction for the first partition, using the first vector to determine predicted sample values for the first partition from previously reconstructed sample values in the first reference region of the frame of screen capture content;

determining a second vector that indicates a second displacement to a second reference region of the frame of screen capture content; and

as part of the performing intra BC prediction for the second partition, using the second vector to determine predicted sample values for the second partition from previously reconstructed sample values in the second reference region of the frame of screen capture content.

6. The computing device of claim 3 wherein the decoding includes, for the current 2N×2N block:

reconstructing a first vector that indicates a first displacement to a first reference region of the frame of screen capture content;

reconstructing a second vector that indicates a second displacement to a second reference region of the frame of screen capture content;

as part of the performing intra BC prediction for the first partition, using the first vector to determine predicted sample values for the first partition from previously reconstructed sample values in the first reference region of the frame of screen capture content; and

as part of the performing intra BC prediction for the second partition, using the second vector to determine predicted sample values for the second partition from previously reconstructed sample values in the second reference region of the frame of screen capture content.

7. In a computing device that implements video decoder adapted for decoding screen capture content, a method comprising:

receiving encoded data as part of a bitstream; and

decoding the encoded data to reconstruct a frame of screen capture content, including performing intra block copy (“BC”) prediction for first and second partitions of a current 2N×2N block of the frame of screen capture content, the current 2N×2N block being within a given slice of the frame of screen capture content and being within a given tile of the frame of screen capture content, and values of vectors for the intra BC prediction being constrained to have integer-sample precision and to indicate reference regions that are within the given slice, within the given tile, and not overlapping the current 2N×2N block within the frame of screen capture content, the current 2N×2N block having been asymmetrically partitioned for the intra BC prediction, the current 2N×2N block having dimensions of 64×64, 32×32, or 16×16, the current 2N×2N block having been split horizontally or vertically into the first and second partitions, the first and second partitions having dimensions of:

(a) 64×16 and 64×48, respectively, or 16×64 and 48×64, respectively, if the current 2N×2N block has dimensions of 64×64;

(b) 32×8 and 32×24, respectively, or 8×32 and 24×32, respectively, if the current 2N×2N block has dimensions of 32×32; and

(c) 16×4 and 16×12, respectively, or 4×16 and 12×16, respectively, if the current 2N×2N block has dimensions of 16×16.

8. The method of claim 7 wherein the decoding includes, for the current 2N×2N block:

reconstructing a first vector that indicates a displacement to a first reference region of the frame of screen capture content;

as part of the intra BC prediction for the first partition, using the first vector to determine predicted sample values for the first partition from previously reconstructed sample values in the first reference region of the frame of screen capture content;

reconstructing a second vector that indicates a displacement to a second reference region of the frame of screen capture content; and

as part of the intra BC prediction for the second partition, using the second vector to determine predicted sample values for the second partition from previously reconstructed sample values in the second reference region of the frame of screen capture content.

9. The method of claim 7 wherein the current 2N×2N block has been split horizontally, and:

the first and second partitions are top and bottom partitions, respectively; or

the first and second partitions are bottom and top partitions, respectively.

10. The method of claim 7 wherein the current 2N×2N block has been split vertically, and:

the first and second partitions are left and right partitions, respectively; or

the first and second partitions are right and left partitions, respectively.

11. The method of claim 1 wherein the current 2N×2N block is split horizontally, and:

the first and second partitions are top and bottom partitions, respectively; or

the first and second partitions are bottom and top partitions, respectively.

12. The method of claim 1 wherein the current 2N×2N block is split vertically, and:

the first and second partitions are left and right partitions, respectively; or

the first and second partitions are right and left partitions, respectively.

13. The computing device of claim 3 wherein the current 2N×2N block has been split horizontally, and:

the first and second partitions are top and bottom partitions, respectively; or

the first and second partitions are bottom and top partitions, respectively.

14. The computing device of claim 3 wherein the current 2N×2N block has been split vertically, and:

the first and second partitions are left and right partitions, respectively; or

the first and second partitions are right and left partitions, respectively.

15. A computing device comprising:

one or more processing units;

volatile memory; and

non-volatile memory and/or storage, the non-volatile memory and/or storage having stored therein computer-executable instructions for causing the computing device, when programmed thereby, to perform operations of a video encoder adapted for encoding screen capture content, the operations comprising:

receiving a frame of screen capture content;

splitting the frame of screen capture content into multiple 2N×2N blocks, the multiple 2N×2N blocks including a current 2N×2N block of the frame of screen capture content;

encoding the current 2N×2N block of the frame of screen capture content to produce encoded data, the current 2N×2N block being within a given slice of the frame of screen capture content and being within a given tile of the frame of screen capture content, the current 2N×2N block having dimensions of 64×64, 32×32, or 16×16, including:

constraining values of vectors for intra block copy (“BC”) prediction to have integer-sample precision and to indicate reference regions that are within the given slice, within the given tile, and not overlapping the current 2N×2N block within the frame of screen capture content;

asymmetrically partitioning the current 2N×2N block into first and second partitions for intra BC prediction by splitting the current 2N×2N block horizontally or vertically into the first and second partitions, the first and second partitions having dimensions of:

(a) 64×16 and 64×48, respectively, or 16×64 and 48×64, respectively, if the current 2N×2N block has dimensions of 64×64;

(b) 32×8 and 32×24, respectively, or 8×32 and 24×32, respectively, if the current 2N×2N block has dimensions of 32×32; and

(c) 16×4 and 16×12, respectively, or 4×16 and 12×16, respectively, if the current 2N×2N block has dimensions of 16×16;

performing intra BC prediction for the first partition; and

performing intra BC prediction for the second partition; and

outputting the encoded data as part of a bitstream.

16. The computing device of claim 15 wherein the current 2N×2N block is split horizontally, and:

the first and second partitions are top and bottom partitions, respectively; or

the first and second partitions are bottom and top partitions, respectively.

17. The computing device of claim 15 wherein the current 2N×2N block is split vertically, and:

the first and second partitions are left and right partitions, respectively; or

the first and second partitions are right and left partitions, respectively.

18. The computing device of claim 15 wherein the encoding further includes performing intra BC prediction for another 2N×2N block that is symmetrically partitioned for the intra BC prediction, and wherein the other 2N×2N block is partitioned into (1) two 2N×N blocks, (2) two N×2N blocks, or (3) four N×N blocks, each of which can be further partitioned into two N×N/2 blocks, two N/2×N blocks or four N/2×N/2 blocks.

19. The computing device of claim 15 wherein the encoding further includes, for the current 2N×2N block:

determining a first vector that indicates a first displacement to a first reference region of the frame of screen capture content;

as part of the performing intra BC prediction for the first partition, using the first vector to determine predicted sample values for the first partition from previously reconstructed sample values in the first reference region of the frame of screen capture content;

determining a second vector that indicates a second displacement to a second reference region of the frame of screen capture content; and

as part of the performing intra BC prediction for the second partition, using the second vector to determine predicted sample values for the second partition from previously reconstructed sample values in the second reference region of the frame of screen capture content.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2014
From: ZHU, LIHUA; WU, YONGJUN; SULLIVAN, GARY J.
To: MICROSOFT CORPORATION
Reel/Frame 033518/0912 →
Continuity (3)
Provisional Application 61928970 · Jan 17, 2014
Provisional Application 61954572 · Mar 17, 2014
Related Publication 20150208084A1 · Jul 23, 2015
Cited By (7)
US 12,231,667 US 12,244,823 US 12,316,860 US 12,375,711 US 12,413,771 US 12,634,458 US 12,695,895