Block vector storing and tool harmonization for block vector related video coding
A method of encoding or decoding video data includes storing a block vector (BV) for a current block in a history BV list for encoding or decoding a subsequent block, wherein the current block is encoded or decoded in intra temporal motion vector prediction (IntraTMP) mode, and wherein the history BV list includes BVs for blocks that do not neighbor the subsequent block; deriving a candidate list of BVs for the subsequent block based on BVs from the history BV list that includes the BV for the current block; and encoding or decoding the subsequent block based on the candidate list of BVs.
1 . A method of encoding or decoding video data, the method comprising:
storing a block vector (BV) for a current block in a history BV list for encoding or decoding a subsequent block, wherein the current block is encoded or decoded in intra temporal motion vector prediction (IntraTMP) mode, and wherein the history BV list includes BVs for blocks that do not neighbor the subsequent block;
deriving a candidate list of BVs for the subsequent block based on BVs from the history BV list that includes the BV for the current block; and
encoding or decoding the subsequent block based on the candidate list of BVs.
2 . The method of claim 1 , wherein deriving the candidate list of BVs for the subsequent block comprises:
adding BVs from blocks neighboring the subsequent block to an initial candidate list;
adding BVs from the history BV list to the initial candidate list;
determining template matching costs for BVs in the initial candidate list; and
deriving the candidate list of BVs based on the template matching costs for the BVs in the initial candidate list.
3 . The method of claim 1 , wherein storing the BV for the current block comprises:
one of clipping or rounding an actual BV for the current block to generate a clipped or rounded BV for the current block; and
storing the clipped or rounded BV for the current block.
4 . The method of claim 1 , wherein the current block is not a neighboring block of the subsequent block.
5 . The method of claim 1 , wherein the subsequent block is encoded or to be decoded in IntraTMP mode or intra block copy (IBC) mode.
6 . The method of claim 1 , further comprising:
utilizing each of the BVs in the candidate list of BVs as a starting BV for a template matching process associated with each of the BVs; and
determining a prediction signal for the subsequent block based on the template matching process associated with each of the BVs,
wherein encoding or decoding the subsequent block comprises encoding or decoding the subsequent block based on the prediction signal.
7 . The method of claim 1 , wherein an order of BVs in the history BV list is based on coding order of the blocks including the current block.
8 . The method of claim 1 , wherein encoding or decoding the subsequent block comprises decoding the subsequent block, wherein decoding the subsequent block comprises:
determining a prediction signal based on at least one BV in the candidate list of BVs;
receiving residual information indicative of a difference between the prediction signal and the subsequent block; and
reconstructing the subsequent block based on the prediction signal and the residual information.
9 . The method of claim 1 , wherein encoding or decoding the subsequent block comprises encoding the subsequent block, wherein encoding the subsequent block comprises:
determining a prediction signal, wherein at least one BV in the candidate list of BVs identifies or is used to identify a block used to derive the prediction signal;
determining residual information indicative of a difference between the prediction signal and the subsequent block; and
signaling the residual information.
10 . A device for encoding or decoding video data, the device comprising:
one or more memories configured to store the video data; and
processing circuitry coupled to the one or more memories, wherein the processing circuitry is configured to:
store a block vector (BV) for a current block in a history BV list for encoding or decoding a subsequent block, wherein the current block is encoded or decoded in intra temporal motion vector prediction (IntraTMP) mode, and wherein the history BV list includes BVs for blocks that do not neighbor the subsequent block;
derive a candidate list of BVs for the subsequent block based on BVs from the history BV list that includes the BV for the current block; and
encode or decode the subsequent block based on the candidate list of BVs.
11 . The device of claim 10 , wherein to derive the candidate list of BVs for the subsequent block, the processing circuitry is configured to:
add BVs from blocks neighboring the subsequent block to an initial candidate list;
add BVs from the history BV list to the initial candidate list;
determine template matching costs for BVs in the initial candidate list; and
derive the candidate list of BVs based on the template matching costs for the BVs in the initial candidate list.
12 . The device of claim 10 , wherein to store the BV for the current block, the processing circuitry is configured to:
one of clip or round an actual BV for the current block to generate a clipped or rounded BV for the current block; and
store the clipped or rounded BV for the current block.
13 . The device of claim 10 , wherein the current block is not a neighboring block of the subsequent block.
14 . The device of claim 10 , wherein the subsequent block is encoded or to be decoded in IntraTMP mode or intra block copy (IBC) mode.
15 . The device of claim 10 , wherein the processing circuitry is configured to:
utilize each of the BVs in the candidate list of BVs as a starting BV for a template matching process associated with each of the BVs; and
determine a prediction signal for the subsequent block based on the template matching process associated with each of the BVs,
wherein to encode or decode the subsequent block, the processing circuitry is configured to encode or decode the subsequent block based on the prediction signal.
16 . The device of claim 10 , wherein an order of BVs in the history BV list is based on coding order of the blocks including the current block.
17 . The device of claim 10 , wherein to encode or decode the subsequent block comprises, the processing circuitry is configured to decode the subsequent block, wherein to decode the subsequent block, the processing circuitry is configured to:
determine a prediction signal based on at least one BV in the candidate list of BVs;
receive residual information indicative of a difference between the prediction signal and the subsequent block; and
reconstruct the subsequent block based on the prediction signal and the residual information.
18 . The device of claim 10 , wherein to encode or decode the subsequent block, the processing circuitry is configured to encode the subsequent block, wherein to encode the subsequent block, the processing circuitry is configured to:
determine a prediction signal, wherein at least one BV in the candidate list of BVs identifies or is used to identify a block used to derive the prediction signal;
determine residual information indicative of a difference between the prediction signal and the subsequent block; and
signal the residual information.
19 . The device of claim 10 , wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver device, or a set-top box.
20 . A computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to:
store a block vector (BV) for a current block in a history BV list for encoding or decoding a subsequent block, wherein the current block is encoded or decoded in intra temporal motion vector prediction (IntraTMP) mode, and wherein the history BV list includes BVs for blocks that do not neighbor the subsequent block;
derive a candidate list of BVs for the subsequent block based on BVs from the history BV list that includes the BV for the current block; and
encode or decode the subsequent block based on the candidate list of BVs.