`V4L2_PIX_FMT_NV12M`

— Variation of `V4L2_PIX_FMT_NV12`

with planes
non contiguous in memory.

This is a multi-planar, two-plane version of the YUV 4:2:0 format.
The three components are separated into two sub-images or planes.
`V4L2_PIX_FMT_NV12M`

differs from ```
V4L2_PIX_FMT_NV12
```

in that the two planes are non-contiguous in memory, i.e. the chroma
plane do not necessarily immediately follows the luma plane.
The luminance data occupies the first plane. The Y plane has one byte per pixel.
In the second plane there is a chrominance data with alternating chroma samples.
The CbCr plane is the same width, in bytes, as the Y plane (and of the image),
but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example,
Cb_{0}/Cr_{0} belongs to
Y'_{00}, Y'_{01},
Y'_{10}, Y'_{11}.

`V4L2_PIX_FMT_NV12M`

is intended to be
used only in drivers and applications that support the multi-planar API,
described in the section called “Single- and multi-planar APIs”.

If the Y plane has pad bytes after each row, then the CbCr plane has as many pad bytes after its rows.

**Example 2.26. V4L2_PIX_FMT_NV12M 4 × 4 pixel image**

**Byte Order. **Each cell is one byte.

start0 + 0: | Y'_{00} | Y'_{01} | Y'_{02} | Y'_{03} |

start0 + 4: | Y'_{10} | Y'_{11} | Y'_{12} | Y'_{13} |

start0 + 8: | Y'_{20} | Y'_{21} | Y'_{22} | Y'_{23} |

start0 + 12: | Y'_{30} | Y'_{31} | Y'_{32} | Y'_{33} |

start1 + 0: | Cb_{00} | Cr_{00} | Cb_{01} | Cr_{01} |

start1 + 4: | Cb_{10} | Cr_{10} | Cb_{11} | Cr_{11} |

**Color Sample Location. **

0 | 1 | 2 | 3 | ||||

0 | Y | Y | Y | Y | |||

C | C | ||||||

1 | Y | Y | Y | Y | |||

2 | Y | Y | Y | Y | |||

C | C | ||||||

3 | Y | Y | Y | Y |