1/* 2 * pixel format descriptor 3 * Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at> 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22#include "libavutil/pixfmt.h" 23#include "pixdesc.h" 24 25static const AVPixFmtDescriptor pix_fmt_desc[PIX_FMT_NB] = { 26 [PIX_FMT_YUV422P] = { 27 .nb_channels = 3, 28 .log2_chroma_w= 1, 29 .log2_chroma_h= 0, 30 .comp = { 31 {0,0,1,0,7}, 32 {1,0,1,0,7}, 33 {2,0,1,0,7}, 34 }, 35 }, 36 [PIX_FMT_YUV420P] = { 37 .nb_channels = 3, 38 .log2_chroma_w= 1, 39 .log2_chroma_h= 1, 40 .comp = { 41 {0,0,1,0,7}, 42 {1,0,1,0,7}, 43 {2,0,1,0,7}, 44 }, 45 }, 46 [PIX_FMT_YUV410P] = { 47 .nb_channels = 3, 48 .log2_chroma_w= 2, 49 .log2_chroma_h= 2, 50 .comp = { 51 {0,0,1,0,7}, 52 {1,0,1,0,7}, 53 {2,0,1,0,7}, 54 }, 55 }, 56 [PIX_FMT_NV12] = { 57 .nb_channels = 3, 58 .log2_chroma_w= 1, 59 .log2_chroma_h= 1, 60 .comp = { 61 {0,0,1,0,7}, 62 {1,1,1,0,7}, 63 {1,1,2,0,7}, 64 }, 65 }, 66 [PIX_FMT_YUYV422] = { 67 .nb_channels = 3, 68 .log2_chroma_w= 1, 69 .log2_chroma_h= 0, 70 .comp = { 71 {0,1,1,0,7}, 72 {0,3,2,0,7}, 73 {0,3,4,0,7}, 74 }, 75 }, 76 [PIX_FMT_UYVY422] = { 77 .nb_channels = 3, 78 .log2_chroma_w= 1, 79 .log2_chroma_h= 0, 80 .comp = { 81 {0,1,2,0,7}, 82 {0,3,1,0,7}, 83 {0,3,3,0,7}, 84 }, 85 }, 86 [PIX_FMT_GRAY16LE] = { 87 .nb_channels = 1, 88 .log2_chroma_w= 0, 89 .log2_chroma_h= 0, 90 .comp = { 91 {0,1,1,0,15}, 92 }, 93 }, 94 [PIX_FMT_GRAY16BE] = { 95 .nb_channels = 1, 96 .log2_chroma_w= 0, 97 .log2_chroma_h= 0, 98 .comp = { 99 {0,1,1,0,15}, 100 }, 101 .flags = PIX_FMT_BE, 102 }, 103 [PIX_FMT_RGB24] = { 104 .nb_channels = 3, 105 .log2_chroma_w= 0, 106 .log2_chroma_h= 0, 107 .comp = { 108 {0,2,1,0,7}, 109 {0,2,2,0,7}, 110 {0,2,3,0,7}, 111 }, 112 }, 113 [PIX_FMT_RGBA] = { 114 .nb_channels = 4, 115 .log2_chroma_w= 0, 116 .log2_chroma_h= 0, 117 .comp = { 118 {0,3,1,0,7}, 119 {0,3,2,0,7}, 120 {0,3,3,0,7}, 121 {0,3,4,0,7}, 122 }, 123 }, 124 [PIX_FMT_RGB48LE] = { 125 .nb_channels = 3, 126 .log2_chroma_w= 0, 127 .log2_chroma_h= 0, 128 .comp = { 129 {0,5,1,0,15}, 130 {0,5,3,0,15}, 131 {0,5,5,0,15}, 132 }, 133 }, 134 [PIX_FMT_RGB48BE] = { 135 .nb_channels = 3, 136 .log2_chroma_w= 0, 137 .log2_chroma_h= 0, 138 .comp = { 139 {0,5,1,0,15}, 140 {0,5,3,0,15}, 141 {0,5,5,0,15}, 142 }, 143 .flags = PIX_FMT_BE, 144 }, 145//FIXME change pix fmt defines so that we have a LE & BE instead of a native-endian 146#if 0 147 [PIX_FMT_RGB565_LE] = { 148 .nb_channels = 3, 149 .log2_chroma_w= 0, 150 .log2_chroma_h= 0, 151 .comp = { 152 {0,1,1,0,4}, 153 {0,1,1,5,5}, 154 {0,1,2,3,4}, 155 }, 156 }, 157 [PIX_FMT_RGB565_BE] = { 158 .nb_channels = 3, 159 .log2_chroma_w= 0, 160 .log2_chroma_h= 0, 161 .comp = { 162 {0,1,1, 0,4}, 163 {0,1,1, 5,5}, 164 {0,1,0, 3,4}, 165 }, 166 .flags = PIX_FMT_BE, 167 }, 168#endif 169 [PIX_FMT_MONOBLACK] = { 170 .nb_channels = 1, 171 .log2_chroma_w= 0, 172 .log2_chroma_h= 0, 173 .comp = { 174 {0,0,1,7,0}, 175 }, 176 .flags = PIX_FMT_BITSTREAM, 177 }, 178 [PIX_FMT_PAL8] = { 179 .nb_channels = 1, 180 .log2_chroma_w= 0, 181 .log2_chroma_h= 0, 182 .comp = { 183 {0,0,1,0,7}, 184 }, 185 .flags = PIX_FMT_PAL, 186 }, 187}; 188