# US 9,521,389 B2 · Derived disparity vector in 3D video coding

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,521,389 B2
- Document ID: US9521389B2
- Status: Granted
- Kind: B2
- Application number: 14/198,442
- Filed: 2014-03-05
- Published: 2014-09-11
- Granted: 2016-12-13
- Earliest claimed: 2013-03-06
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Ying Chen; Li Zhang
- Web page: https://patentgrep.com/patent/US9521389B2

## CPC

- H04N 13/106: Processing image signals (for multi-view video sequence encoding H04N19/597)
- H04N 19/56: Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
- H04N 19/597: specially adapted for multi-view video sequence encoding
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A video coder stores only one derived disparity vector (DDV) for a slice of a current picture of the video data. The video coder uses the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block. Furthermore, the video coder stores, as the DDV for the slice, the disparity vector for the particular block.

## Claims

### Claim 1

A method of decoding video data, the method comprising:
storing only one derived disparity vector (DDV) for a slice of a current picture of the video data, wherein the slice includes multiple blocks;
using the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block, wherein the particular block is one of the blocks of the slice, wherein using the DDV for the slice in the NBDV derivation process comprises:
determining whether a temporal neighboring block has a disparity motion vector;
responsive to determining that the temporal neighboring block has a disparity motion vector, deriving the disparity vector for the particular block based on the disparity motion vector of the temporal neighboring block;
responsive to determining that the temporal neighboring block does not have a disparity motion vector, determining whether any spatial neighboring block in a plurality of spatial neighboring blocks has a disparity motion vector;
responsive to determining that a particular spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, deriving the disparity vector for the particular block based on the disparity motion vector of the particular spatial neighboring block; and
responsive to determining that no spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, deriving the disparity vector for the particular block as the DDV for the slice; and
storing, as the DDV for the slice, the disparity vector for the particular block.

### Claim 2 (depends on 1)

The method of claim 1, further comprising decoding the particular block based at least in part on the disparity vector for the particular block.

### Claim 3 (depends on 1)

The method of claim 1, wherein the particular block is a first block, and the method further comprises, after storing, as the DDV for the slice, the disparity vector for the first block:
using the DDV for the slice in an NBDV derivation process to determine a disparity vector for a second block, wherein the second block is one of the blocks of the slice; and
decoding the second block based at least in part on the disparity vector for the second block.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first block is immediately to the left of the second block.

### Claim 5 (depends on 3)

The method of claim 3, wherein the first block is a macroblock and the second block is a macroblock.

### Claim 6 (depends on 3)

The method of claim 3, wherein the first block and the second block are coding units (CUs), the first block and the second block are prediction units (PUs), or the first block and the second block are largest coding units (LCUs).

### Claim 7 (depends on 1)

The method of claim 1, wherein using the DDV for the slice in the NBDV derivation process comprises using the DDV for the slice, a disparity motion vector for a temporal neighboring block, and a disparity motion vector for a spatial neighboring block to derive the disparity vector for the particular block.

### Claim 8 (depends on 1)

The method of claim 1, further comprising updating the DDV for the slice once for each block of the slice that is coded after the particular block.

### Claim 9 (depends on 1)

The method of claim 1, wherein storing, as the DDV for the slice, the disparity vector for the particular block comprises updating the DDV for the slice to specify the disparity vector for the particular block responsive to a condition being satisfied, the condition being one of:
the particular block is coded using inter-view motion prediction;
the particular block is inter coded;
the slice is inter coded;
the particular block is coded with skip mode or direct mode;
a magnitude of the disparity vector for the particular block is larger than a magnitude of the DDV for the slice; and
the DDV for the slice is non-zero.

### Claim 10 (depends on 1)

The method of claim 1, further comprising refining, based on depth pixels in a depth view component, the disparity vector for the particular block,
wherein storing, as the DDV for the slice, the disparity vector for the particular block comprises updating the DDV for the slice to specify the refined disparity vector for the particular block.

### Claim 11 (depends on 1)

The method of claim 1, wherein the method further comprises not storing implicit disparity vectors for any of the blocks of the slice.

### Claim 12 (depends on 1)

The method of claim 1, the method being executable on a wireless communication device, wherein the device comprises:
a memory configured to store video data;
a processor configured to execute instructions to process the video data stored in said memory;
a receiver configured to receive a bitstream that includes a sequence of bits that forms a representation of coded pictures of the video data.

### Claim 13 (depends on 12)

The method of claim 12, wherein the wireless communication device is a cellular telephone and the bitstream is received by the receiver and modulated according to a cellular communication standard.

### Claim 14

A method of encoding video data, the method comprising:
storing only one derived disparity vector (DDV) for a slice of a current picture of the video data, wherein the slice includes multiple blocks;
using the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block, wherein the particular block is one of the blocks of the slice, wherein using the DDV for the slice in the NBDV derivation process comprises:
determining whether a temporal neighboring block has a disparity motion vector;
responsive to determining that the temporal neighboring block has a disparity motion vector, deriving the disparity vector for the particular block based on the disparity motion vector of the temporal neighboring block;
responsive to determining that the temporal neighboring block does not have a disparity motion vector, determining whether any spatial neighboring block in a plurality of spatial neighboring blocks has a disparity motion vector;
responsive to determining that a particular spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, deriving the disparity vector for the particular block based on the disparity motion vector of the particular spatial neighboring block; and
responsive to determining that no spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, deriving the disparity vector for the particular block as the DDV for the slice; and
storing, as the DDV for the slice, the disparity vector for the particular block.

### Claim 15 (depends on 14)

The method of claim 14, further comprising encoding the particular block based at least in part on the disparity vector for the particular block.

### Claim 16 (depends on 14)

The method of claim 14, wherein the particular block is a first block, and the method further comprises, after storing, as the DDV for the slice, the disparity vector for the first block:
using the DDV for the slice in an NBDV derivation process to determine a disparity vector for a second block, wherein the second block is one of the blocks of the slice; and
encoding the second block based at least in part on the disparity vector for the second block.

### Claim 17 (depends on 16)

The method of claim 16, wherein the first block is immediately to the left of the second block.

### Claim 18 (depends on 16)

The method of claim 16, wherein the first block is a macroblock and the second block is a macroblock.

### Claim 19 (depends on 16)

The method of claim 16, wherein the first block and the second block are coding units (CUs), the first block and the second block are prediction units (PUs), or the first block and the second block are largest coding units (LCUs).

### Claim 20 (depends on 14)

The method of claim 14, wherein using the DDV for the slice in the NBDV derivation process for the particular block comprises using the DDV for the slice, a disparity motion vector for a temporal neighboring block, and a disparity motion vector for a spatial neighboring block to derive the disparity vector for the particular block.

### Claim 21 (depends on 14)

The method of claim 14, further comprising updating the DDV for the slice once for each block of the slice that is coded after the particular block.

### Claim 22 (depends on 14)

The method of claim 14, wherein storing, as the DDV for the slice, the disparity vector for the particular block comprises updating the DDV for the slice to specify the disparity vector for the particular block responsive to a condition being satisfied, the condition being one of:
the particular block is coded using inter-view motion prediction;
the particular block is inter coded;
the slice is inter coded;
the particular block is coded with skip mode or direct mode;
a magnitude of the disparity vector for the particular block is larger than a magnitude of the DDV for the slice; and
the DDV for the slice is non-zero.

### Claim 23 (depends on 14)

The method of claim 14, further comprising refining, based on depth pixels in a depth view component, the disparity vector for the particular block,
wherein storing, as the DDV for the slice, the disparity vector for the particular block comprises updating the DDV for the slice to specify the refined disparity vector for the particular block.

### Claim 24 (depends on 14)

The method of claim 14, wherein the method further comprises not storing implicit disparity vectors for any of the blocks of the slice.

### Claim 25

A video coding device comprising:
a memory that stores video data; and
one or more processors configured to:
store only one derived disparity vector (DDV) for a slice of a current picture of the video data, wherein the slice includes multiple blocks;
use the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block, wherein the particular block is one of the blocks of the slice, wherein the one or more processors are configured such that, as part of using the DDV for the slice in the NBDV derivation process, the one or more processors:
determine whether a temporal neighboring block has a disparity motion vector:
responsive to determining that the temporal neighboring block has a disparity motion vector, derive the disparity vector for the particular block based on the disparity motion vector of the temporal neighboring block;
responsive to determining that the temporal neighboring block does not have a disparity motion vector, determine whether any spatial neighboring block in a plurality of spatial neighboring blocks has a disparity motion vector;
responsive to determining that a particular spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, derive the disparity vector for the particular block based on the disparity motion vector of the particular spatial neighboring block; and
responsive to determining that no spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, derive the disparity vector for the particular block as the DDV for the slice; and
store, as the DDV for the slice, the disparity vector for the particular block.

### Claim 26 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to encode the particular block based at least in part on the disparity vector for the particular block.

### Claim 27 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to decode the particular block based at least in part on the disparity vector for the particular block.

### Claim 28 (depends on 25)

The video coding device of claim 25, wherein the particular block is a first block, and the one or more processors are further configured such that after, after storing, as the DDV for the slice, the disparity vector for the first block, the one or more processors:
use the DDV for the slice in an NBDV derivation process to determine a disparity vector for a second block, wherein the second block is one of the blocks of the slice; and
coding the second block based at least in part on the disparity vector for the second block.

### Claim 29 (depends on 28)

The video coding device of claim 28, wherein the first block is immediately to the left of the second block.

### Claim 30 (depends on 28)

The video coding device of claim 28, wherein the first block is a macroblock and the second block is a macroblock.

### Claim 31 (depends on 28)

The video coding device of claim 28, wherein the first block and the second block are coding units (CUs), the first block and the second block are prediction units (PUs), or the first block and the second block are largest coding units (LCUs).

### Claim 32 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to use the DDV for the slice, a disparity motion vector for a temporal neighboring block, and a disparity motion vector for a spatial neighboring block to derive the disparity vector for the particular block.

### Claim 33 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to update the DDV once for each block of the slice that is coded after the first block.

### Claim 34 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to update the DDV for the slice to specify the disparity vector for the particular block responsive to a condition being satisfied, the condition being one of:
the particular block is coded using inter-view motion prediction;
the particular block is inter coded;
the slice is inter coded;
the particular block is coded with skip mode or direct mode;
a magnitude of the disparity vector for the particular block is larger than a magnitude of the DDV for the slice; and
the DDV for the slice is non-zero.

### Claim 35 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured to refine, based on depth pixels in a depth view component, the disparity vector for the particular block; and
wherein the one or more processors are configured to update the DDV for the slice to specify the refined disparity vector for the particular block.

### Claim 36 (depends on 25)

The video coding device of claim 25, wherein the one or more processors are configured not to store implicit disparity vectors for any block of the slice.

### Claim 37 (depends on 25)

The video coding device of claim 25, wherein the device is a wireless communication device, further comprising:
a receiver configured to receive a bitstream that includes a sequence of bits that forms a representation of coded pictures of the video data.

### Claim 38 (depends on 37)

The video coding device of claim 37, wherein the wireless communication device is a cellular telephone and the bitstream is received by the receiver and modulated according to a cellular communication standard.

### Claim 39

A video coding device configured to code video data, the video coding device comprising:
means for storing only one derived disparity vector (DDV) for a slice of a current picture of the video data, wherein the slice includes multiple blocks;
means for using the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block, wherein the particular block is one of the blocks of the slice, wherein the means for using the DDV for the slice in the NBDV derivation process comprises:
means for determining whether a temporal neighboring block has a disparity motion vector;
means for deriving, responsive to determining that the temporal neighboring block has a disparity motion vector, the disparity vector for the particular block based on the disparity motion vector of the temporal neighboring block;
means for determining, responsive to determining that the temporal neighboring block does not have a disparity motion vector, whether any spatial neighboring block in a plurality of spatial neighboring blocks has a disparity motion vector;
means for deriving, responsive to determining that a particular spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, the disparity vector for the particular block based on the disparity motion vector of the particular spatial neighboring block; and
means for deriving, responsive to determining that no spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, the disparity vector for the particular block as the DDV for the slice; and
means for storing, as the DDV for the slice, the disparity vector for the particular block.

### Claim 40

A non-transitory computer-readable medium having instructions stored thereon that, when executed, cause one or more processors of a video coding device to:
store only one derived disparity vector (DDV) for a slice of a current picture of the video data, wherein the slice includes multiple blocks;
use the DDV for the slice in a Neighboring Block Based Disparity Vector (NBDV) derivation process to determine a disparity vector for a particular block, wherein the particular block is one of the blocks of the slice, wherein as part of causing the one or more processors to use the DDV for the slice in the NBDV derivation process, the instructions cause the one or more processors to:
determine whether a temporal neighboring block has a disparity motion vector;
responsive to determining that the temporal neighboring block has a disparity motion vector, derive the disparity vector for the particular block based on the disparity motion vector of the temporal neighboring block;
responsive to determining that the temporal neighboring block does not have a disparity motion vector, determine whether any spatial neighboring block in a plurality of spatial neighboring blocks has a disparity motion vector;
responsive to determining that a particular spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, derive the disparity vector for the particular block based on the disparity motion vector of the particular spatial neighboring block; and
responsive to determining that no spatial neighboring block in the plurality of spatial neighboring blocks has a disparity motion vector, derive the disparity vector for the particular block as the DDV for the slice; and
store, as the DDV for the slice, the disparity vector for the particular block.
