1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 254f38fcaSMauro Carvalho Chehab 354f38fcaSMauro Carvalho Chehab.. _yuv-formats: 454f38fcaSMauro Carvalho Chehab 554f38fcaSMauro Carvalho Chehab*********** 654f38fcaSMauro Carvalho ChehabYUV Formats 754f38fcaSMauro Carvalho Chehab*********** 854f38fcaSMauro Carvalho Chehab 954f38fcaSMauro Carvalho ChehabYUV is the format native to TV broadcast and composite video signals. It 1054f38fcaSMauro Carvalho Chehabseparates the brightness information (Y) from the color information (U 1154f38fcaSMauro Carvalho Chehaband V or Cb and Cr). The color information consists of red and blue 1254f38fcaSMauro Carvalho Chehab*color difference* signals, this way the green component can be 1354f38fcaSMauro Carvalho Chehabreconstructed by subtracting from the brightness component. See 1454f38fcaSMauro Carvalho Chehab:ref:`colorspaces` for conversion examples. YUV was chosen because 1554f38fcaSMauro Carvalho Chehabearly television would only transmit brightness information. To add 1654f38fcaSMauro Carvalho Chehabcolor in a way compatible with existing receivers a new signal carrier 17e3ae4c20SLaurent Pinchartwas added to transmit the color difference signals. 18e3ae4c20SLaurent Pinchart 19e3ae4c20SLaurent Pinchart 20e3ae4c20SLaurent PinchartSubsampling 21e3ae4c20SLaurent Pinchart=========== 22e3ae4c20SLaurent Pinchart 23e3ae4c20SLaurent PinchartYUV formats commonly encode images with a lower resolution for the chroma 24e3ae4c20SLaurent Pinchartcomponents than for the luma component. This compression technique, taking 25e3ae4c20SLaurent Pinchartadvantage of the human eye being more sensitive to luminance than color 26e3ae4c20SLaurent Pinchartdifferences, is called chroma subsampling. 27e3ae4c20SLaurent Pinchart 28e3ae4c20SLaurent PinchartWhile many combinations of subsampling factors in the horizontal and vertical 29e3ae4c20SLaurent Pinchartdirection are possible, common factors are 1 (no subsampling), 2 and 4, with 30e3ae4c20SLaurent Pincharthorizontal subsampling always larger than or equal to vertical subsampling. 31e3ae4c20SLaurent PinchartCommon combinations are named as follows. 32e3ae4c20SLaurent Pinchart 33e3ae4c20SLaurent Pinchart- `4:4:4`: No subsampling 34e3ae4c20SLaurent Pinchart- `4:2:2`: Horizontal subsampling by 2, no vertical subsampling 35e3ae4c20SLaurent Pinchart- `4:2:0`: Horizontal subsampling by 2, vertical subsampling by 2 36e3ae4c20SLaurent Pinchart- `4:1:1`: Horizontal subsampling by 4, no vertical subsampling 37e3ae4c20SLaurent Pinchart- `4:1:0`: Horizontal subsampling by 4, vertical subsampling by 4 38e3ae4c20SLaurent Pinchart 39e3ae4c20SLaurent PinchartSubsampling the chroma component effectively creates chroma values that can be 40e3ae4c20SLaurent Pinchartlocated in different spatial locations: 41e3ae4c20SLaurent Pinchart 42e3ae4c20SLaurent Pinchart- .. _yuv-chroma-centered: 43e3ae4c20SLaurent Pinchart 44e3ae4c20SLaurent Pinchart The subsampled chroma value may be calculated by simply averaging the chroma 45e3ae4c20SLaurent Pinchart value of two consecutive pixels. It effectively models the chroma of a pixel 46e3ae4c20SLaurent Pinchart sited between the two original pixels. This is referred to as centered or 47e3ae4c20SLaurent Pinchart interstitially sited chroma. 48e3ae4c20SLaurent Pinchart 49e3ae4c20SLaurent Pinchart- .. _yuv-chroma-cosited: 50e3ae4c20SLaurent Pinchart 51e3ae4c20SLaurent Pinchart The other option is to subsample chroma values in a way that place them in 52e3ae4c20SLaurent Pinchart the same spatial sites as the pixels. This may be performed by skipping every 53e3ae4c20SLaurent Pinchart other chroma sample (creating aliasing artifacts), or with filters using an 54e3ae4c20SLaurent Pinchart odd number of taps. This is referred to as co-sited chroma. 55e3ae4c20SLaurent Pinchart 56e3ae4c20SLaurent PinchartThe following examples show different combination of chroma siting in a 4x4 57e3ae4c20SLaurent Pinchartimage. 58e3ae4c20SLaurent Pinchart 59e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:2 subsampling, interstitially sited 60e3ae4c20SLaurent Pinchart :header-rows: 1 61e3ae4c20SLaurent Pinchart :stub-columns: 1 62e3ae4c20SLaurent Pinchart 63e3ae4c20SLaurent Pinchart * - 64e3ae4c20SLaurent Pinchart - 0 65e3ae4c20SLaurent Pinchart - 66e3ae4c20SLaurent Pinchart - 1 67e3ae4c20SLaurent Pinchart - 68e3ae4c20SLaurent Pinchart - 2 69e3ae4c20SLaurent Pinchart - 70e3ae4c20SLaurent Pinchart - 3 71e3ae4c20SLaurent Pinchart * - 0 72e3ae4c20SLaurent Pinchart - Y 73e3ae4c20SLaurent Pinchart - C 74e3ae4c20SLaurent Pinchart - Y 75e3ae4c20SLaurent Pinchart - 76e3ae4c20SLaurent Pinchart - Y 77e3ae4c20SLaurent Pinchart - C 78e3ae4c20SLaurent Pinchart - Y 79e3ae4c20SLaurent Pinchart * - 1 80e3ae4c20SLaurent Pinchart - Y 81e3ae4c20SLaurent Pinchart - C 82e3ae4c20SLaurent Pinchart - Y 83e3ae4c20SLaurent Pinchart - 84e3ae4c20SLaurent Pinchart - Y 85e3ae4c20SLaurent Pinchart - C 86e3ae4c20SLaurent Pinchart - Y 87e3ae4c20SLaurent Pinchart * - 2 88e3ae4c20SLaurent Pinchart - Y 89e3ae4c20SLaurent Pinchart - C 90e3ae4c20SLaurent Pinchart - Y 91e3ae4c20SLaurent Pinchart - 92e3ae4c20SLaurent Pinchart - Y 93e3ae4c20SLaurent Pinchart - C 94e3ae4c20SLaurent Pinchart - Y 95e3ae4c20SLaurent Pinchart * - 3 96e3ae4c20SLaurent Pinchart - Y 97e3ae4c20SLaurent Pinchart - C 98e3ae4c20SLaurent Pinchart - Y 99e3ae4c20SLaurent Pinchart - 100e3ae4c20SLaurent Pinchart - Y 101e3ae4c20SLaurent Pinchart - C 102e3ae4c20SLaurent Pinchart - Y 103e3ae4c20SLaurent Pinchart 104e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:2 subsampling, co-sited 105e3ae4c20SLaurent Pinchart :header-rows: 1 106e3ae4c20SLaurent Pinchart :stub-columns: 1 107e3ae4c20SLaurent Pinchart 108e3ae4c20SLaurent Pinchart * - 109e3ae4c20SLaurent Pinchart - 0 110e3ae4c20SLaurent Pinchart - 111e3ae4c20SLaurent Pinchart - 1 112e3ae4c20SLaurent Pinchart - 113e3ae4c20SLaurent Pinchart - 2 114e3ae4c20SLaurent Pinchart - 115e3ae4c20SLaurent Pinchart - 3 116e3ae4c20SLaurent Pinchart * - 0 117e3ae4c20SLaurent Pinchart - Y/C 118e3ae4c20SLaurent Pinchart - 119e3ae4c20SLaurent Pinchart - Y 120e3ae4c20SLaurent Pinchart - 121e3ae4c20SLaurent Pinchart - Y/C 122e3ae4c20SLaurent Pinchart - 123e3ae4c20SLaurent Pinchart - Y 124e3ae4c20SLaurent Pinchart * - 1 125e3ae4c20SLaurent Pinchart - Y/C 126e3ae4c20SLaurent Pinchart - 127e3ae4c20SLaurent Pinchart - Y 128e3ae4c20SLaurent Pinchart - 129e3ae4c20SLaurent Pinchart - Y/C 130e3ae4c20SLaurent Pinchart - 131e3ae4c20SLaurent Pinchart - Y 132e3ae4c20SLaurent Pinchart * - 2 133e3ae4c20SLaurent Pinchart - Y/C 134e3ae4c20SLaurent Pinchart - 135e3ae4c20SLaurent Pinchart - Y 136e3ae4c20SLaurent Pinchart - 137e3ae4c20SLaurent Pinchart - Y/C 138e3ae4c20SLaurent Pinchart - 139e3ae4c20SLaurent Pinchart - Y 140e3ae4c20SLaurent Pinchart * - 3 141e3ae4c20SLaurent Pinchart - Y/C 142e3ae4c20SLaurent Pinchart - 143e3ae4c20SLaurent Pinchart - Y 144e3ae4c20SLaurent Pinchart - 145e3ae4c20SLaurent Pinchart - Y/C 146e3ae4c20SLaurent Pinchart - 147e3ae4c20SLaurent Pinchart - Y 148e3ae4c20SLaurent Pinchart 149e3ae4c20SLaurent Pinchart.. flat-table:: 4:2:0 subsampling, horizontally interstitially sited, vertically co-sited 150e3ae4c20SLaurent Pinchart :header-rows: 1 151e3ae4c20SLaurent Pinchart :stub-columns: 1 152e3ae4c20SLaurent Pinchart 153e3ae4c20SLaurent Pinchart * - 154e3ae4c20SLaurent Pinchart - 0 155e3ae4c20SLaurent Pinchart - 156e3ae4c20SLaurent Pinchart - 1 157e3ae4c20SLaurent Pinchart - 158e3ae4c20SLaurent Pinchart - 2 159e3ae4c20SLaurent Pinchart - 160e3ae4c20SLaurent Pinchart - 3 161e3ae4c20SLaurent Pinchart * - 0 162e3ae4c20SLaurent Pinchart - Y 163e3ae4c20SLaurent Pinchart - C 164e3ae4c20SLaurent Pinchart - Y 165e3ae4c20SLaurent Pinchart - 166e3ae4c20SLaurent Pinchart - Y 167e3ae4c20SLaurent Pinchart - C 168e3ae4c20SLaurent Pinchart - Y 169e3ae4c20SLaurent Pinchart * - 1 170e3ae4c20SLaurent Pinchart - Y 171e3ae4c20SLaurent Pinchart - 172e3ae4c20SLaurent Pinchart - Y 173e3ae4c20SLaurent Pinchart - 174e3ae4c20SLaurent Pinchart - Y 175e3ae4c20SLaurent Pinchart - 176e3ae4c20SLaurent Pinchart - Y 177e3ae4c20SLaurent Pinchart * - 2 178e3ae4c20SLaurent Pinchart - Y 179e3ae4c20SLaurent Pinchart - C 180e3ae4c20SLaurent Pinchart - Y 181e3ae4c20SLaurent Pinchart - 182e3ae4c20SLaurent Pinchart - Y 183e3ae4c20SLaurent Pinchart - C 184e3ae4c20SLaurent Pinchart - Y 185e3ae4c20SLaurent Pinchart * - 3 186e3ae4c20SLaurent Pinchart - Y 187e3ae4c20SLaurent Pinchart - 188e3ae4c20SLaurent Pinchart - Y 189e3ae4c20SLaurent Pinchart - 190e3ae4c20SLaurent Pinchart - Y 191e3ae4c20SLaurent Pinchart - 192e3ae4c20SLaurent Pinchart - Y 193e3ae4c20SLaurent Pinchart 194e3ae4c20SLaurent Pinchart.. flat-table:: 4:1:0 subsampling, horizontally and vertically interstitially sited 195e3ae4c20SLaurent Pinchart :header-rows: 1 196e3ae4c20SLaurent Pinchart :stub-columns: 1 197e3ae4c20SLaurent Pinchart 198e3ae4c20SLaurent Pinchart * - 199e3ae4c20SLaurent Pinchart - 0 200e3ae4c20SLaurent Pinchart - 201e3ae4c20SLaurent Pinchart - 1 202e3ae4c20SLaurent Pinchart - 203e3ae4c20SLaurent Pinchart - 2 204e3ae4c20SLaurent Pinchart - 205e3ae4c20SLaurent Pinchart - 3 206e3ae4c20SLaurent Pinchart * - 0 207e3ae4c20SLaurent Pinchart - Y 208e3ae4c20SLaurent Pinchart - 209e3ae4c20SLaurent Pinchart - Y 210e3ae4c20SLaurent Pinchart - 211e3ae4c20SLaurent Pinchart - Y 212e3ae4c20SLaurent Pinchart - 213e3ae4c20SLaurent Pinchart - Y 214e3ae4c20SLaurent Pinchart * - 215e3ae4c20SLaurent Pinchart - 216e3ae4c20SLaurent Pinchart - 217e3ae4c20SLaurent Pinchart - 218e3ae4c20SLaurent Pinchart - 219e3ae4c20SLaurent Pinchart - 220e3ae4c20SLaurent Pinchart - 221e3ae4c20SLaurent Pinchart - 222e3ae4c20SLaurent Pinchart * - 1 223e3ae4c20SLaurent Pinchart - Y 224e3ae4c20SLaurent Pinchart - 225e3ae4c20SLaurent Pinchart - Y 226e3ae4c20SLaurent Pinchart - 227e3ae4c20SLaurent Pinchart - Y 228e3ae4c20SLaurent Pinchart - 229e3ae4c20SLaurent Pinchart - Y 230e3ae4c20SLaurent Pinchart * - 231e3ae4c20SLaurent Pinchart - 232e3ae4c20SLaurent Pinchart - 233e3ae4c20SLaurent Pinchart - 234e3ae4c20SLaurent Pinchart - C 235e3ae4c20SLaurent Pinchart - 236e3ae4c20SLaurent Pinchart - 237e3ae4c20SLaurent Pinchart - 238e3ae4c20SLaurent Pinchart * - 2 239e3ae4c20SLaurent Pinchart - Y 240e3ae4c20SLaurent Pinchart - 241e3ae4c20SLaurent Pinchart - Y 242e3ae4c20SLaurent Pinchart - 243e3ae4c20SLaurent Pinchart - Y 244e3ae4c20SLaurent Pinchart - 245e3ae4c20SLaurent Pinchart - Y 246e3ae4c20SLaurent Pinchart * - 247e3ae4c20SLaurent Pinchart - 248e3ae4c20SLaurent Pinchart - 249e3ae4c20SLaurent Pinchart - 250e3ae4c20SLaurent Pinchart - 251e3ae4c20SLaurent Pinchart - 252e3ae4c20SLaurent Pinchart - 253e3ae4c20SLaurent Pinchart - 254e3ae4c20SLaurent Pinchart * - 3 255e3ae4c20SLaurent Pinchart - Y 256e3ae4c20SLaurent Pinchart - 257e3ae4c20SLaurent Pinchart - Y 258e3ae4c20SLaurent Pinchart - 259e3ae4c20SLaurent Pinchart - Y 260e3ae4c20SLaurent Pinchart - 261e3ae4c20SLaurent Pinchart - Y 26254f38fcaSMauro Carvalho Chehab 26354f38fcaSMauro Carvalho Chehab 26454f38fcaSMauro Carvalho Chehab.. toctree:: 26554f38fcaSMauro Carvalho Chehab :maxdepth: 1 26654f38fcaSMauro Carvalho Chehab 26754f38fcaSMauro Carvalho Chehab pixfmt-packed-yuv 268*da785536SLaurent Pinchart pixfmt-yuv-planar 269af4f4505SLaurent Pinchart pixfmt-yuv-luma 27054f38fcaSMauro Carvalho Chehab pixfmt-y8i 27154f38fcaSMauro Carvalho Chehab pixfmt-y12i 27254f38fcaSMauro Carvalho Chehab pixfmt-uv8 27354f38fcaSMauro Carvalho Chehab pixfmt-m420 274