IP Library Granted Patent US 12,425,612
Granted Patent B2
US 12,425,612 · App. 18/399,369 · Granted Sep 23, 2025

Intra block copy vector difference wrap around

Inventors: Damian Ruiz Coll (Reston, VA); Vikas Warudkar (Herndon, VA)
Assignee: Ofinno, LLC
H04N19/176H04N19/119
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 12,425,612
App. No.
18/399,369
Granted
Sep 23, 2025
Kind
B2
Abstract

A decoder receives, from a bitstream, an indication of a block vector predictor (BVP) and a first block vector difference (BVD) for a current block. The decoder determines a second BVD based on: the first BVD and whether a location displaced from the current block by a sum of the BVP and the first BVD is outside a reference region. The decoder calculates a block vector (BV) based on a sum of the second BVD and the BVP. The decoder reconstructs the current block based on a reference block indicated by the BV.

Claims (53)

1. A method comprising:

receiving, from a bitstream, an indication of a block vector predictor (BVP) and a first block vector difference (BVD) for a current block;

based on a location, displaced from the current block by a sum of the BVP and the first BVD, being outside a reference region:

selecting one component of the first BVD to adjust;

determining a first component, of a second BVD and corresponding to the selected component of the first BVD, to be equal to the adjusted component of the first BVD; and

determining a second component of the second BVD to be equal to a non-selected component of the first BVD;

calculating a block vector (BV) based on a sum of the second BVD and the BVP; and

reconstructing the current block based on a reference block indicated by the BV.

2. The method of claim 1 , wherein the reference region comprises a plurality of rows and a plurality of columns, and wherein:

at least one row of the plurality of rows has a different length than that of another row of the plurality of rows; or

at least one column of the plurality of columns has a different length than that of another column of the plurality of columns.

3. The method of claim 1 , wherein the first component of the second BVD is determined as having:

a magnitude based on a difference between a length of the reference region and a magnitude of the selected component of the first BVD; and

a sign opposite of that of the selected component of the first BVD.

4. The method of claim 3 , wherein the length of the reference region is along a direction of the selected component of the first BVD.

5. The method of claim 4 , wherein the direction is horizontal based on the selected component being a horizontal component and the direction is vertical based on the selected component being a vertical component.

6. The method of claim 1 , wherein the selected component of the first BVD is in a direction that results in a magnitude of the adjusted component of the first BVD being greater than half the length of the reference region.

7. The method of claim 6 , wherein the length of the reference region is along a horizontal direction based on the selected component of the first BVD being a horizontal component, and wherein the length of the reference region is along a vertical direction based on the selected component of the first BVD being a vertical component.

8. A video decoder comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the video decoder to:

receive, from a bitstream, an indication of a block vector predictor (BVP) and a first block vector difference (BVD) for a current block;

based on a location, displaced from the current block by a sum of the BVP and the first BVD, being outside a reference region:

select one component of the first BVD to adjust;

determine a first component, of a second BVD and corresponding to the selected component of the first BVD, to be equal to the adjusted component of the first BVD; and

determine a second component of the second BVD to be equal to a non-selected component of the first BVD;

calculate a block vector (BV) based on a sum of the second BVD and the BVP; and

reconstruct the current block based on a reference block indicated by the BV.

9. The video decoder of claim 8 , wherein the reference region comprises a plurality of rows and a plurality of columns, and wherein:

at least one row of the plurality of rows has a different length than that of another row of the plurality of rows; or

at least one column of the plurality of columns has a different length than that of another column of the plurality of columns.

10. The video decoder of claim 8 , wherein the first component of the second BVD is determined as having:

a magnitude based on a difference between a length of the reference region and a magnitude of the selected component of the first BVD; and

a sign opposite of that of the selected component of the first BVD.

11. The video decoder of claim 10 , wherein the length of the reference region is along a direction of the selected component of the first BVD.

12. The video decoder of claim 11 , wherein the direction is horizontal based on the selected component being a horizontal component and the direction is vertical based on the selected component being a vertical component.

13. The video decoder of claim 8 , wherein the selected component of the first BVD is in a direction that results in a magnitude of the adjusted component of the first BVD being greater than half the length of the reference region.

14. The video decoder of claim 13 , wherein the length of the reference region is along a horizontal direction based on the selected component of the first BVD being a horizontal component, and wherein the length of the reference region is along a vertical direction based on the selected component of the first BVD being a vertical component.

15. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a decoder, cause the decoder to:

receive, from a bitstream, an indication of a block vector predictor (BVP) and a first block vector difference (BVD) for a current block;

based on a location, displaced from the current block by a sum of the BVP and the first BVD, being outside a reference region:

select one component of the first BVD to adjust;

determine a first component, of a second BVD and corresponding to the selected component of the first BVD, to be equal to the adjusted component of the first BVD; and

determine a second component of the second BVD to be equal to a non-selected component of the first BVD;

calculate a block vector (BV) based on a sum of the second BVD and the BVP; and

reconstruct the current block based on a reference block indicated by the BV.

16. The non-transitory computer-readable medium of claim 15 , wherein the first component of the second BVD is determined as having with:

a magnitude based on a difference between a length of the reference region and a magnitude of the selected component of the first BVD; and

a sign opposite of that of the selected component of the first BVD.

17. The non-transitory computer-readable medium of claim 16 , wherein the length of the reference region is along a direction of the selected component of the first BVD.

18. The non-transitory computer-readable medium of claim 17 , wherein the direction is horizontal based on the selected component being a horizontal component and the direction is vertical based on the selected component being a vertical component.

19. The non-transitory computer-readable medium of claim 15 , wherein the selected component of the first BVD is in a direction that results in a magnitude of the adjusted component of the first BVD being greater than half the length of the reference region.

20. The non-transitory computer-readable medium of claim 19 , wherein the length of the reference region is along a horizontal direction based on the selected component of the first BVD being a horizontal component, and wherein the length of the reference region is along a vertical direction based on the selected component of the first BVD being a vertical component.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2024
From: RUIZ COLL, DAMIAN; WARUDKAR, VIKAS
To: OFINNO, LLC
Reel/Frame 066979/0836 →
Continuity (2)
Provisional Application 63435657 · Dec 28, 2022
Related Publication 20240223784A1 · Jul 4, 2024
References Cited (10)
US 11317113B2 · Li et al. · 2022 [cited by applicant]
US 20160241858A1 · Li et al. · 2016 [cited by applicant]
US 20210360262A1 · Li et al. · 2021 [cited by applicant]
US 20230164351A1 · Zhao · 2023 [cited by examiner]
US 20230217013A1 · Nien · 2023 [cited by examiner]
Vivienne Sze et al.; “High Efficiency Video Coding (HEVC).” Integrated circuit and systems, algorithms and architectures. vol. 39. Berlin, Germany: Springer, 2014. [cited by applicant]
Mathias Wien. “High efficiency video coding.” Coding Tools and specification 24 (2015). [cited by applicant]
JVET-P0669-v3; Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11; 16th Meeting: Geneva, CH, Oct. 1-11, 2019; Title: AHG6: Wrap-around motion vector prediction at the picture boundary; Sta… [cited by applicant]
JVET-P1018-v2; Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11; 16th Meeting: Geneva, CH, Oct. 1-11, 2019; Title: Non-CE8: An alternative IBC virtual buffer setting to avoid reference s… [cited by applicant]
JVET-T2002-v2; Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29; 20th Meeting, by teleconference, Oct. 7-16, 2020; Title: Algorithm description for Versatile Video Coding and Test Model 11 (VT… [cited by applicant]