视频采集及显示: color.h源文件
视频采集及显示 1.0 beta
Linux平台视频采集及其显示

color.h

00001 /****************************************************************************
00002 #               GspcaGui:  Gspca/Spca5xx Grabber                            #
00003 #               Copyright (C) 2004 2005 2006 Michel Xhaard                  #
00004 #                                                                           #
00005 # This program is free software; you can redistribute it and/or modify      #
00006 # it under the terms of the GNU General Public License as published by      #
00007 # the Free Software Foundation; either version 2 of the License, or         #
00008 # (at your option) any later version.                                       #
00009 #                                                                           #
00010 # This program is distributed in the hope that it will be useful,           #
00011 # but WITHOUT ANY WARRANTY; without even the implied warranty of            #
00012 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             #
00013 # GNU General Public License for more details.                              #
00014 #                                                                           #
00015 # You should have received a copy of the GNU General Public License         #
00016 # along with this program; if not, write to the Free Software               #
00017 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA #
00018 #                                                                           #
00019 ****************************************************************************/ 
00020 typedef struct Myrgb16 {
00021         unsigned short blue:5;
00022         unsigned short green:6;
00023         unsigned short red:5;
00024 } Myrgb16;
00025 typedef struct Myrgb24 {
00026         unsigned char blue;
00027         unsigned char green;
00028         unsigned char red;
00029 } Myrgb24;
00030 typedef struct Myrgb32 {
00031         unsigned char blue;
00032         unsigned char green;
00033         unsigned char red;
00034         unsigned char alpha;
00035 } Myrgb32;
00036 
00037 typedef struct MyYUV422 {
00038         unsigned char y0;
00039         unsigned char u;
00040         unsigned char y1;
00041         unsigned char v;
00042 } MyYUV422;
00043 
00044 typedef struct MyYUV444 {
00045         unsigned char y;
00046         unsigned char u;
00047         unsigned char v;
00048 } MyYUV444;
00049 
00050 #define CLIP(color) (unsigned char)(((color)>0xFF)?0xff:(((color)<0)?0:(color)))
00051 
00052 unsigned char
00053 RGB24_TO_Y(unsigned char r, unsigned char g, unsigned char b);
00054 
00055 unsigned char
00056 YR_TO_V(unsigned char r, unsigned char y);
00057 
00058 unsigned char
00059 YB_TO_U(unsigned char b, unsigned char y);
00060 
00061 unsigned char
00062 R_FROMYV(unsigned char y, unsigned char v);
00063 
00064 unsigned char
00065 G_FROMYUV(unsigned char y, unsigned char u, unsigned char v);
00066 
00067 unsigned char
00068 B_FROMYU(unsigned char y, unsigned char u);
00069 
00070 #define YfromRGB(r,g,b) CLIP((77*(r)+150*(g)+29*(b))>>8)
00071 #define UfromRGB(r,g,b) CLIP(((128*(b)-85*(g)-43*(r))>>8 )+128)
00072 #define VfromRGB(r,g,b) CLIP(((128*(r)-107*(g)-21*(b))>>8) +128)
00073 
00074 #define PACKRGB16(r,g,b) (__u16) ((((b) & 0xF8) << 8 ) | (((g) & 0xFC) << 3 ) | (((r) & 0xF8) >> 3 ))
00075 #define UNPACK16(pixel,r,g,b) r=((pixel)&0xf800) >> 8;  g=((pixel)&0x07e0) >> 3; b=(((pixel)&0x001f) << 3)
00076 
00077 void initLut(void);
00078 void freeLut(void);