[cvs] / xvidcore / src / image / colorspace.h Repository:
ViewVC logotype

Diff of /xvidcore/src/image/colorspace.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4, Sun Nov 17 00:20:30 2002 UTC revision 1.10, Wed Nov 26 01:04:34 2008 UTC
# Line 1  Line 1 
1  /*****************************************************************************  /*****************************************************************************
2   *   *
3   *  XVID MPEG4 Codec   *  XVID MPEG-4 VIDEO CODEC
4   *  - Colorspace functions - header files   *  - Colorspace related header  -
5   *   *
6   *  This file is part of XviD, a free MPEG-4 video encoder/decoder   *  Copyright(C) 2001-2003 Peter Ross <pross@xvid.org>
7   *   *
8   *  XviD is free software; you can redistribute it and/or modify it   *  This program is free software ; you can redistribute it and/or modify
9   *  under the terms of the GNU General Public License as published by   *  it under the terms of the GNU General Public License as published by
10   *  the Free Software Foundation; either version 2 of the License, or   *  the Free Software Foundation; either version 2 of the License, or
11   *  (at your option) any later version.   *  (at your option) any later version.
12   *   *
# Line 19  Line 19 
19   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
20   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
  *  Under section 8 of the GNU General Public License, the copyright  
  *  holders of XVID explicitly forbid distribution in the following  
  *  countries:  
  *  
  *    - Japan  
  *    - United States of America  
  *  
  *  Linking XviD statically or dynamically with other modules is making a  
  *  combined work based on XviD.  Thus, the terms and conditions of the  
  *  GNU General Public License cover the whole combination.  
  *  
  *  As a special exception, the copyright holders of XviD give you  
  *  permission to link XviD with independent modules that communicate with  
  *  XviD solely through the VFW1.1 and DShow interfaces, regardless of the  
  *  license terms of these independent modules, and to copy and distribute  
  *  the resulting combined work under terms of your choice, provided that  
  *  every copy of the combined work is accompanied by a complete copy of  
  *  the source code of XviD (the version of XviD used to produce the  
  *  combined work), being distributed under the terms of the GNU General  
  *  Public License plus this exception.  An independent module is a module  
  *  which is not derived from or based on XviD.  
  *  
  *  Note that people who make modified versions of XviD are not obligated  
  *  to grant this special exception for their modified versions; it is  
  *  their choice whether to do so.  The GNU General Public License gives  
  *  permission to release a modified version without this exception; this  
  *  exception also makes it possible to release a modified version which  
  *  carries forward this exception.  
  *  
22   * $Id$   * $Id$
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
26  #ifndef _COLORSPACE_H  #ifndef _COLORSPACE_H
   
27  #define _COLORSPACE_H  #define _COLORSPACE_H
28    
29  #include "../portab.h"  #include "../portab.h"
 #include "../divx4.h"  
30    
31  /* initialize tables */  /* initialize tables */
32    
33  void colorspace_init(void);  void colorspace_init(void);
34    
35    
 /* input color conversion functions (encoder) */  
   
 typedef void (color_inputFunc) (uint8_t * y_out,  
                                                                 uint8_t * u_out,  
                                                                 uint8_t * v_out,  
                                                                 uint8_t * src,  
                                                                 int width,  
                                                                 int height,  
                                                                 int stride);  
   
 typedef color_inputFunc *color_inputFuncPtr;  
   
 extern color_inputFuncPtr rgb555_to_yv12;  
 extern color_inputFuncPtr rgb565_to_yv12;  
 extern color_inputFuncPtr rgb24_to_yv12;  
 extern color_inputFuncPtr rgb32_to_yv12;  
 extern color_inputFuncPtr yuv_to_yv12;  
 extern color_inputFuncPtr yuyv_to_yv12;  
 extern color_inputFuncPtr uyvy_to_yv12;  
   
 /* plain c */  
 color_inputFunc rgb555_to_yv12_c;  
 color_inputFunc rgb565_to_yv12_c;  
 color_inputFunc rgb24_to_yv12_c;  
 color_inputFunc rgb32_to_yv12_c;  
 color_inputFunc yuv_to_yv12_c;  
 color_inputFunc yuyv_to_yv12_c;  
 color_inputFunc uyvy_to_yv12_c;  
   
 /* mmx */  
 color_inputFunc rgb24_to_yv12_mmx;  
 color_inputFunc rgb32_to_yv12_mmx;  
 color_inputFunc yuv_to_yv12_mmx;  
 color_inputFunc yuyv_to_yv12_mmx;  
 color_inputFunc uyvy_to_yv12_mmx;  
   
 /* xmm */  
 color_inputFunc yuv_to_yv12_xmm;  
   
36    
37  /* output color conversion functions (decoder) */  /* colorspace conversion function (encoder) */
38    
39  typedef void (color_outputFunc) (uint8_t * dst,  typedef void (packedFunc) (uint8_t * x_ptr,
40                                                                   int dst_stride,                                                                   int x_stride,
41                                                                   uint8_t * y_src,                                                                   uint8_t * y_src,
42                                                                   uint8_t * v_src,                                                                   uint8_t * v_src,
43                                                                   uint8_t * u_src,                                                                   uint8_t * u_src,
44                                                                   int y_stride,                                                                   int y_stride,
45                                                                   int uv_stride,                                                                   int uv_stride,
46                                                                   int width,                                                                   int width,
47                                                                   int height);                                                                   int height,
48                                                                     int vflip);
49    
50  typedef color_outputFunc *color_outputFuncPtr;  typedef packedFunc *packedFuncPtr;
51    
 extern color_outputFuncPtr yv12_to_rgb555;  
 extern color_outputFuncPtr yv12_to_rgb565;  
 extern color_outputFuncPtr yv12_to_rgb24;  
 extern color_outputFuncPtr yv12_to_rgb32;  
 extern color_outputFuncPtr yv12_to_yuv;  
 extern color_outputFuncPtr yv12_to_yuyv;  
 extern color_outputFuncPtr yv12_to_uyvy;  
52    
53  /* plain c */  /* xxx_to_yv12 colorspace conversion functions (encoder) */
54  void init_yuv_to_rgb(void);  
55    extern packedFuncPtr rgb555_to_yv12;
56    extern packedFuncPtr rgb565_to_yv12;
57    extern packedFuncPtr rgb_to_yv12;
58    extern packedFuncPtr bgr_to_yv12;
59    extern packedFuncPtr bgra_to_yv12;
60    extern packedFuncPtr abgr_to_yv12;
61    extern packedFuncPtr rgba_to_yv12;
62    extern packedFuncPtr argb_to_yv12;
63    extern packedFuncPtr yuyv_to_yv12;
64    extern packedFuncPtr uyvy_to_yv12;
65    
66    extern packedFuncPtr rgb555i_to_yv12;
67    extern packedFuncPtr rgb565i_to_yv12;
68    extern packedFuncPtr rgbi_to_yv12;
69    extern packedFuncPtr bgri_to_yv12;
70    extern packedFuncPtr bgrai_to_yv12;
71    extern packedFuncPtr abgri_to_yv12;
72    extern packedFuncPtr rgbai_to_yv12;
73    extern packedFuncPtr argbi_to_yv12;
74    extern packedFuncPtr yuyvi_to_yv12;
75    extern packedFuncPtr uyvyi_to_yv12;
76    
77  color_outputFunc yv12_to_rgb555_c;  /* plain c */
78  color_outputFunc yv12_to_rgb565_c;  packedFunc rgb555_to_yv12_c;
79  color_outputFunc yv12_to_rgb24_c;  packedFunc rgb565_to_yv12_c;
80  color_outputFunc yv12_to_rgb32_c;  packedFunc rgb_to_yv12_c;
81  color_outputFunc yv12_to_yuv_c;  packedFunc bgr_to_yv12_c;
82  color_outputFunc yv12_to_yuyv_c;  packedFunc bgra_to_yv12_c;
83  color_outputFunc yv12_to_uyvy_c;  packedFunc abgr_to_yv12_c;
84    packedFunc rgba_to_yv12_c;
85    packedFunc argb_to_yv12_c;
86    packedFunc yuyv_to_yv12_c;
87    packedFunc uyvy_to_yv12_c;
88    
89    packedFunc rgb555i_to_yv12_c;
90    packedFunc rgb565i_to_yv12_c;
91    packedFunc rgbi_to_yv12_c;
92    packedFunc bgri_to_yv12_c;
93    packedFunc bgrai_to_yv12_c;
94    packedFunc abgri_to_yv12_c;
95    packedFunc rgbai_to_yv12_c;
96    packedFunc argbi_to_yv12_c;
97    packedFunc yuyvi_to_yv12_c;
98    packedFunc uyvyi_to_yv12_c;
99    
100    #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
101  /* mmx */  /* mmx */
102  color_outputFunc yv12_to_rgb24_mmx;  packedFunc bgr_to_yv12_mmx;
103  color_outputFunc yv12_to_rgb32_mmx;  packedFunc rgb_to_yv12_mmx;
104  color_outputFunc yv12_to_yuyv_mmx;  packedFunc bgra_to_yv12_mmx;
105  color_outputFunc yv12_to_uyvy_mmx;  packedFunc rgba_to_yv12_mmx;
106    packedFunc yuyv_to_yv12_mmx;
107    packedFunc uyvy_to_yv12_mmx;
108    
109    /* 3dnow */
110    packedFunc yuyv_to_yv12_3dn;
111    packedFunc uyvy_to_yv12_3dn;
112    
113    /* xmm */
114    packedFunc yuyv_to_yv12_xmm;
115    packedFunc uyvy_to_yv12_xmm;
116    #endif
117    
118    #ifdef ARCH_IS_PPC
119    packedFunc bgra_to_yv12_altivec_c;
120    packedFunc abgr_to_yv12_altivec_c;
121    packedFunc rgba_to_yv12_altivec_c;
122    packedFunc argb_to_yv12_altivec_c;
123    
124    packedFunc yuyv_to_yv12_altivec_c;
125    packedFunc uyvy_to_yv12_altivec_c;
126    #endif
127    
128    /* yv12_to_xxx colorspace conversion functions (decoder) */
129    
130    extern packedFuncPtr yv12_to_rgb555;
131    extern packedFuncPtr yv12_to_rgb565;
132    extern packedFuncPtr yv12_to_rgb;
133    extern packedFuncPtr yv12_to_bgr;
134    extern packedFuncPtr yv12_to_bgra;
135    extern packedFuncPtr yv12_to_abgr;
136    extern packedFuncPtr yv12_to_rgba;
137    extern packedFuncPtr yv12_to_argb;
138    extern packedFuncPtr yv12_to_yuyv;
139    extern packedFuncPtr yv12_to_uyvy;
140    
141    extern packedFuncPtr yv12_to_rgb555i;
142    extern packedFuncPtr yv12_to_rgb565i;
143    extern packedFuncPtr yv12_to_rgbi;
144    extern packedFuncPtr yv12_to_bgri;
145    extern packedFuncPtr yv12_to_bgrai;
146    extern packedFuncPtr yv12_to_abgri;
147    extern packedFuncPtr yv12_to_rgbai;
148    extern packedFuncPtr yv12_to_argbi;
149    extern packedFuncPtr yv12_to_yuyvi;
150    extern packedFuncPtr yv12_to_uyvyi;
151    
152    /* plain c */
153    packedFunc yv12_to_rgb555_c;
154    packedFunc yv12_to_rgb565_c;
155    packedFunc yv12_to_rgb_c;
156    packedFunc yv12_to_bgr_c;
157    packedFunc yv12_to_bgra_c;
158    packedFunc yv12_to_abgr_c;
159    packedFunc yv12_to_rgba_c;
160    packedFunc yv12_to_argb_c;
161    packedFunc yv12_to_yuyv_c;
162    packedFunc yv12_to_uyvy_c;
163    
164    packedFunc yv12_to_rgb555i_c;
165    packedFunc yv12_to_rgb565i_c;
166    packedFunc yv12_to_rgbi_c;
167    packedFunc yv12_to_bgri_c;
168    packedFunc yv12_to_bgrai_c;
169    packedFunc yv12_to_abgri_c;
170    packedFunc yv12_to_rgbai_c;
171    packedFunc yv12_to_argbi_c;
172    packedFunc yv12_to_yuyvi_c;
173    packedFunc yv12_to_uyvyi_c;
174    
175    #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
176    /* mmx */
177    packedFunc yv12_to_bgr_mmx;
178    packedFunc yv12_to_bgra_mmx;
179    packedFunc yv12_to_yuyv_mmx;
180    packedFunc yv12_to_uyvy_mmx;
181    
182    packedFunc yv12_to_yuyvi_mmx;
183    packedFunc yv12_to_uyvyi_mmx;
184    #endif
185    
186    #ifdef ARCH_IS_PPC
187    packedFunc yv12_to_yuyv_altivec_c;
188    packedFunc yv12_to_uyvy_altivec_c;
189    #endif
190    
191    typedef void (planarFunc) (
192                                    uint8_t * y_dst, uint8_t * u_dst, uint8_t * v_dst,
193                                    int y_dst_stride, int uv_dst_stride,
194                                    uint8_t * y_src, uint8_t * u_src, uint8_t * v_src,
195                                    int y_src_stride, int uv_src_stride,
196                                    int width, int height, int vflip);
197    typedef planarFunc *planarFuncPtr;
198    
199    extern planarFuncPtr yv12_to_yv12;
200    
201    planarFunc yv12_to_yv12_c;
202    
203    #if defined(ARCH_IS_IA32) || defined(ARCH_IS_X86_64)
204    planarFunc yv12_to_yv12_mmx;
205    planarFunc yv12_to_yv12_xmm;
206    #endif
207    
 void user_to_yuv_c(uint8_t * y_out,  
                                    uint8_t * u_out,  
                                    uint8_t * v_out,  
                                    int stride,  
                                    DEC_PICTURE * picture,  
                                    int width,  
                                    int height);  
208    
209  #endif                                                  /* _COLORSPACE_H_ */  #endif                                                  /* _COLORSPACE_H_ */

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.10

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4