BVD sign inference in IBC based on BV and BVP components
A decoder receives, from a bitstream for a video, an indication of a block vector predictor (BVP) for a block vector (BV). Each of the BV, the BVP, and a block vector difference (BVD) associated with the BV and the BVP has two components in two respective directions. The decoder determines a sign of a component of the BVD in one direction of the two directions based on: a component of the BV in the other direction of the two directions, and a component of the BVP in the one direction. The decoder further decodes the BV based on the BVP and the BVD determined based on the sign, and generates, based on the BV, an intra block compensated prediction of a current block. The decoder decodes the current block based on the intra block compensated prediction and a residual of the current block.
1 . A method comprising:
receiving, from a bitstream for a video, an indication of a block vector predictor (BVP) for a block vector (BV), wherein each of the BV, the BVP, and a block vector difference (BVD) associated with the BV and the BVP has two components in two respective directions;
determining a sign of a component of the BVD in one direction of the two directions based on:
a component of the BV in another direction of the two directions, and
a component of the BVP in the one direction;
decoding the BV based on the BVP and the BVD determined based on the sign;
generating, based on the BV, an intra block compensated prediction of a current block; and
decoding the current block based on the intra block compensated prediction and a residual of the current block.
2 . The method of claim 1 , wherein the determining the sign of a component of the BVD further comprises:
determining that the sign of the component of the BVD in a horizontal direction is negative, based on:
the one direction being the horizontal direction and the component of the BVP in the horizontal direction having a positive sign; and
the another direction being a vertical direction, and the component of the BV in the vertical direction having a positive sign.
3 . The method of claim 1 , wherein the determining the sign of the component of the BVD further comprises:
determining that the sign of the component of the BVD in a vertical direction is negative, based on:
the one direction being the vertical direction and the component of the BVP in the vertical direction having a positive sign; and
the another direction being a horizontal direction, and the component of the BV in the horizontal direction having a positive sign.
4 . The method of claim 1 , wherein the decoding the BV based on the BVP and the BVD is performed without extracting, from the bitstream, an indication of the sign of the component of the BVD.
5 . The method of claim 4 , wherein the decoding the BV based on the BVP and the BVD without extracting the indication of the sign of the component of the BVD from the bitstream is further based on an indication of an intra block copy prediction mode.
6 . The method of claim 1 , further comprising receiving, from the bitstream, a magnitude of the component of the BVD, wherein the BVD is determined further based on the magnitude of the component.
7 . The method of claim 1 , further comprising receiving, from the bitstream, a magnitude and a sign of a second component of the BVD in the another direction, wherein the component of the BV in the another direction is determined based on the magnitude and the sign of the second component of the BVD.
8 . A decoder comprising:
one or more processors; and
memory storing instructions that, when executed by the one or more processors, cause the decoder to:
receive, from a bitstream for a video, an indication of a block vector predictor (BVP) for a block vector (BV), wherein each of the BV, the BVP, and a block vector difference (BVD) associated with the BV and the BVP has two components in two respective directions;
determine a sign of a component of the BVD in one direction of the two directions based on:
a component of the BV in another direction of the two directions, and
a component of the BVP in the one direction;
determine the BVD based on the sign of the component;
decode the BV based on the BVP and the BVD; and
decode a current block based on the BV.
9 . The decoder of claim 8 , wherein the determining the sign of a component of the BVD further comprises:
determining that the sign of the component of the BVD in a horizontal direction is negative based on:
the one direction being the horizontal direction and the component of the BVP in the horizontal direction having a positive sign; and
the another direction being a vertical direction, and the component of the BV in the vertical direction having a positive sign.
10 . The decoder of claim 8 , wherein the determining the sign of the component of the BVD further comprises:
determining that the sign of the component of the BVD in a vertical direction is negative based on:
the one direction being the vertical direction and the component of the BVP in the vertical direction having a positive sign; and
the another direction being a horizontal direction, and the component of the BV in the horizontal direction having a positive sign.
11 . The decoder of claim 8 , wherein the decoding the BV based on the BVP and the BVD is performed without extracting, from the bitstream, an indication of the sign of the component of the BVD.
12 . The decoder of claim 11 , wherein the decoding the BV based on the BVP and the BVD without extracting the indication of the sign of the component of the BVD from the bitstream is further based on an indication of an intra block copy prediction mode.
13 . The decoder of claim 8 , wherein the instructions, when executed by the one or more processors, further cause the decoder to receive, from the bitstream, a magnitude of the component of the BVD, wherein the BVD is determined further based on the magnitude of the component.
14 . The decoder of claim 8 , wherein the instructions, when executed by the one or more processors, further cause the decoder to receive, from the bitstream, a magnitude and a sign of a second component of the BVD in the another direction, wherein the component of the BV in the another direction is determined based on the magnitude and the sign of the second component of the BVD.
15 . A non-transitory computer-readable medium storing instructions that, when executed by one or more processors of a decoder, cause the decoder to:
receive, from a bitstream for a video, an indication of a block vector predictor (BVP) for a block vector (BV), each of the BV, the BVP, and a block vector difference (BVD) associated with the BV and BVP has two components in two respective directions;
determine a sign of a component of the BVD in one direction of the two directions based on:
a component of the BV in another direction of the two directions, and
a component of the BVP in the one direction;
decode the BV based on the BVP and the BVD determined based on the sign of the component; and
decode a current block based on the BV.
16 . The non-transitory computer-readable medium of claim 15 , wherein the determining the sign of a component of the BVD further comprises:
determining that the sign of the component of the BVD in a horizontal direction is negative, based on:
the one direction being the horizontal direction and the component of the BVP in the horizontal direction having a positive sign; and
the another direction being a vertical direction, and the component of the BV in the vertical direction having a positive sign.
17 . The non-transitory computer-readable medium of claim 15 , wherein the determining the sign of the component of the BVD further comprises:
determining that the sign of the component of the BVD in a vertical direction is negative, based on:
the one direction being the vertical direction and the component of the BVP in the vertical direction having a positive sign; and
the another direction being a horizontal direction, and the component of the BV in the horizontal direction having a positive sign.
18 . The non-transitory computer-readable medium of claim 15 , wherein the decoding the BV based on the BVP and the BVD is performed without extracting, from the bitstream, an indication of the sign of the component of the BVD.
19 . The non-transitory computer-readable medium of claim 15 , wherein the instructions, when executed by the one or more processors, further cause the decoder to receive, from the bitstream, a magnitude of the component of the BVD, wherein the BVD is determined further based on the magnitude of the component.
20 . The non-transitory computer-readable medium of claim 15 , wherein the instructions, when executed by the one or more processors, further cause the decoder to receive, from the bitstream, a magnitude and a sign of a second component of the BVD in the another direction, wherein the component of the BV in the another direction is determined based on the magnitude and the sign of the second component of the BVD.