1 /* 2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> 3 * 4 * This file is part of FFmpeg. 5 * 6 * FFmpeg is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * FFmpeg is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with FFmpeg; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 module ffmpeg.libavutil.pixfmt; 21 extern (C) @nogc nothrow: 22 23 /** 24 * @file 25 * pixel format definitions 26 */ 27 28 enum AVPALETTE_SIZE = 1024; 29 enum AVPALETTE_COUNT = 256; 30 31 /** 32 * Pixel format. 33 * 34 * @note 35 * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA 36 * color is put together as: 37 * (A << 24) | (R << 16) | (G << 8) | B 38 * This is stored as BGRA on little-endian CPU architectures and ARGB on 39 * big-endian CPUs. 40 * 41 * @note 42 * If the resolution is not a multiple of the chroma subsampling factor 43 * then the chroma plane resolution must be rounded up. 44 * 45 * @par 46 * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized 47 * image data is stored in AVFrame.data[0]. The palette is transported in 48 * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is 49 * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is 50 * also endian-specific). Note also that the individual RGB32 palette 51 * components stored in AVFrame.data[1] should be in the range 0..255. 52 * This is important as many custom PAL8 video codecs that were designed 53 * to run on the IBM VGA graphics adapter use 6-bit palette components. 54 * 55 * @par 56 * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like 57 * for pal8. This palette is filled in automatically by the function 58 * allocating the picture. 59 */ 60 enum AVPixelFormat 61 { 62 AV_PIX_FMT_NONE = -1, 63 AV_PIX_FMT_YUV420P = 0, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 64 AV_PIX_FMT_YUYV422 = 1, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr 65 AV_PIX_FMT_RGB24 = 2, ///< packed RGB 8:8:8, 24bpp, RGBRGB... 66 AV_PIX_FMT_BGR24 = 3, ///< packed RGB 8:8:8, 24bpp, BGRBGR... 67 AV_PIX_FMT_YUV422P = 4, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 68 AV_PIX_FMT_YUV444P = 5, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) 69 AV_PIX_FMT_YUV410P = 6, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) 70 AV_PIX_FMT_YUV411P = 7, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) 71 AV_PIX_FMT_GRAY8 = 8, ///< Y , 8bpp 72 AV_PIX_FMT_MONOWHITE = 9, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb 73 AV_PIX_FMT_MONOBLACK = 10, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb 74 AV_PIX_FMT_PAL8 = 11, ///< 8 bits with AV_PIX_FMT_RGB32 palette 75 AV_PIX_FMT_YUVJ420P = 12, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range 76 AV_PIX_FMT_YUVJ422P = 13, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range 77 AV_PIX_FMT_YUVJ444P = 14, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range 78 AV_PIX_FMT_UYVY422 = 15, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 79 AV_PIX_FMT_UYYVYY411 = 16, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 80 AV_PIX_FMT_BGR8 = 17, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) 81 AV_PIX_FMT_BGR4 = 18, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits 82 AV_PIX_FMT_BGR4_BYTE = 19, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) 83 AV_PIX_FMT_RGB8 = 20, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) 84 AV_PIX_FMT_RGB4 = 21, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits 85 AV_PIX_FMT_RGB4_BYTE = 22, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) 86 AV_PIX_FMT_NV12 = 23, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) 87 AV_PIX_FMT_NV21 = 24, ///< as above, but U and V bytes are swapped 88 89 AV_PIX_FMT_ARGB = 25, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... 90 AV_PIX_FMT_RGBA = 26, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... 91 AV_PIX_FMT_ABGR = 27, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... 92 AV_PIX_FMT_BGRA = 28, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... 93 94 AV_PIX_FMT_GRAY16BE = 29, ///< Y , 16bpp, big-endian 95 AV_PIX_FMT_GRAY16LE = 30, ///< Y , 16bpp, little-endian 96 AV_PIX_FMT_YUV440P = 31, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) 97 AV_PIX_FMT_YUVJ440P = 32, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range 98 AV_PIX_FMT_YUVA420P = 33, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) 99 AV_PIX_FMT_RGB48BE = 34, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian 100 AV_PIX_FMT_RGB48LE = 35, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian 101 102 AV_PIX_FMT_RGB565BE = 36, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian 103 AV_PIX_FMT_RGB565LE = 37, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian 104 AV_PIX_FMT_RGB555BE = 38, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined 105 AV_PIX_FMT_RGB555LE = 39, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined 106 107 AV_PIX_FMT_BGR565BE = 40, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian 108 AV_PIX_FMT_BGR565LE = 41, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian 109 AV_PIX_FMT_BGR555BE = 42, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined 110 AV_PIX_FMT_BGR555LE = 43, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined 111 112 /** @name Deprecated pixel formats */ 113 /**@{*/ 114 AV_PIX_FMT_VAAPI_MOCO = 44, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers 115 AV_PIX_FMT_VAAPI_IDCT = 45, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers 116 AV_PIX_FMT_VAAPI_VLD = 46, ///< HW decoding through VA API, Picture.data[3] contains a VASurfaceID 117 /**@}*/ 118 AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD, 119 120 /** 121 * Hardware acceleration through VA-API, data[3] contains a 122 * VASurfaceID. 123 */ 124 125 AV_PIX_FMT_YUV420P16LE = 47, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian 126 AV_PIX_FMT_YUV420P16BE = 48, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian 127 AV_PIX_FMT_YUV422P16LE = 49, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 128 AV_PIX_FMT_YUV422P16BE = 50, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 129 AV_PIX_FMT_YUV444P16LE = 51, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian 130 AV_PIX_FMT_YUV444P16BE = 52, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian 131 AV_PIX_FMT_DXVA2_VLD = 53, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer 132 133 AV_PIX_FMT_RGB444LE = 54, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined 134 AV_PIX_FMT_RGB444BE = 55, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined 135 AV_PIX_FMT_BGR444LE = 56, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined 136 AV_PIX_FMT_BGR444BE = 57, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined 137 AV_PIX_FMT_YA8 = 58, ///< 8 bits gray, 8 bits alpha 138 139 AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 140 AV_PIX_FMT_GRAY8A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 141 142 AV_PIX_FMT_BGR48BE = 59, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian 143 AV_PIX_FMT_BGR48LE = 60, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian 144 145 /** 146 * The following 12 formats have the disadvantage of needing 1 format for each bit depth. 147 * Notice that each 9/10 bits sample is stored in 16 bits with extra padding. 148 * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better. 149 */ 150 AV_PIX_FMT_YUV420P9BE = 61, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian 151 AV_PIX_FMT_YUV420P9LE = 62, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian 152 AV_PIX_FMT_YUV420P10BE = 63, ///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian 153 AV_PIX_FMT_YUV420P10LE = 64, ///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian 154 AV_PIX_FMT_YUV422P10BE = 65, ///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 155 AV_PIX_FMT_YUV422P10LE = 66, ///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 156 AV_PIX_FMT_YUV444P9BE = 67, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian 157 AV_PIX_FMT_YUV444P9LE = 68, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian 158 AV_PIX_FMT_YUV444P10BE = 69, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian 159 AV_PIX_FMT_YUV444P10LE = 70, ///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian 160 AV_PIX_FMT_YUV422P9BE = 71, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 161 AV_PIX_FMT_YUV422P9LE = 72, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 162 AV_PIX_FMT_GBRP = 73, ///< planar GBR 4:4:4 24bpp 163 AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP 164 AV_PIX_FMT_GBRP9BE = 74, ///< planar GBR 4:4:4 27bpp, big-endian 165 AV_PIX_FMT_GBRP9LE = 75, ///< planar GBR 4:4:4 27bpp, little-endian 166 AV_PIX_FMT_GBRP10BE = 76, ///< planar GBR 4:4:4 30bpp, big-endian 167 AV_PIX_FMT_GBRP10LE = 77, ///< planar GBR 4:4:4 30bpp, little-endian 168 AV_PIX_FMT_GBRP16BE = 78, ///< planar GBR 4:4:4 48bpp, big-endian 169 AV_PIX_FMT_GBRP16LE = 79, ///< planar GBR 4:4:4 48bpp, little-endian 170 AV_PIX_FMT_YUVA422P = 80, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) 171 AV_PIX_FMT_YUVA444P = 81, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) 172 AV_PIX_FMT_YUVA420P9BE = 82, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian 173 AV_PIX_FMT_YUVA420P9LE = 83, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian 174 AV_PIX_FMT_YUVA422P9BE = 84, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian 175 AV_PIX_FMT_YUVA422P9LE = 85, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian 176 AV_PIX_FMT_YUVA444P9BE = 86, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian 177 AV_PIX_FMT_YUVA444P9LE = 87, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian 178 AV_PIX_FMT_YUVA420P10BE = 88, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) 179 AV_PIX_FMT_YUVA420P10LE = 89, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) 180 AV_PIX_FMT_YUVA422P10BE = 90, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) 181 AV_PIX_FMT_YUVA422P10LE = 91, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) 182 AV_PIX_FMT_YUVA444P10BE = 92, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) 183 AV_PIX_FMT_YUVA444P10LE = 93, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) 184 AV_PIX_FMT_YUVA420P16BE = 94, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) 185 AV_PIX_FMT_YUVA420P16LE = 95, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) 186 AV_PIX_FMT_YUVA422P16BE = 96, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) 187 AV_PIX_FMT_YUVA422P16LE = 97, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) 188 AV_PIX_FMT_YUVA444P16BE = 98, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) 189 AV_PIX_FMT_YUVA444P16LE = 99, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) 190 191 AV_PIX_FMT_VDPAU = 100, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface 192 193 AV_PIX_FMT_XYZ12LE = 101, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 194 AV_PIX_FMT_XYZ12BE = 102, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 195 AV_PIX_FMT_NV16 = 103, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 196 AV_PIX_FMT_NV20LE = 104, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 197 AV_PIX_FMT_NV20BE = 105, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 198 199 AV_PIX_FMT_RGBA64BE = 106, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian 200 AV_PIX_FMT_RGBA64LE = 107, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian 201 AV_PIX_FMT_BGRA64BE = 108, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian 202 AV_PIX_FMT_BGRA64LE = 109, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian 203 204 AV_PIX_FMT_YVYU422 = 110, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb 205 206 AV_PIX_FMT_YA16BE = 111, ///< 16 bits gray, 16 bits alpha (big-endian) 207 AV_PIX_FMT_YA16LE = 112, ///< 16 bits gray, 16 bits alpha (little-endian) 208 209 AV_PIX_FMT_GBRAP = 113, ///< planar GBRA 4:4:4:4 32bpp 210 AV_PIX_FMT_GBRAP16BE = 114, ///< planar GBRA 4:4:4:4 64bpp, big-endian 211 AV_PIX_FMT_GBRAP16LE = 115, ///< planar GBRA 4:4:4:4 64bpp, little-endian 212 /** 213 * HW acceleration through QSV, data[3] contains a pointer to the 214 * mfxFrameSurface1 structure. 215 */ 216 AV_PIX_FMT_QSV = 116, 217 /** 218 * HW acceleration though MMAL, data[3] contains a pointer to the 219 * MMAL_BUFFER_HEADER_T structure. 220 */ 221 AV_PIX_FMT_MMAL = 117, 222 223 AV_PIX_FMT_D3D11VA_VLD = 118, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer 224 225 /** 226 * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers 227 * exactly as for system memory frames. 228 */ 229 AV_PIX_FMT_CUDA = 119, 230 231 AV_PIX_FMT_0RGB = 120, ///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined 232 AV_PIX_FMT_RGB0 = 121, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined 233 AV_PIX_FMT_0BGR = 122, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined 234 AV_PIX_FMT_BGR0 = 123, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined 235 236 AV_PIX_FMT_YUV420P12BE = 124, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian 237 AV_PIX_FMT_YUV420P12LE = 125, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian 238 AV_PIX_FMT_YUV420P14BE = 126, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian 239 AV_PIX_FMT_YUV420P14LE = 127, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian 240 AV_PIX_FMT_YUV422P12BE = 128, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 241 AV_PIX_FMT_YUV422P12LE = 129, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 242 AV_PIX_FMT_YUV422P14BE = 130, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian 243 AV_PIX_FMT_YUV422P14LE = 131, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian 244 AV_PIX_FMT_YUV444P12BE = 132, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian 245 AV_PIX_FMT_YUV444P12LE = 133, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian 246 AV_PIX_FMT_YUV444P14BE = 134, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian 247 AV_PIX_FMT_YUV444P14LE = 135, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian 248 AV_PIX_FMT_GBRP12BE = 136, ///< planar GBR 4:4:4 36bpp, big-endian 249 AV_PIX_FMT_GBRP12LE = 137, ///< planar GBR 4:4:4 36bpp, little-endian 250 AV_PIX_FMT_GBRP14BE = 138, ///< planar GBR 4:4:4 42bpp, big-endian 251 AV_PIX_FMT_GBRP14LE = 139, ///< planar GBR 4:4:4 42bpp, little-endian 252 AV_PIX_FMT_YUVJ411P = 140, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range 253 254 AV_PIX_FMT_BAYER_BGGR8 = 141, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples 255 AV_PIX_FMT_BAYER_RGGB8 = 142, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples 256 AV_PIX_FMT_BAYER_GBRG8 = 143, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples 257 AV_PIX_FMT_BAYER_GRBG8 = 144, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples 258 AV_PIX_FMT_BAYER_BGGR16LE = 145, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian 259 AV_PIX_FMT_BAYER_BGGR16BE = 146, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian 260 AV_PIX_FMT_BAYER_RGGB16LE = 147, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian 261 AV_PIX_FMT_BAYER_RGGB16BE = 148, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian 262 AV_PIX_FMT_BAYER_GBRG16LE = 149, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian 263 AV_PIX_FMT_BAYER_GBRG16BE = 150, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian 264 AV_PIX_FMT_BAYER_GRBG16LE = 151, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian 265 AV_PIX_FMT_BAYER_GRBG16BE = 152, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian 266 267 AV_PIX_FMT_XVMC = 153, ///< XVideo Motion Acceleration via common packet passing 268 269 AV_PIX_FMT_YUV440P10LE = 154, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian 270 AV_PIX_FMT_YUV440P10BE = 155, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian 271 AV_PIX_FMT_YUV440P12LE = 156, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian 272 AV_PIX_FMT_YUV440P12BE = 157, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian 273 AV_PIX_FMT_AYUV64LE = 158, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian 274 AV_PIX_FMT_AYUV64BE = 159, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian 275 276 AV_PIX_FMT_VIDEOTOOLBOX = 160, ///< hardware decoding through Videotoolbox 277 278 AV_PIX_FMT_P010LE = 161, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian 279 AV_PIX_FMT_P010BE = 162, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian 280 281 AV_PIX_FMT_GBRAP12BE = 163, ///< planar GBR 4:4:4:4 48bpp, big-endian 282 AV_PIX_FMT_GBRAP12LE = 164, ///< planar GBR 4:4:4:4 48bpp, little-endian 283 284 AV_PIX_FMT_GBRAP10BE = 165, ///< planar GBR 4:4:4:4 40bpp, big-endian 285 AV_PIX_FMT_GBRAP10LE = 166, ///< planar GBR 4:4:4:4 40bpp, little-endian 286 287 AV_PIX_FMT_MEDIACODEC = 167, ///< hardware decoding through MediaCodec 288 289 AV_PIX_FMT_GRAY12BE = 168, ///< Y , 12bpp, big-endian 290 AV_PIX_FMT_GRAY12LE = 169, ///< Y , 12bpp, little-endian 291 AV_PIX_FMT_GRAY10BE = 170, ///< Y , 10bpp, big-endian 292 AV_PIX_FMT_GRAY10LE = 171, ///< Y , 10bpp, little-endian 293 294 AV_PIX_FMT_P016LE = 172, ///< like NV12, with 16bpp per component, little-endian 295 AV_PIX_FMT_P016BE = 173, ///< like NV12, with 16bpp per component, big-endian 296 297 /** 298 * Hardware surfaces for Direct3D11. 299 * 300 * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11 301 * hwaccel API and filtering support AV_PIX_FMT_D3D11 only. 302 * 303 * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the 304 * texture array index of the frame as intptr_t if the ID3D11Texture2D is 305 * an array texture (or always 0 if it's a normal texture). 306 */ 307 AV_PIX_FMT_D3D11 = 174, 308 309 AV_PIX_FMT_GRAY9BE = 175, ///< Y , 9bpp, big-endian 310 AV_PIX_FMT_GRAY9LE = 176, ///< Y , 9bpp, little-endian 311 312 AV_PIX_FMT_GBRPF32BE = 177, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian 313 AV_PIX_FMT_GBRPF32LE = 178, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian 314 AV_PIX_FMT_GBRAPF32BE = 179, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian 315 AV_PIX_FMT_GBRAPF32LE = 180, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian 316 317 /** 318 * DRM-managed buffers exposed through PRIME buffer sharing. 319 * 320 * data[0] points to an AVDRMFrameDescriptor. 321 */ 322 AV_PIX_FMT_DRM_PRIME = 181, 323 /** 324 * Hardware surfaces for OpenCL. 325 * 326 * data[i] contain 2D image objects (typed in C as cl_mem, used 327 * in OpenCL as image2d_t) for each plane of the surface. 328 */ 329 AV_PIX_FMT_OPENCL = 182, 330 331 AV_PIX_FMT_GRAY14BE = 183, ///< Y , 14bpp, big-endian 332 AV_PIX_FMT_GRAY14LE = 184, ///< Y , 14bpp, little-endian 333 334 AV_PIX_FMT_GRAYF32BE = 185, ///< IEEE-754 single precision Y, 32bpp, big-endian 335 AV_PIX_FMT_GRAYF32LE = 186, ///< IEEE-754 single precision Y, 32bpp, little-endian 336 337 AV_PIX_FMT_YUVA422P12BE = 187, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, big-endian 338 AV_PIX_FMT_YUVA422P12LE = 188, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, little-endian 339 AV_PIX_FMT_YUVA444P12BE = 189, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian 340 AV_PIX_FMT_YUVA444P12LE = 190, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian 341 342 AV_PIX_FMT_NV24 = 191, ///< planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) 343 AV_PIX_FMT_NV42 = 192, ///< as above, but U and V bytes are swapped 344 345 /** 346 * Vulkan hardware images. 347 * 348 * data[0] points to an AVVkFrame 349 */ 350 AV_PIX_FMT_VULKAN = 193, 351 352 AV_PIX_FMT_Y210BE = 194, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian 353 AV_PIX_FMT_Y210LE = 195, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian 354 355 AV_PIX_FMT_X2RGB10LE = 196, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined 356 AV_PIX_FMT_X2RGB10BE = 197, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined 357 AV_PIX_FMT_NB = 198 ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions 358 } 359 //alias AVPixelFormat = int; 360 361 template AV_PIX_FMT_NE(string be, string le) 362 { 363 version(BigEndian){ 364 enum AV_PIX_FMT_NE = "AVPixelFormat.AV_PIX_FMT_" ~ be; 365 }else{ 366 enum AV_PIX_FMT_NE = "AVPixelFormat.AV_PIX_FMT_" ~ le; 367 } 368 369 } 370 371 enum AV_PIX_FMT_RGB32 = mixin(AV_PIX_FMT_NE!("ARGB", "BGRA")); 372 enum AV_PIX_FMT_RGB32_1 = mixin(AV_PIX_FMT_NE!("RGBA", "ABGR")); 373 enum AV_PIX_FMT_BGR32 = mixin(AV_PIX_FMT_NE!("ABGR", "RGBA")); 374 enum AV_PIX_FMT_BGR32_1 = mixin(AV_PIX_FMT_NE!("BGRA", "ARGB")); 375 enum AV_PIX_FMT_0RGB32 = mixin(AV_PIX_FMT_NE!("0RGB", "BGR0")); 376 enum AV_PIX_FMT_0BGR32 = mixin(AV_PIX_FMT_NE!("0BGR", "RGB0")); 377 378 enum AV_PIX_FMT_GRAY9 = mixin(AV_PIX_FMT_NE!("GRAY9BE", "GRAY9LE")); 379 enum AV_PIX_FMT_GRAY10 = mixin(AV_PIX_FMT_NE!("GRAY10BE", "GRAY10LE")); 380 enum AV_PIX_FMT_GRAY12 = mixin(AV_PIX_FMT_NE!("GRAY12BE", "GRAY12LE")); 381 enum AV_PIX_FMT_GRAY14 = mixin(AV_PIX_FMT_NE!("GRAY14BE", "GRAY14LE")); 382 enum AV_PIX_FMT_GRAY16 = mixin(AV_PIX_FMT_NE!("GRAY16BE", "GRAY16LE")); 383 enum AV_PIX_FMT_YA16 = mixin(AV_PIX_FMT_NE!("YA16BE", "YA16LE")); 384 enum AV_PIX_FMT_RGB48 = mixin(AV_PIX_FMT_NE!("RGB48BE", "RGB48LE")); 385 enum AV_PIX_FMT_RGB565 = mixin(AV_PIX_FMT_NE!("RGB565BE", "RGB565LE")); 386 enum AV_PIX_FMT_RGB555 = mixin(AV_PIX_FMT_NE!("RGB555BE", "RGB555LE")); 387 enum AV_PIX_FMT_RGB444 = mixin(AV_PIX_FMT_NE!("RGB444BE", "RGB444LE")); 388 enum AV_PIX_FMT_RGBA64 = mixin(AV_PIX_FMT_NE!("RGBA64BE", "RGBA64LE")); 389 enum AV_PIX_FMT_BGR48 = mixin(AV_PIX_FMT_NE!("BGR48BE", "BGR48LE")); 390 enum AV_PIX_FMT_BGR565 = mixin(AV_PIX_FMT_NE!("BGR565BE", "BGR565LE")); 391 enum AV_PIX_FMT_BGR555 = mixin(AV_PIX_FMT_NE!("BGR555BE", "BGR555LE")); 392 enum AV_PIX_FMT_BGR444 = mixin(AV_PIX_FMT_NE!("BGR444BE", "BGR444LE")); 393 enum AV_PIX_FMT_BGRA64 = mixin(AV_PIX_FMT_NE!("BGRA64BE", "BGRA64LE")); 394 395 enum AV_PIX_FMT_YUV420P9 = mixin(AV_PIX_FMT_NE!("YUV420P9BE", "YUV420P9LE")); 396 enum AV_PIX_FMT_YUV422P9 = mixin(AV_PIX_FMT_NE!("YUV422P9BE", "YUV422P9LE")); 397 enum AV_PIX_FMT_YUV444P9 = mixin(AV_PIX_FMT_NE!("YUV444P9BE", "YUV444P9LE")); 398 enum AV_PIX_FMT_YUV420P10 = mixin(AV_PIX_FMT_NE!("YUV420P10BE", "YUV420P10LE")); 399 enum AV_PIX_FMT_YUV422P10 = mixin(AV_PIX_FMT_NE!("YUV422P10BE", "YUV422P10LE")); 400 enum AV_PIX_FMT_YUV440P10 = mixin(AV_PIX_FMT_NE!("YUV440P10BE", "YUV440P10LE")); 401 enum AV_PIX_FMT_YUV444P10 = mixin(AV_PIX_FMT_NE!("YUV444P10BE", "YUV444P10LE")); 402 enum AV_PIX_FMT_YUV420P12 = mixin(AV_PIX_FMT_NE!("YUV420P12BE", "YUV420P12LE")); 403 enum AV_PIX_FMT_YUV422P12 = mixin(AV_PIX_FMT_NE!("YUV422P12BE", "YUV422P12LE")); 404 enum AV_PIX_FMT_YUV440P12 = mixin(AV_PIX_FMT_NE!("YUV440P12BE", "YUV440P12LE")); 405 enum AV_PIX_FMT_YUV444P12 = mixin(AV_PIX_FMT_NE!("YUV444P12BE", "YUV444P12LE")); 406 enum AV_PIX_FMT_YUV420P14 = mixin(AV_PIX_FMT_NE!("YUV420P14BE", "YUV420P14LE")); 407 enum AV_PIX_FMT_YUV422P14 = mixin(AV_PIX_FMT_NE!("YUV422P14BE", "YUV422P14LE")); 408 enum AV_PIX_FMT_YUV444P14 = mixin(AV_PIX_FMT_NE!("YUV444P14BE", "YUV444P14LE")); 409 enum AV_PIX_FMT_YUV420P16 = mixin(AV_PIX_FMT_NE!("YUV420P16BE", "YUV420P16LE")); 410 enum AV_PIX_FMT_YUV422P16 = mixin(AV_PIX_FMT_NE!("YUV422P16BE", "YUV422P16LE")); 411 enum AV_PIX_FMT_YUV444P16 = mixin(AV_PIX_FMT_NE!("YUV444P16BE", "YUV444P16LE")); 412 413 enum AV_PIX_FMT_GBRP9 = mixin(AV_PIX_FMT_NE!("GBRP9BE", "GBRP9LE")); 414 enum AV_PIX_FMT_GBRP10 = mixin(AV_PIX_FMT_NE!("GBRP10BE", "GBRP10LE")); 415 enum AV_PIX_FMT_GBRP12 = mixin(AV_PIX_FMT_NE!("GBRP12BE", "GBRP12LE")); 416 enum AV_PIX_FMT_GBRP14 = mixin(AV_PIX_FMT_NE!("GBRP14BE", "GBRP14LE")); 417 enum AV_PIX_FMT_GBRP16 = mixin(AV_PIX_FMT_NE!("GBRP16BE", "GBRP16LE")); 418 enum AV_PIX_FMT_GBRAP10 = mixin(AV_PIX_FMT_NE!("GBRAP10BE", "GBRAP10LE")); 419 enum AV_PIX_FMT_GBRAP12 = mixin(AV_PIX_FMT_NE!("GBRAP12BE", "GBRAP12LE")); 420 enum AV_PIX_FMT_GBRAP16 = mixin(AV_PIX_FMT_NE!("GBRAP16BE", "GBRAP16LE")); 421 422 enum AV_PIX_FMT_BAYER_BGGR16 = mixin(AV_PIX_FMT_NE!("BAYER_BGGR16BE", "BAYER_BGGR16LE")); 423 enum AV_PIX_FMT_BAYER_RGGB16 = mixin(AV_PIX_FMT_NE!("BAYER_RGGB16BE", "BAYER_RGGB16LE")); 424 enum AV_PIX_FMT_BAYER_GBRG16 = mixin(AV_PIX_FMT_NE!("BAYER_GBRG16BE", "BAYER_GBRG16LE")); 425 enum AV_PIX_FMT_BAYER_GRBG16 = mixin(AV_PIX_FMT_NE!("BAYER_GRBG16BE", "BAYER_GRBG16LE")); 426 427 enum AV_PIX_FMT_GBRPF32 = mixin(AV_PIX_FMT_NE!("GBRPF32BE", "GBRPF32LE")); 428 enum AV_PIX_FMT_GBRAPF32 = mixin(AV_PIX_FMT_NE!("GBRAPF32BE", "GBRAPF32LE")); 429 430 enum AV_PIX_FMT_GRAYF32 = mixin(AV_PIX_FMT_NE!("GRAYF32BE", "GRAYF32LE")); 431 432 enum AV_PIX_FMT_YUVA420P9 = mixin(AV_PIX_FMT_NE!("YUVA420P9BE", "YUVA420P9LE")); 433 enum AV_PIX_FMT_YUVA422P9 = mixin(AV_PIX_FMT_NE!("YUVA422P9BE", "YUVA422P9LE")); 434 enum AV_PIX_FMT_YUVA444P9 = mixin(AV_PIX_FMT_NE!("YUVA444P9BE", "YUVA444P9LE")); 435 enum AV_PIX_FMT_YUVA420P10 = mixin(AV_PIX_FMT_NE!("YUVA420P10BE", "YUVA420P10LE")); 436 enum AV_PIX_FMT_YUVA422P10 = mixin(AV_PIX_FMT_NE!("YUVA422P10BE", "YUVA422P10LE")); 437 enum AV_PIX_FMT_YUVA444P10 = mixin(AV_PIX_FMT_NE!("YUVA444P10BE", "YUVA444P10LE")); 438 enum AV_PIX_FMT_YUVA422P12 = mixin(AV_PIX_FMT_NE!("YUVA422P12BE", "YUVA422P12LE")); 439 enum AV_PIX_FMT_YUVA444P12 = mixin(AV_PIX_FMT_NE!("YUVA444P12BE", "YUVA444P12LE")); 440 enum AV_PIX_FMT_YUVA420P16 = mixin(AV_PIX_FMT_NE!("YUVA420P16BE", "YUVA420P16LE")); 441 enum AV_PIX_FMT_YUVA422P16 = mixin(AV_PIX_FMT_NE!("YUVA422P16BE", "YUVA422P16LE")); 442 enum AV_PIX_FMT_YUVA444P16 = mixin(AV_PIX_FMT_NE!("YUVA444P16BE", "YUVA444P16LE")); 443 444 enum AV_PIX_FMT_XYZ12 = mixin(AV_PIX_FMT_NE!("XYZ12BE", "XYZ12LE")); 445 enum AV_PIX_FMT_NV20 = mixin(AV_PIX_FMT_NE!("NV20BE", "NV20LE")); 446 enum AV_PIX_FMT_AYUV64 = mixin(AV_PIX_FMT_NE!("AYUV64BE", "AYUV64LE")); 447 enum AV_PIX_FMT_P010 = mixin(AV_PIX_FMT_NE!("P010BE", "P010LE")); 448 enum AV_PIX_FMT_P016 = mixin(AV_PIX_FMT_NE!("P016BE", "P016LE")); 449 450 enum AV_PIX_FMT_Y210 = mixin(AV_PIX_FMT_NE!("Y210BE", "Y210LE")); 451 enum AV_PIX_FMT_X2RGB10 = mixin(AV_PIX_FMT_NE!("X2RGB10BE", "X2RGB10LE")); 452 453 /** 454 * Chromaticity coordinates of the source primaries. 455 * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.1. 456 */ 457 enum AVColorPrimaries 458 { 459 AVCOL_PRI_RESERVED0 = 0, 460 AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B 461 AVCOL_PRI_UNSPECIFIED = 2, 462 AVCOL_PRI_RESERVED = 3, 463 AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) 464 465 AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM 466 AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC 467 AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above 468 AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C 469 AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 470 AVCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) 471 AVCOL_PRI_SMPTEST428_1 = AVCOL_PRI_SMPTE428, 472 AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3 473 AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 474 AVCOL_PRI_EBU3213 = 22, ///< EBU Tech. 3213-E / JEDEC P22 phosphors 475 AVCOL_PRI_JEDEC_P22 = AVCOL_PRI_EBU3213, 476 AVCOL_PRI_NB = 23 ///< Not part of ABI 477 } 478 479 /** 480 * Color Transfer Characteristic. 481 * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.2. 482 */ 483 enum AVColorTransferCharacteristic 484 { 485 AVCOL_TRC_RESERVED0 = 0, 486 AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 487 AVCOL_TRC_UNSPECIFIED = 2, 488 AVCOL_TRC_RESERVED = 3, 489 AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM 490 AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG 491 AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC 492 AVCOL_TRC_SMPTE240M = 7, 493 AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" 494 AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" 495 AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" 496 AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 497 AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut 498 AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) 499 AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system 500 AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system 501 AVCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems 502 AVCOL_TRC_SMPTEST2084 = AVCOL_TRC_SMPTE2084, 503 AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1 504 AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428, 505 AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" 506 AVCOL_TRC_NB = 19 ///< Not part of ABI 507 } 508 509 /** 510 * YUV colorspace type. 511 * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.3. 512 */ 513 enum AVColorSpace 514 { 515 AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) 516 AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B 517 AVCOL_SPC_UNSPECIFIED = 2, 518 AVCOL_SPC_RESERVED = 3, 519 AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) 520 AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 521 AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC 522 AVCOL_SPC_SMPTE240M = 7, ///< functionally identical to above 523 AVCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 524 AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO, 525 AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system 526 AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system 527 AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x 528 AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system 529 AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system 530 AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp 531 AVCOL_SPC_NB = 15 ///< Not part of ABI 532 } 533 534 /** 535 * Visual content value range. 536 * 537 * These values are based on definitions that can be found in multiple 538 * specifications, such as ITU-T BT.709 (3.4 - Quantization of RGB, luminance 539 * and colour-difference signals), ITU-T BT.2020 (Table 5 - Digital 540 * Representation) as well as ITU-T BT.2100 (Table 9 - Digital 10- and 12-bit 541 * integer representation). At the time of writing, the BT.2100 one is 542 * recommended, as it also defines the full range representation. 543 * 544 * Common definitions: 545 * - For RGB and luminance planes such as Y in YCbCr and I in ICtCp, 546 * 'E' is the original value in range of 0.0 to 1.0. 547 * - For chrominance planes such as Cb,Cr and Ct,Cp, 'E' is the original 548 * value in range of -0.5 to 0.5. 549 * - 'n' is the output bit depth. 550 * - For additional definitions such as rounding and clipping to valid n 551 * bit unsigned integer range, please refer to BT.2100 (Table 9). 552 */ 553 enum AVColorRange 554 { 555 AVCOL_RANGE_UNSPECIFIED = 0, 556 557 /** 558 * Narrow or limited range content. 559 * 560 * - For luminance planes: 561 * 562 * (219 * E + 16) * 2^(n-8) 563 * 564 * F.ex. the range of 16-235 for 8 bits 565 * 566 * - For chrominance planes: 567 * 568 * (224 * E + 128) * 2^(n-8) 569 * 570 * F.ex. the range of 16-240 for 8 bits 571 */ 572 AVCOL_RANGE_MPEG = 1, 573 574 /** 575 * Full range content. 576 * 577 * - For RGB and luminance planes: 578 * 579 * (2^n - 1) * E 580 * 581 * F.ex. the range of 0-255 for 8 bits 582 * 583 * - For chrominance planes: 584 * 585 * (2^n - 1) * E + 2^(n - 1) 586 * 587 * F.ex. the range of 1-255 for 8 bits 588 */ 589 AVCOL_RANGE_JPEG = 2, 590 AVCOL_RANGE_NB = 3 ///< Not part of ABI 591 } 592 593 /** 594 * Location of chroma samples. 595 * 596 * Illustration showing the location of the first (top left) chroma sample of the 597 * image, the left shows only luma, the right 598 * shows the location of the chroma sample, the 2 could be imagined to overlay 599 * each other but are drawn separately due to limitations of ASCII 600 * 601 * 1st 2nd 1st 2nd horizontal luma sample positions 602 * v v v v 603 * ______ ______ 604 *1st luma line > |X X ... |3 4 X ... X are luma samples, 605 * | |1 2 1-6 are possible chroma positions 606 *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position 607 */ 608 enum AVChromaLocation 609 { 610 AVCHROMA_LOC_UNSPECIFIED = 0, 611 AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0 612 AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0 613 AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 614 AVCHROMA_LOC_TOP = 4, 615 AVCHROMA_LOC_BOTTOMLEFT = 5, 616 AVCHROMA_LOC_BOTTOM = 6, 617 AVCHROMA_LOC_NB = 7 ///< Not part of ABI 618 } 619 620 /* AVUTIL_PIXFMT_H */