IP Library › Granted Patent US 11,831,816
Granted Patent B2
US 11,831,816 · App. 17/470,363 · Granted Nov 28, 2023

Sub-picture motion vectors in video coding

Inventors: Ye-Kui Wang (San Diego, CA); Jianle Chen (San Diego, CA); FNU Hendry (San Diego, CA)
Assignee: Huawei Technologies Co., Ltd.
H04N19/117H04N19/105H04N19/119H04N19/132H04N19/137H04N19/159H04N19/172H04N19/174H04N19/176H04N19/184H04N19/186H04N19/46H04N19/52H04N19/593H04N19/70H04N19/82H04N19/86H04N19/96
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,831,816
App. No.
17/470,363
Granted
Nov 28, 2023
Kind
B2
Abstract

A video coding mechanism includes receiving a bitstream comprising a current picture including a sub-picture coded according to inter-prediction. Coded blocks contain candidate motion vectors for a current block of the sub-picture. The coded blocks include a collocated block from a different picture. A candidate list of candidate motion vectors for the current block are derived by excluding collocated motion vectors from the candidate list when the collocated motion vectors are included in the collocated block, when the collocated motion vectors point outside of the sub-picture, and when a flag is set to indicate the sub-picture is treated as a picture. A current motion vector for the current block is determined from the candidate list of candidate motion vectors. The current block is decoded based on the current motion vector. The current block is forwarded for display as part of a decoded video sequence.

Claims (51)

1. A method implemented by a decoder, the method comprising:

receiving, by a receiver of the decoder, a current picture including a sub-picture with a current block coded in an inter-prediction mode;

deriving, by a processor of the decoder, a motion vector predictor candidate list for the current block by excluding a collocated motion vector when the collocated motion vector points outside of the sub-picture and when a flag is set to indicate the sub-picture is treated as a picture, wherein the collocated motion vector is included in a collocated block from a collocated picture;

determining, by the processor, a current motion vector for the current block from the motion vector predictor candidate list; and

decoding, by the processor, the current block based on the current motion vector.

2. The method of claim 1 , further comprising obtaining, by the processor, the flag from a sequence parameter set (SPS), wherein the flag is denoted as a subpic_treated_as_pic_flag[i], and wherein i is an index of the sub-picture.

3. The method of claim 2 , wherein the subpic_treated_as_pic_flag[i] is set equal to one to specify that an i-th sub-picture of each coded picture in a coded video sequence (CVS) is treated as a picture in a decoding process excluding in-loop filtering operations.

4. The method of claim 1 , wherein deriving the motion vector predictor candidate list for the current block is performed according to temporal luma motion vector prediction.

5. The method of claim 4 , wherein temporal luma motion vector prediction is performed according to:

xColBr=xCb+cb Width;

yColBr=yCb+cb Height;

rightBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicRightBoundaryPos: pic_width_in_luma_samples−1; and

botBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicBotBoundaryPos: pic_height_in_luma_samples−1,

where xColBr and yColBR specify a location of the collocated block, xCb and yCb specify a top left sample of the current block relative to a top left sample of the current picture, cbWidth is a width of the current block, cbHeight is a height of the current block, SubPicRightBoundaryPos is a position of a right boundary of the sub-picture, SubPicBotBoundaryPos is a position of a bottom boundary of the sub-picture, pic_width_in_luma_samples is a width of the current picture measured in luma samples, pic_height_in_luma_samples is a height of the current picture measured in luma samples, botBoundaryPos is a computed position of the bottom boundary of the sub-picture, rightBoundaryPos is a computed position of the right boundary of the sub-picture, SubPicIdx is an index of the sub-picture, and wherein collocated motion vectors are excluded when yColBR is greater than botBoundaryPos or xColBr is greater than rightBoundaryPos.

6. The method of claim 1 , wherein the current block is a luma block of luma samples.

7. The method of claim 1 , wherein the current motion vector is a temporal luma motion vector pointing to reference luma samples in a reference block, and wherein the current block is decoded based on the reference luma samples.

8. A method implemented in an encoder, the method comprising:

partitioning, by a processor of the encoder, a video sequence into a current picture, the current picture into a sub-picture, and the sub-picture into a current block;

determining, by the processor, to encode the current block according to inter-prediction;

obtaining, by the processor, a plurality of coded blocks containing candidate motion vectors for the current block of the sub-picture, the plurality of coded blocks including a collocated block from a different picture than the current picture;

deriving, by the processor, a candidate list of candidate motion vectors for the current block by excluding collocated motion vectors from the candidate list when the collocated motion vectors are included in the collocated block, when the collocated motion vectors point outside of the sub-picture, and when a flag is set to indicate the sub-picture is treated as a picture;

selecting, by the processor, a current motion vector for the current block from the candidate list of candidate motion vectors;

encoding, by the processor, the current block into a bitstream based on the current motion vector; and

storing, by a memory coupled to the processor, the bitstream for communication toward a decoder.

9. The method of claim 8 , further comprising encoding, by the processor, the flag into a sequence parameter set (SPS) in the bitstream, wherein the flag is denoted as a subpic_treated_as_pic_flag[i], and wherein i is an index of the sub-picture.

10. The method of claim 9 , wherein the subpic_treated_as_pic_flag[i] is set equal to one to specify that an i-th sub-picture of each coded picture in a coded video sequence (CVS) is treated as a picture in an encoding process exclusive of in-loop filtering operations.

11. The method of claim 8 , wherein deriving the candidate list of candidate motion vectors for the current block is performed according to temporal luma motion vector prediction.

12. The method of claim 11 , wherein temporal luma motion vector prediction is performed according to:

xColBr=xCb+cb Width;

yColBr=yCb+cb Height;

rightBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicRightBoundaryPos: pic_width_in_luma_samples−1; and

botBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicBotBoundaryPos: pic_height_in_luma_samples−1,

where xColBr and yColBR specify a location of the collocated block, xCb and yCb specify a top left sample of the current block relative to a top left sample of the current picture, cbWidth is a width of the current block, cbHeight is a height of the current block, SubPicRightBoundaryPos is a position of a right boundary of the sub-picture, SubPicBotBoundaryPos is a position of a bottom boundary of the sub-picture, pic_widthin_luma_samples is a width of the current picture measured in luma samples, pic_height_in_luma_samples is a height of the current picture measured in luma samples, botBoundaryPos is a computed position of the bottom boundary of the sub-picture, rightBoundaryPos is a computed position of the right boundary of the sub-picture, SubPicIdx is an index of the sub-picture, and wherein collocated motion vectors are excluded when yColBR is greater than botBoundaryPos or xColBr is greater than rightBoundaryPos.

13. The method of claim 8 , wherein the current block is a luma block of luma samples.

14. The method of claim 8 , wherein the current motion vector is a temporal luma motion vector pointing to reference luma samples in a reference block, and wherein the current block is encoded based on the reference luma samples.

15. A decoder comprising:

a receiver configured to receive a current picture including a sub-picture with a current block coded in an inter-prediction mode; and

a processor coupled to the receiver and configured to:

derive a motion vector predictor candidate list for the current block by excluding a collocated motion vector when the collocated motion vector points outside of the sub-picture and when a flag is set to indicate the sub-picture is treated as a picture, wherein the collocated motion vector is included in a collocated block from a collocated picture;

determine a current motion vector for the current block from the motion vector predictor candidate list; and

decode the current block based on the current motion vector.

16. The decoder of claim 15 , wherein the processor is further configured to obtain the flag from a sequence parameter set (SPS), and wherein the flag is denoted as a subpic_treated_as_pic_flag[i], and wherein i is an index of the sub-picture.

17. The decoder of claim 16 , wherein the subpic_treated_as_pic_flag[i] is set equal to one to specify that an i-th sub-picture of each coded picture in a coded video sequence (CVS) is treated as a picture in a decoding process excluding in-loop filtering operations.

18. The decoder of claim 17 , wherein deriving the motion vector predictor candidate list for the current block is performed according to temporal luma motion vector prediction.

19. The decoder of claim 18 , wherein temporal luma motion vector prediction is performed according to:

xColBr=xCb+cb Width;

yColBr=yCb+cb Height;

rightBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicRightBoundaryPos: pic_width_in_luma_samples−1; and

botBoundaryPos=subpic_treated_as_pic_flag[SubPicIdx]? SubPicBotBoundaryPos: pic_height_in_luma_samples−1,

where xColBr and yColBR specify a location of the collocated block, xCb and yCb specify a top left sample of the current block relative to a top left sample of the current picture, cbWidth is a width of the current block, cbHeight is a height of the current block, SubPicRightBoundaryPos is a position of a right boundary of the sub-picture, SubPicBotBoundaryPos is a position of a bottom boundary of the sub-picture, pic_widthin_luma_samples is a width of the current picture measured in luma samples, pic_height_in_luma_samples is a height of the current picture measured in luma samples, botBoundaryPos is a computed position of the bottom boundary of the sub-picture, rightBoundaryPos is a computed position of the right boundary of the sub-picture, SubPicIdx is an index of the sub-picture, and wherein collocated motion vectors are excluded when yColBR is greater than botBoundaryPos or xColBr is greater than rightBoundaryPos.

20. The decoder of claim 19 , wherein the current block is a luma block of luma samples.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2023
From: FUTUREWEI TECHNOLOGIES, INC.
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 064499/0721 →
Continuity (4)
Continuation PCTUS2020022082 · Mar 11, 2020
Provisional Application 62826659 · Mar 29, 2019
Provisional Application 62816751 · Mar 11, 2019
Related Publication 20210409684A1 · Dec 30, 2021
Cited By (6)
US 12,225,207 US 12,267,490 US 12,294,699 US 12,381,928 US 12,483,615 US 12,750,481