Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

ccvt.h

Go to the documentation of this file.
00001 #ifndef CCVT_H
00002 #define CCVT_H
00003 
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 /* Colour ConVerT: going from one colour space to another
00009 
00010    Format descriptions:
00011    420i = "4:2:0 interlaced"
00012            YYYY UU YYYY UU   even lines
00013            YYYY VV YYYY VV   odd lines
00014            U/V data is subsampled by 2 both in horizontal 
00015            and vertical directions, and intermixed with the Y values.
00016    
00017    420p = "4:2:0 planar"
00018            YYYYYYYY      N lines
00019            UUUU          N/2 lines
00020            VVVV          N/2 lines
00021            U/V is again subsampled, but all the Ys, Us and Vs are placed 
00022            together, but in separate buffers. The buffers may be placed in
00023            one piece of contiguous memory though, with Y buffer first,
00024            followed by U, folloed by V.
00025 
00026    yuyv = "4:2:2 interlaced"
00027            YUYV YUYV YUYV ...   N lines
00028            The U/V data is subsampled by 2 in horizontal direction only.
00029 
00030    bgr24 = 3 bytes per pixel, in the order Blue Green Red (whoever came up
00031            with that idea...)
00032    rgb24 = 3 bytes per pixel, in the order Red Green Blue (which is sensible)
00033    rgb32 = 4 bytes per pixel, in the order Red Green Blue Alpha, with 
00034            Alpha really being a filler byte (0)
00035    bgr32 = last but not least, 4 bytes per pixel, in the order Blue Green Red
00036            Alpha, Alpha again a filler byte (0)
00037  */
00038 
00039 /* Functions in ccvt.S */
00040 /* 4:2:0 YUV interlaced to RGB/BGR */
00041 void ccvt_420i_bgr24(int width, int height, void *src, void *dst);
00042 void ccvt_420i_rgb24(int width, int height, void *src, void *dst);
00043 void ccvt_420i_bgr32(int width, int height, void *src, void *dst);
00044 void ccvt_420i_rgb32(int width, int height, void *src, void *dst);
00045 
00046 /* 4:2:0 YUYV interlaced to RGB/BGR */
00047 void ccvt_yuyv_rgb32(int width, int height, void *src, void *dst);
00048 void ccvt_yuyv_bgr32(int width, int height, void *src, void *dst);
00049 
00050 /* 4:2:0 YUV planar to RGB/BGR     */
00051 void ccvt_420p_rgb32(int width, int height, void *srcy, void *srcu, void *srcv, void *dst);
00052 void ccvt_420p_bgr32(int width, int height, void *srcy, void *srcu, void *srcv, void *dst);
00053 
00054 /* RGB/BGR to 4:2:0 YUV interlaced */
00055 
00056 /* RGB/BGR to 4:2:0 YUV planar     */
00057 void ccvt_rgb24_420p(int width, int height, void *src, void *dsty, void *dstu, void *dstv);
00058 void ccvt_bgr24_420p(int width, int height, void *src, void *dsty, void *dstu, void *dstv);
00059 
00060 /* Go from 420i to other yuv formats */
00061 void ccvt_420i_420p(int width, int height, void *src, void *dsty, void *dstu, void *dstv);
00062 void ccvt_420i_yuyv(int width, int height, void *src, void *dst);
00063 
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067 
00068 #endif

Generated at Wed Jun 20 02:51:22 2001 for Camstream by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001