ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvs/xvidcore/src/image/colorspace.h
Revision: 1.10
Committed: Wed Nov 26 01:04:34 2008 UTC (15 years, 10 months ago) by Isibaar
Content type: text/plain
Branch: MAIN
CVS Tags: release-1_3_1, release-1_3_0, rc1_1_3_0, tag-branching-1_3_0, release-1_2_2, release-1_2_0, tag-branching-1_2_0, HEAD
Branch point for: release-1_3-branch, release-1_2-branch
Changes since 1.9: +4 -4 lines
Log Message:
Unified elf64/win64 X86_64 support

File Contents

# Content
1 /*****************************************************************************
2 *
3 * XVID MPEG-4 VIDEO CODEC
4 * - Colorspace related header -
5 *
6 * Copyright(C) 2001-2003 Peter Ross <pross@xvid.org>
7 *
8 * This program is free software ; you can redistribute it and/or modify
9 * 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
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY ; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program ; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 * $Id: colorspace.h,v 1.9 2006/11/12 01:40:36 chl Exp $
23 *
24 ****************************************************************************/
25
26 #ifndef _COLORSPACE_H
27 #define _COLORSPACE_H
28
29 #include "../portab.h"
30
31 /* initialize tables */
32
33 void colorspace_init(void);
34
35
36
37 /* colorspace conversion function (encoder) */
38
39 typedef void (packedFunc) (uint8_t * x_ptr,
40 int x_stride,
41 uint8_t * y_src,
42 uint8_t * v_src,
43 uint8_t * u_src,
44 int y_stride,
45 int uv_stride,
46 int width,
47 int height,
48 int vflip);
49
50 typedef packedFunc *packedFuncPtr;
51
52
53 /* xxx_to_yv12 colorspace conversion functions (encoder) */
54
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 /* plain c */
78 packedFunc rgb555_to_yv12_c;
79 packedFunc rgb565_to_yv12_c;
80 packedFunc rgb_to_yv12_c;
81 packedFunc bgr_to_yv12_c;
82 packedFunc bgra_to_yv12_c;
83 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 */
102 packedFunc bgr_to_yv12_mmx;
103 packedFunc rgb_to_yv12_mmx;
104 packedFunc bgra_to_yv12_mmx;
105 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
208
209 #endif /* _COLORSPACE_H_ */