libquicktime
|
00001 /******************************************************************************* 00002 colormodels.h 00003 00004 libquicktime - A library for reading and writing quicktime/avi/mp4 files. 00005 http://libquicktime.sourceforge.net 00006 00007 Copyright (C) 2002 Heroine Virtual Ltd. 00008 Copyright (C) 2002-2011 Members of the libquicktime project. 00009 00010 This library is free software; you can redistribute it and/or modify it under 00011 the terms of the GNU Lesser General Public License as published by the Free 00012 Software Foundation; either version 2.1 of the License, or (at your option) 00013 any later version. 00014 00015 This library is distributed in the hope that it will be useful, but WITHOUT 00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00018 details. 00019 00020 You should have received a copy of the GNU Lesser General Public License along 00021 with this library; if not, write to the Free Software Foundation, Inc., 51 00022 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00023 *******************************************************************************/ 00024 00025 #ifndef COLORMODELS_H 00026 #define COLORMODELS_H 00027 00028 #ifdef __GNUC__ 00029 #pragma GCC visibility push(default) 00030 #endif 00031 00040 // Colormodels 00041 #define BC_COMPRESSED 1 00042 00049 #define BC_RGB565 2 00050 00057 #define BC_BGR565 3 00058 00064 #define BC_BGR888 4 00065 00071 #define BC_BGR8888 5 00072 00079 #define BC_RGB888 6 00080 00086 #define BC_RGBA8888 7 00087 00093 #define BC_RGB161616 8 00094 00100 #define BC_RGBA16161616 9 00101 00107 #define BC_YUVA8888 10 00108 00114 #define BC_YUV422 13 00115 // Planar 00116 00123 #define BC_YUV420P 14 00124 00130 #define BC_YUV422P 15 00131 00137 #define BC_YUV444P 16 00138 00144 #define BC_YUV411P 17 00145 /* JPEG scaled colormodels */ 00146 00152 #define BC_YUVJ420P 18 00153 00159 #define BC_YUVJ422P 19 00160 00166 #define BC_YUVJ444P 20 00167 /* 16 bit per component planar formats */ 00168 00174 #define BC_YUV422P16 21 00175 00181 #define BC_YUV444P16 22 00182 00187 #define BC_YUV422P10 23 00188 00194 #define BC_YUVJ422P10 24 00195 00196 // Colormodels purely used by Quicktime are done in Quicktime. 00197 00198 // For communication with the X Server 00199 #define FOURCC_YV12 0x32315659 /* YV12 YUV420P */ 00200 #define FOURCC_YUV2 0x32595559 /* YUV2 YUV422 */ 00201 #define FOURCC_I420 0x30323449 /* I420 Intel Indeo 4 */ 00202 00203 // #undef RECLIP 00204 // #define RECLIP(x, y, z) ((x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x)))) 00205 00206 #ifdef __cplusplus 00207 extern "C" { 00208 #endif 00209 00210 int cmodel_calculate_pixelsize(int colormodel); 00211 int cmodel_calculate_datasize(int w, int h, int bytes_per_line, int color_model); 00212 int cmodel_calculate_max(int colormodel); 00213 int cmodel_components(int colormodel); 00214 int cmodel_is_yuv(int colormodel); 00215 00216 void cmodel_transfer(unsigned char **output_rows, /* Leave NULL if non existent */ 00217 unsigned char **input_rows, 00218 int in_x, /* Dimensions to capture from input frame */ 00219 int in_y, 00220 int in_w, 00221 int in_h, 00222 int out_w, 00223 int out_h, 00224 int in_colormodel, 00225 int out_colormodel, 00226 int in_rowspan, /* For planar use the luma rowspan */ 00227 int out_rowspan, /* For planar use the luma rowspan */ 00228 int in_rowspan_uv, /* Chroma rowspan */ 00229 int out_rowspan_uv /* Chroma rowspan */); 00230 00231 int cmodel_bc_to_x(int color_model); 00232 // Tell when to use plane arguments or row pointer arguments to functions 00233 int cmodel_is_planar(int color_model); 00234 00235 00236 00237 00238 00239 #ifdef __cplusplus 00240 } 00241 #endif 00242 00243 #ifdef __GNUC__ 00244 #pragma GCC visibility pop 00245 #endif 00246 00247 #endif