IP Library Granted Patent US 11,595,679
Granted Patent B1
US 11,595,679 · App. 17/581,446 · Granted Feb 28, 2023

Encoder-side search ranges having horizontal bias or vertical bias

Inventors: Lihua Zhu (Mountain View, CA); Yongjun Wu (Bellevue, WA); Gary J. Sullivan (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04N19/51H04N19/159H04N19/162H04N19/167H04N19/176
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,595,679
App. No.
17/581,446
Granted
Feb 28, 2023
Kind
B1
Abstract

Innovations in encoder-side search ranges having horizontal bias or vertical bias are described herein. For example, a video encoder determines a block vector (“BV”) for a current block of a picture, performs intra prediction for the current block using the BV, and encodes the BV. The BV indicates a displacement to a region within the picture. When determining the BV, the encoder checks a constraint that the region is within a BV search range having a horizontal bias or vertical bias. The encoder can select the BV search range from among multiple available BV search ranges, e.g., depending at least in part on BV values of one or more previous blocks, which can be tracked in a histogram data structure.

Claims (49)

1. In a computing device that implements a video encoder, a method comprising:

receiving a current picture of a video sequence;

encoding the current picture, thereby producing encoded data for the current picture, wherein the encoding the current picture includes:

determining a block vector (“BV”) value for a current block of a given coding tree block of the current picture, the BV value indicating a displacement to a region within the current picture, and the given coding tree block having a dimension S, wherein the determining the BV value for the current block includes identifying the BV value for the current block subject to a constraint that the region is within a BV search range having a horizontal bias or a vertical bias, wherein, for the horizontal bias, the BV search range includes candidate BV values having a wider range of horizontal BV component values than vertical BV component values, and wherein, for the vertical bias, the BV search range includes candidate BV values having a wider range of vertical BV component values than horizontal BV component values;

performing intra block copy prediction for the current block using the BV value for the current block; and

encoding the BV value for the current block; and

outputting, as part of a bitstream, the encoded data for the current picture.

2. The method of claim 1 , wherein the BV search range has a vertical bias.

3. The method of claim 2 , wherein the BV search range has a height between S and 2S, inclusive, and a width between ¼S and ¾S, inclusive.

4. The method of claim 1 , wherein the BV search range has a horizontal bias.

5. The method of claim 4 , wherein the BV search range has a width between S and 2S, inclusive, and a height between ¼S and ¾S, inclusive.

6. The method of claim 1 , wherein the encoding the current picture further includes:

selecting the BV search range from among multiple available BV search ranges.

7. The method of claim 6 , wherein the selecting depends at least in part on BV values of one or more previous blocks of the current picture and/or one or more previous pictures.

8. The method of claim 6 , wherein the selecting depends at least in part on BV values of one or more previous blocks, and wherein the BV values of the one or more previous blocks are tracked in a histogram data structure.

9. The method of claim 6 , wherein the selecting depends at least in part on a user setting.

10. The method of claim 1 , wherein a 2N×2N block includes the current block, and wherein the encoding the current picture further includes identifying how to partition the 2N×2N block using a bottom-up approach that includes:

checking a subset of modes per N×N block of the 2N×2N block;

caching vector values for the respective N×N blocks of the 2N×2N block;

checking a subset of modes with a 2N-dimension for the 2N×2N block, including using the cached vector values;

selecting a best mode with a 2N-dimension for the 2N×2N block; and

selecting between the best mode with a 2N-dimension for the 2N×2N block and best modes for the respective N×N blocks of the 2N×2N block.

11. The method of claim 1 , wherein the determining the BV value for the current block includes:

identifying a current best location for prediction through iterative evaluation in a small neighborhood around the current best location, wherein the small neighborhood includes locations that are immediately adjacent horizontally or vertically to the current best location; and

confirming the current best location through iterative evaluation in successively larger neighborhoods around the current best location, wherein each of the larger neighborhoods includes locations in a ring outside the small neighborhood.

12. The method of claim 1 , wherein the current block is part of a current coding tree block having dimensions N×N, and wherein the encoding the current picture further includes identifying how to partition the current coding tree block into two partitions that have different dimensions.

13. One or more computer-readable media having stored thereon instructions for causing a computer system, when programmed thereby, to perform operations, the one or more computer-readable media being selected from the group consisting of tangible memory and tangible storage, the operations comprising:

receiving a current picture of a video sequence;

encoding the current picture, thereby producing encoded data for the current picture, wherein the encoding the current picture includes:

determining a block vector (“BV”) value for a current block of a given coding tree block of the current picture, the BV value indicating a displacement to a region within the current picture, and the given coding tree block having a dimension S, wherein the determining the BV value for the current block includes identifying the BV value for the current block subject to a constraint that the region is within a BV search range having a horizontal bias or a vertical bias, wherein, for the horizontal bias, the BV search range includes candidate BV values having a wider range of horizontal BV component values than vertical BV component values, and wherein, for the vertical bias, the BV search range includes candidate BV values having a wider range of vertical BV component values than horizontal BV component values;

performing intra block copy prediction for the current block using the BV value for the current block; and

encoding the BV value for the current block; and

outputting, as part of a bitstream, the encoded data for the current picture.

14. The one or more computer-readable media of claim 13 , wherein the BV search range has a vertical bias, the BV search range having a height between S and 2S, inclusive, and a width between ¼S and ¾S, inclusive.

15. The one or more computer-readable media of claim 13 , wherein the BV search range has a horizontal bias, the BV search range having a width between S and 2S, inclusive, and a height between ¼S and ¾S, inclusive.

16. The one or more computer-readable media of claim 13 , wherein the encoding the current picture further includes:

selecting the BV search range from among multiple available BV search ranges.

17. The one or more computer-readable media of claim 16 , wherein the selecting depends at least in part on BV values of one or more previous blocks of the current picture and/or one or more previous pictures.

18. The one or more computer-readable media of claim 16 , wherein the selecting depends at least in part on BV values of one or more previous blocks, and wherein the BV values of the one or more previous blocks are tracked in a histogram data structure.

19. The one or more computer-readable media of claim 16 , wherein the selecting depends at least in part on a user setting.

20. A computer system comprising:

an input buffer, implemented using memory, configured to store one or more pictures of a video sequence;

a video encoder, implemented using one or more processing units, configured to perform operations comprising:

receiving a current picture from among the one or more pictures of the video sequence;

encoding the current picture, thereby producing encoded data for the current picture, wherein the encoding the current picture includes:

determining a block vector (“BV”) value for a current block of a given coding tree block of the current picture, the BV value indicating a displacement to a region within the current picture, and the given coding tree block having a dimension S, wherein the determining the BV value for the current block includes identifying the BV value for the current block subject to a constraint that the region is within a BV search range having a horizontal bias or a vertical bias, wherein, for the horizontal bias, the BV search range includes candidate BV values having a wider range of horizontal BV component values than vertical BV component values, and wherein, for the vertical bias, the BV search range includes candidate BV values having a wider range of vertical BV component values than horizontal BV component values;

performing intra block copy prediction for the current block using the BV value for the current block; and

encoding the BV value for the current block; and

an output buffer, implemented using memory, configured to store, as part of a bitstream, the encoded data for the current picture.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2022
From: ZHU, LIHUA; WU, YONGJUN; SULLIVAN, GARY J.
To: MICROSOFT CORPORATION
Reel/Frame 060235/0336 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2022
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 060235/0354 →
Continuity (3)
Continuation 14455856 · Aug 8, 2014
Provisional Application 61928970 · Jan 17, 2014
Provisional Application 61954572 · Mar 17, 2014
Cited By (4)
US 12,244,823 US 12,316,860 US 12,413,771 US 12,695,895