Mercurial > mplayer.hg
annotate libswscale/yuv2rgb.c @ 24787:02535b3216c5
Avoid text deformation and subtitles moving outside the screen in pan-and-scan
mode.
For this, crop amounts are passed from vo_gl as negative margins sizes. They
are used to calculate aspect ratio. They are ignored when calculating subtitle
positions, so subtitles will stay on screen most of the time.
Based on a patch by Jindrich Makovicka [makovick gmail com].
author | eugeni |
---|---|
date | Fri, 19 Oct 2007 18:16:23 +0000 |
parents | 965e0c3565bf |
children | 2356fe5b7596 |
rev | line source |
---|---|
18861 | 1 /* |
23760 | 2 * yuv2rgb.c, Software YUV to RGB converter |
18861 | 3 * |
4 * Copyright (C) 1999, Aaron Holtzman <aholtzma@ess.engr.uvic.ca> | |
5 * | |
6 * Functions broken out from display_x11.c and several new modes | |
23732 | 7 * added by HÃ¥kan Hjort <d95hjort@dtek.chalmers.se> |
18861 | 8 * |
9 * 15 & 16 bpp support by Franck Sicard <Franck.Sicard@solsoft.fr> | |
10 * | |
23701 | 11 * MMX/MMX2 template stuff (needed for fast movntq support), |
12 * 1,4,8bpp support and context / deglobalize stuff | |
13 * by Michael Niedermayer (michaelni@gmx.at) | |
14 * | |
18861 | 15 * This file is part of mpeg2dec, a free MPEG-2 video decoder |
16 * | |
17 * mpeg2dec is free software; you can redistribute it and/or modify | |
18 * it under the terms of the GNU General Public License as published by | |
19 * the Free Software Foundation; either version 2, or (at your option) | |
20 * any later version. | |
21 * | |
22 * mpeg2dec is distributed in the hope that it will be useful, | |
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 * GNU General Public License for more details. | |
26 * | |
27 * You should have received a copy of the GNU General Public License | |
21976 | 28 * along with mpeg2dec; if not, write to the Free Software |
29 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
18861 | 30 */ |
31 | |
32 #include <stdio.h> | |
33 #include <stdlib.h> | |
34 #include <inttypes.h> | |
35 #include <assert.h> | |
36 | |
37 #include "config.h" | |
38 #include "rgb2rgb.h" | |
39 #include "swscale.h" | |
40 #include "swscale_internal.h" | |
41 | |
23805 | 42 #ifdef HAVE_VIS |
43 #include "yuv2rgb_vis.c" | |
44 #endif | |
45 | |
18861 | 46 #ifdef HAVE_MLIB |
47 #include "yuv2rgb_mlib.c" | |
48 #endif | |
49 | |
50 #define DITHER1XBPP // only for mmx | |
51 | |
52 const uint8_t __attribute__((aligned(8))) dither_2x2_4[2][8]={ | |
53 { 1, 3, 1, 3, 1, 3, 1, 3, }, | |
54 { 2, 0, 2, 0, 2, 0, 2, 0, }, | |
55 }; | |
56 | |
57 const uint8_t __attribute__((aligned(8))) dither_2x2_8[2][8]={ | |
58 { 6, 2, 6, 2, 6, 2, 6, 2, }, | |
59 { 0, 4, 0, 4, 0, 4, 0, 4, }, | |
60 }; | |
61 | |
62 const uint8_t __attribute__((aligned(8))) dither_8x8_32[8][8]={ | |
63 { 17, 9, 23, 15, 16, 8, 22, 14, }, | |
64 { 5, 29, 3, 27, 4, 28, 2, 26, }, | |
65 { 21, 13, 19, 11, 20, 12, 18, 10, }, | |
66 { 0, 24, 6, 30, 1, 25, 7, 31, }, | |
67 { 16, 8, 22, 14, 17, 9, 23, 15, }, | |
68 { 4, 28, 2, 26, 5, 29, 3, 27, }, | |
69 { 20, 12, 18, 10, 21, 13, 19, 11, }, | |
70 { 1, 25, 7, 31, 0, 24, 6, 30, }, | |
71 }; | |
72 | |
73 #if 0 | |
74 const uint8_t __attribute__((aligned(8))) dither_8x8_64[8][8]={ | |
75 { 0, 48, 12, 60, 3, 51, 15, 63, }, | |
76 { 32, 16, 44, 28, 35, 19, 47, 31, }, | |
77 { 8, 56, 4, 52, 11, 59, 7, 55, }, | |
78 { 40, 24, 36, 20, 43, 27, 39, 23, }, | |
79 { 2, 50, 14, 62, 1, 49, 13, 61, }, | |
80 { 34, 18, 46, 30, 33, 17, 45, 29, }, | |
81 { 10, 58, 6, 54, 9, 57, 5, 53, }, | |
82 { 42, 26, 38, 22, 41, 25, 37, 21, }, | |
83 }; | |
84 #endif | |
85 | |
86 const uint8_t __attribute__((aligned(8))) dither_8x8_73[8][8]={ | |
87 { 0, 55, 14, 68, 3, 58, 17, 72, }, | |
88 { 37, 18, 50, 32, 40, 22, 54, 35, }, | |
89 { 9, 64, 5, 59, 13, 67, 8, 63, }, | |
90 { 46, 27, 41, 23, 49, 31, 44, 26, }, | |
91 { 2, 57, 16, 71, 1, 56, 15, 70, }, | |
92 { 39, 21, 52, 34, 38, 19, 51, 33, }, | |
93 { 11, 66, 7, 62, 10, 65, 6, 60, }, | |
94 { 48, 30, 43, 25, 47, 29, 42, 24, }, | |
95 }; | |
96 | |
97 #if 0 | |
98 const uint8_t __attribute__((aligned(8))) dither_8x8_128[8][8]={ | |
99 { 68, 36, 92, 60, 66, 34, 90, 58, }, | |
100 { 20, 116, 12, 108, 18, 114, 10, 106, }, | |
101 { 84, 52, 76, 44, 82, 50, 74, 42, }, | |
102 { 0, 96, 24, 120, 6, 102, 30, 126, }, | |
103 { 64, 32, 88, 56, 70, 38, 94, 62, }, | |
104 { 16, 112, 8, 104, 22, 118, 14, 110, }, | |
105 { 80, 48, 72, 40, 86, 54, 78, 46, }, | |
106 { 4, 100, 28, 124, 2, 98, 26, 122, }, | |
107 }; | |
108 #endif | |
109 | |
110 #if 1 | |
111 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={ | |
112 {117, 62, 158, 103, 113, 58, 155, 100, }, | |
113 { 34, 199, 21, 186, 31, 196, 17, 182, }, | |
114 {144, 89, 131, 76, 141, 86, 127, 72, }, | |
115 { 0, 165, 41, 206, 10, 175, 52, 217, }, | |
116 {110, 55, 151, 96, 120, 65, 162, 107, }, | |
117 { 28, 193, 14, 179, 38, 203, 24, 189, }, | |
118 {138, 83, 124, 69, 148, 93, 134, 79, }, | |
119 { 7, 172, 48, 213, 3, 168, 45, 210, }, | |
120 }; | |
121 #elif 1 | |
122 // tries to correct a gamma of 1.5 | |
123 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={ | |
124 { 0, 143, 18, 200, 2, 156, 25, 215, }, | |
125 { 78, 28, 125, 64, 89, 36, 138, 74, }, | |
126 { 10, 180, 3, 161, 16, 195, 8, 175, }, | |
127 {109, 51, 93, 38, 121, 60, 105, 47, }, | |
128 { 1, 152, 23, 210, 0, 147, 20, 205, }, | |
129 { 85, 33, 134, 71, 81, 30, 130, 67, }, | |
130 { 14, 190, 6, 171, 12, 185, 5, 166, }, | |
131 {117, 57, 101, 44, 113, 54, 97, 41, }, | |
132 }; | |
133 #elif 1 | |
134 // tries to correct a gamma of 2.0 | |
135 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={ | |
136 { 0, 124, 8, 193, 0, 140, 12, 213, }, | |
137 { 55, 14, 104, 42, 66, 19, 119, 52, }, | |
138 { 3, 168, 1, 145, 6, 187, 3, 162, }, | |
139 { 86, 31, 70, 21, 99, 39, 82, 28, }, | |
140 { 0, 134, 11, 206, 0, 129, 9, 200, }, | |
141 { 62, 17, 114, 48, 58, 16, 109, 45, }, | |
142 { 5, 181, 2, 157, 4, 175, 1, 151, }, | |
143 { 95, 36, 78, 26, 90, 34, 74, 24, }, | |
144 }; | |
145 #else | |
146 // tries to correct a gamma of 2.5 | |
147 const uint8_t __attribute__((aligned(8))) dither_8x8_220[8][8]={ | |
148 { 0, 107, 3, 187, 0, 125, 6, 212, }, | |
149 { 39, 7, 86, 28, 49, 11, 102, 36, }, | |
150 { 1, 158, 0, 131, 3, 180, 1, 151, }, | |
151 { 68, 19, 52, 12, 81, 25, 64, 17, }, | |
152 { 0, 119, 5, 203, 0, 113, 4, 195, }, | |
153 { 45, 9, 96, 33, 42, 8, 91, 30, }, | |
154 { 2, 172, 1, 144, 2, 165, 0, 137, }, | |
155 { 77, 23, 60, 15, 72, 21, 56, 14, }, | |
156 }; | |
157 #endif | |
158 | |
19333
4f5e2e0529b1
Do not assemble MMX, MMX2 or 3DNOW code unconditionally on X86 and X86_64.
diego
parents:
19206
diff
changeset
|
159 #ifdef HAVE_MMX |
18861 | 160 |
161 /* hope these constant values are cache line aligned */ | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
162 static uint64_t attribute_used __attribute__((aligned(8))) mmx_00ffw = 0x00ff00ff00ff00ffULL; |
20018
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
163 static uint64_t attribute_used __attribute__((aligned(8))) mmx_redmask = 0xf8f8f8f8f8f8f8f8ULL; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
164 static uint64_t attribute_used __attribute__((aligned(8))) mmx_grnmask = 0xfcfcfcfcfcfcfcfcULL; |
18861 | 165 |
20018
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
166 static uint64_t attribute_used __attribute__((aligned(8))) M24A= 0x00FF0000FF0000FFULL; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
167 static uint64_t attribute_used __attribute__((aligned(8))) M24B= 0xFF0000FF0000FF00ULL; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
168 static uint64_t attribute_used __attribute__((aligned(8))) M24C= 0x0000FF0000FF0000ULL; |
18861 | 169 |
170 // the volatile is required because gcc otherwise optimizes some writes away not knowing that these | |
171 // are read in the asm block | |
20018
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
172 static volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
173 static volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
174 static volatile uint64_t attribute_used __attribute__((aligned(8))) g6Dither; |
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
175 static volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither; |
18861 | 176 |
20018
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
177 static uint64_t __attribute__((aligned(8))) dither4[2]={ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
178 0x0103010301030103LL, |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
179 0x0200020002000200LL,}; |
18861 | 180 |
20018
aa6cb6610d74
make some global var static (fix a build failure with shared lib on x86_64)
aurel
parents:
19872
diff
changeset
|
181 static uint64_t __attribute__((aligned(8))) dither8[2]={ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
182 0x0602060206020602LL, |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
183 0x0004000400040004LL,}; |
18861 | 184 |
185 #undef HAVE_MMX | |
186 | |
187 //MMX versions | |
188 #undef RENAME | |
189 #define HAVE_MMX | |
190 #undef HAVE_MMX2 | |
191 #undef HAVE_3DNOW | |
192 #define RENAME(a) a ## _MMX | |
193 #include "yuv2rgb_template.c" | |
194 | |
195 //MMX2 versions | |
196 #undef RENAME | |
197 #define HAVE_MMX | |
198 #define HAVE_MMX2 | |
199 #undef HAVE_3DNOW | |
200 #define RENAME(a) a ## _MMX2 | |
201 #include "yuv2rgb_template.c" | |
202 | |
20576 | 203 #endif /* defined(ARCH_X86) */ |
18861 | 204 |
205 const int32_t Inverse_Table_6_9[8][4] = { | |
206 {117504, 138453, 13954, 34903}, /* no sequence_display_extension */ | |
207 {117504, 138453, 13954, 34903}, /* ITU-R Rec. 709 (1990) */ | |
208 {104597, 132201, 25675, 53279}, /* unspecified */ | |
209 {104597, 132201, 25675, 53279}, /* reserved */ | |
210 {104448, 132798, 24759, 53109}, /* FCC */ | |
211 {104597, 132201, 25675, 53279}, /* ITU-R Rec. 624-4 System B, G */ | |
212 {104597, 132201, 25675, 53279}, /* SMPTE 170M */ | |
213 {117579, 136230, 16907, 35559} /* SMPTE 240M (1987) */ | |
214 }; | |
215 | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
216 #define RGB(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
217 U = pu[i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
218 V = pv[i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
219 r = (void *)c->table_rV[V]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
220 g = (void *)(c->table_gU[U] + c->table_gV[V]); \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
221 b = (void *)c->table_bU[U]; |
18861 | 222 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
223 #define DST1(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
224 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
225 dst_1[2*i] = r[Y] + g[Y] + b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
226 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
227 dst_1[2*i+1] = r[Y] + g[Y] + b[Y]; |
18861 | 228 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
229 #define DST2(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
230 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
231 dst_2[2*i] = r[Y] + g[Y] + b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
232 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
233 dst_2[2*i+1] = r[Y] + g[Y] + b[Y]; |
18861 | 234 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
235 #define DST1RGB(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
236 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
237 dst_1[6*i] = r[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
238 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
239 dst_1[6*i+3] = r[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = b[Y]; |
18861 | 240 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
241 #define DST2RGB(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
242 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
243 dst_2[6*i] = r[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
244 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
245 dst_2[6*i+3] = r[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = b[Y]; |
18861 | 246 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
247 #define DST1BGR(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
248 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
249 dst_1[6*i] = b[Y]; dst_1[6*i+1] = g[Y]; dst_1[6*i+2] = r[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
250 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
251 dst_1[6*i+3] = b[Y]; dst_1[6*i+4] = g[Y]; dst_1[6*i+5] = r[Y]; |
18861 | 252 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
253 #define DST2BGR(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
254 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
255 dst_2[6*i] = b[Y]; dst_2[6*i+1] = g[Y]; dst_2[6*i+2] = r[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
256 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
257 dst_2[6*i+3] = b[Y]; dst_2[6*i+4] = g[Y]; dst_2[6*i+5] = r[Y]; |
18861 | 258 |
259 #define PROLOG(func_name, dst_type) \ | |
260 static int func_name(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, \ | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
261 int srcSliceH, uint8_t* dst[], int dstStride[]){\ |
18861 | 262 int y;\ |
263 \ | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
264 if (c->srcFormat == PIX_FMT_YUV422P){\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
265 srcStride[1] *= 2;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
266 srcStride[2] *= 2;\ |
18861 | 267 }\ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
268 for (y=0; y<srcSliceH; y+=2){\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
269 dst_type *dst_1= (dst_type*)(dst[0] + (y+srcSliceY )*dstStride[0]);\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
270 dst_type *dst_2= (dst_type*)(dst[0] + (y+srcSliceY+1)*dstStride[0]);\ |
23400
16cce5d6ff9f
rename attribute_unused to av_unused as it is declared in common.h
benoit
parents:
23289
diff
changeset
|
271 dst_type av_unused *r, *b;\ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
272 dst_type *g;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
273 uint8_t *py_1= src[0] + y*srcStride[0];\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
274 uint8_t *py_2= py_1 + srcStride[0];\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
275 uint8_t *pu= src[1] + (y>>1)*srcStride[1];\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
276 uint8_t *pv= src[2] + (y>>1)*srcStride[2];\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
277 unsigned int h_size= c->dstW>>3;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
278 while (h_size--) {\ |
23400
16cce5d6ff9f
rename attribute_unused to av_unused as it is declared in common.h
benoit
parents:
23289
diff
changeset
|
279 int av_unused U, V;\ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
280 int Y;\ |
18861 | 281 |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
282 #define EPILOG1(dst_delta)\ |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
283 pu += 4;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
284 pv += 4;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
285 py_1 += 8;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
286 py_2 += 8;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
287 dst_1 += dst_delta;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
288 dst_2 += dst_delta;\ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
289 }\ |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
290 if (c->dstW & 4) {\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
291 int av_unused U, V;\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
292 int Y;\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
293 |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
294 #define EPILOG2()\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
295 }\ |
18861 | 296 }\ |
297 return srcSliceH;\ | |
298 } | |
299 | |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
300 #define EPILOG(dst_delta)\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
301 EPILOG1(dst_delta)\ |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
302 EPILOG2() |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
303 |
18861 | 304 PROLOG(yuv2rgb_c_32, uint32_t) |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
305 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
306 DST1(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
307 DST2(0); |
18861 | 308 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
309 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
310 DST2(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
311 DST1(1); |
18861 | 312 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
313 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
314 DST1(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
315 DST2(2); |
18861 | 316 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
317 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
318 DST2(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
319 DST1(3); |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
320 EPILOG1(8) |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
321 RGB(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
322 DST1(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
323 DST2(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
324 |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
325 RGB(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
326 DST2(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
327 DST1(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
328 EPILOG2() |
18861 | 329 |
330 PROLOG(yuv2rgb_c_24_rgb, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
331 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
332 DST1RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
333 DST2RGB(0); |
18861 | 334 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
335 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
336 DST2RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
337 DST1RGB(1); |
18861 | 338 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
339 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
340 DST1RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
341 DST2RGB(2); |
18861 | 342 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
343 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
344 DST2RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
345 DST1RGB(3); |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
346 EPILOG1(24) |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
347 RGB(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
348 DST1RGB(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
349 DST2RGB(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
350 |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
351 RGB(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
352 DST2RGB(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
353 DST1RGB(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
354 EPILOG2() |
18861 | 355 |
356 // only trivial mods from yuv2rgb_c_24_rgb | |
357 PROLOG(yuv2rgb_c_24_bgr, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
358 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
359 DST1BGR(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
360 DST2BGR(0); |
18861 | 361 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
362 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
363 DST2BGR(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
364 DST1BGR(1); |
18861 | 365 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
366 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
367 DST1BGR(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
368 DST2BGR(2); |
18861 | 369 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
370 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
371 DST2BGR(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
372 DST1BGR(3); |
23488
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
373 EPILOG1(24) |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
374 RGB(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
375 DST1BGR(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
376 DST2BGR(0); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
377 |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
378 RGB(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
379 DST2BGR(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
380 DST1BGR(1); |
63bc8943a1ad
Fix yuv2rgb C functions to work for widths divisible by 4 but not by 8
reimar
parents:
23400
diff
changeset
|
381 EPILOG2() |
18861 | 382 |
383 // This is exactly the same code as yuv2rgb_c_32 except for the types of | |
384 // r, g, b, dst_1, dst_2 | |
385 PROLOG(yuv2rgb_c_16, uint16_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
386 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
387 DST1(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
388 DST2(0); |
18861 | 389 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
390 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
391 DST2(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
392 DST1(1); |
18861 | 393 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
394 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
395 DST1(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
396 DST2(2); |
18861 | 397 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
398 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
399 DST2(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
400 DST1(3); |
18861 | 401 EPILOG(8) |
402 | |
403 // This is exactly the same code as yuv2rgb_c_32 except for the types of | |
404 // r, g, b, dst_1, dst_2 | |
405 PROLOG(yuv2rgb_c_8, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
406 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
407 DST1(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
408 DST2(0); |
18861 | 409 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
410 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
411 DST2(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
412 DST1(1); |
18861 | 413 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
414 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
415 DST1(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
416 DST2(2); |
18861 | 417 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
418 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
419 DST2(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
420 DST1(3); |
18861 | 421 EPILOG(8) |
422 | |
423 // r, g, b, dst_1, dst_2 | |
424 PROLOG(yuv2rgb_c_8_ordered_dither, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
425 const uint8_t *d32= dither_8x8_32[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
426 const uint8_t *d64= dither_8x8_73[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
427 #define DST1bpp8(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
428 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
429 dst_1[2*i] = r[Y+d32[0+o]] + g[Y+d32[0+o]] + b[Y+d64[0+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
430 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
431 dst_1[2*i+1] = r[Y+d32[1+o]] + g[Y+d32[1+o]] + b[Y+d64[1+o]]; |
18861 | 432 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
433 #define DST2bpp8(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
434 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
435 dst_2[2*i] = r[Y+d32[8+o]] + g[Y+d32[8+o]] + b[Y+d64[8+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
436 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
437 dst_2[2*i+1] = r[Y+d32[9+o]] + g[Y+d32[9+o]] + b[Y+d64[9+o]]; |
18861 | 438 |
439 | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
440 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
441 DST1bpp8(0,0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
442 DST2bpp8(0,0); |
18861 | 443 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
444 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
445 DST2bpp8(1,2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
446 DST1bpp8(1,2); |
18861 | 447 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
448 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
449 DST1bpp8(2,4); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
450 DST2bpp8(2,4); |
18861 | 451 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
452 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
453 DST2bpp8(3,6); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
454 DST1bpp8(3,6); |
18861 | 455 EPILOG(8) |
456 | |
457 | |
458 // This is exactly the same code as yuv2rgb_c_32 except for the types of | |
459 // r, g, b, dst_1, dst_2 | |
460 PROLOG(yuv2rgb_c_4, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
461 int acc; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
462 #define DST1_4(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
463 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
464 acc = r[Y] + g[Y] + b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
465 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
466 acc |= (r[Y] + g[Y] + b[Y])<<4; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
467 dst_1[i] = acc; |
18861 | 468 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
469 #define DST2_4(i) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
470 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
471 acc = r[Y] + g[Y] + b[Y]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
472 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
473 acc |= (r[Y] + g[Y] + b[Y])<<4; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
474 dst_2[i] = acc; |
23129 | 475 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
476 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
477 DST1_4(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
478 DST2_4(0); |
18861 | 479 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
480 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
481 DST2_4(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
482 DST1_4(1); |
18861 | 483 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
484 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
485 DST1_4(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
486 DST2_4(2); |
18861 | 487 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
488 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
489 DST2_4(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
490 DST1_4(3); |
18861 | 491 EPILOG(4) |
492 | |
493 PROLOG(yuv2rgb_c_4_ordered_dither, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
494 const uint8_t *d64= dither_8x8_73[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
495 const uint8_t *d128=dither_8x8_220[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
496 int acc; |
18861 | 497 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
498 #define DST1bpp4(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
499 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
500 acc = r[Y+d128[0+o]] + g[Y+d64[0+o]] + b[Y+d128[0+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
501 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
502 acc |= (r[Y+d128[1+o]] + g[Y+d64[1+o]] + b[Y+d128[1+o]])<<4; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
503 dst_1[i]= acc; |
18861 | 504 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
505 #define DST2bpp4(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
506 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
507 acc = r[Y+d128[8+o]] + g[Y+d64[8+o]] + b[Y+d128[8+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
508 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
509 acc |= (r[Y+d128[9+o]] + g[Y+d64[9+o]] + b[Y+d128[9+o]])<<4; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
510 dst_2[i]= acc; |
18861 | 511 |
512 | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
513 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
514 DST1bpp4(0,0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
515 DST2bpp4(0,0); |
18861 | 516 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
517 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
518 DST2bpp4(1,2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
519 DST1bpp4(1,2); |
18861 | 520 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
521 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
522 DST1bpp4(2,4); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
523 DST2bpp4(2,4); |
18861 | 524 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
525 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
526 DST2bpp4(3,6); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
527 DST1bpp4(3,6); |
18861 | 528 EPILOG(4) |
529 | |
530 // This is exactly the same code as yuv2rgb_c_32 except for the types of | |
531 // r, g, b, dst_1, dst_2 | |
532 PROLOG(yuv2rgb_c_4b, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
533 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
534 DST1(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
535 DST2(0); |
18861 | 536 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
537 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
538 DST2(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
539 DST1(1); |
18861 | 540 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
541 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
542 DST1(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
543 DST2(2); |
18861 | 544 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
545 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
546 DST2(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
547 DST1(3); |
18861 | 548 EPILOG(8) |
549 | |
550 PROLOG(yuv2rgb_c_4b_ordered_dither, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
551 const uint8_t *d64= dither_8x8_73[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
552 const uint8_t *d128=dither_8x8_220[y&7]; |
18861 | 553 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
554 #define DST1bpp4b(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
555 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
556 dst_1[2*i] = r[Y+d128[0+o]] + g[Y+d64[0+o]] + b[Y+d128[0+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
557 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
558 dst_1[2*i+1] = r[Y+d128[1+o]] + g[Y+d64[1+o]] + b[Y+d128[1+o]]; |
18861 | 559 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
560 #define DST2bpp4b(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
561 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
562 dst_2[2*i] = r[Y+d128[8+o]] + g[Y+d64[8+o]] + b[Y+d128[8+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
563 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
564 dst_2[2*i+1] = r[Y+d128[9+o]] + g[Y+d64[9+o]] + b[Y+d128[9+o]]; |
18861 | 565 |
566 | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
567 RGB(0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
568 DST1bpp4b(0,0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
569 DST2bpp4b(0,0); |
18861 | 570 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
571 RGB(1); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
572 DST2bpp4b(1,2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
573 DST1bpp4b(1,2); |
18861 | 574 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
575 RGB(2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
576 DST1bpp4b(2,4); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
577 DST2bpp4b(2,4); |
18861 | 578 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
579 RGB(3); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
580 DST2bpp4b(3,6); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
581 DST1bpp4b(3,6); |
18861 | 582 EPILOG(8) |
583 | |
584 PROLOG(yuv2rgb_c_1_ordered_dither, uint8_t) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
585 const uint8_t *d128=dither_8x8_220[y&7]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
586 char out_1=0, out_2=0; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
587 g= c->table_gU[128] + c->table_gV[128]; |
18861 | 588 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
589 #define DST1bpp1(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
590 Y = py_1[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
591 out_1+= out_1 + g[Y+d128[0+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
592 Y = py_1[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
593 out_1+= out_1 + g[Y+d128[1+o]]; |
18861 | 594 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
595 #define DST2bpp1(i,o) \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
596 Y = py_2[2*i]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
597 out_2+= out_2 + g[Y+d128[8+o]]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
598 Y = py_2[2*i+1]; \ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
599 out_2+= out_2 + g[Y+d128[9+o]]; |
18861 | 600 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
601 DST1bpp1(0,0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
602 DST2bpp1(0,0); |
18861 | 603 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
604 DST2bpp1(1,2); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
605 DST1bpp1(1,2); |
18861 | 606 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
607 DST1bpp1(2,4); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
608 DST2bpp1(2,4); |
18861 | 609 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
610 DST2bpp1(3,6); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
611 DST1bpp1(3,6); |
23129 | 612 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
613 dst_1[0]= out_1; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
614 dst_2[0]= out_2; |
18861 | 615 EPILOG(1) |
616 | |
617 SwsFunc yuv2rgb_get_func_ptr (SwsContext *c) | |
618 { | |
19333
4f5e2e0529b1
Do not assemble MMX, MMX2 or 3DNOW code unconditionally on X86 and X86_64.
diego
parents:
19206
diff
changeset
|
619 #if defined(HAVE_MMX2) || defined(HAVE_MMX) |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
620 if (c->flags & SWS_CPU_CAPS_MMX2){ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
621 switch(c->dstFormat){ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
622 case PIX_FMT_RGB32: return yuv420_rgb32_MMX2; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
623 case PIX_FMT_BGR24: return yuv420_rgb24_MMX2; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
624 case PIX_FMT_BGR565: return yuv420_rgb16_MMX2; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
625 case PIX_FMT_BGR555: return yuv420_rgb15_MMX2; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
626 } |
18861 | 627 } |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
628 if (c->flags & SWS_CPU_CAPS_MMX){ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
629 switch(c->dstFormat){ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
630 case PIX_FMT_RGB32: return yuv420_rgb32_MMX; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
631 case PIX_FMT_BGR24: return yuv420_rgb24_MMX; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
632 case PIX_FMT_BGR565: return yuv420_rgb16_MMX; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
633 case PIX_FMT_BGR555: return yuv420_rgb15_MMX; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
634 } |
18861 | 635 } |
636 #endif | |
23805 | 637 #ifdef HAVE_VIS |
638 { | |
639 SwsFunc t= yuv2rgb_init_vis(c); | |
640 if (t) return t; | |
641 } | |
642 #endif | |
18861 | 643 #ifdef HAVE_MLIB |
644 { | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
645 SwsFunc t= yuv2rgb_init_mlib(c); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
646 if (t) return t; |
18861 | 647 } |
648 #endif | |
649 #ifdef HAVE_ALTIVEC | |
650 if (c->flags & SWS_CPU_CAPS_ALTIVEC) | |
651 { | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
652 SwsFunc t = yuv2rgb_init_altivec(c); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
653 if (t) return t; |
18861 | 654 } |
655 #endif | |
656 | |
24607 | 657 #ifdef ARCH_BFIN |
23289
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
658 if (c->flags & SWS_CPU_CAPS_BFIN) |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
659 { |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
660 SwsFunc t = ff_bfin_yuv2rgb_get_func_ptr (c); |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
661 if (t) return t; |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
662 } |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
663 #endif |
786823779b67
Blackfin optimized YUV420 to RGB CSC Color Space Converters.
gpoirier
parents:
23157
diff
changeset
|
664 |
21981 | 665 av_log(c, AV_LOG_WARNING, "No accelerated colorspace conversion found\n"); |
18861 | 666 |
667 switch(c->dstFormat){ | |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
668 case PIX_FMT_BGR32: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
669 case PIX_FMT_RGB32: return yuv2rgb_c_32; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
670 case PIX_FMT_RGB24: return yuv2rgb_c_24_rgb; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
671 case PIX_FMT_BGR24: return yuv2rgb_c_24_bgr; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
672 case PIX_FMT_RGB565: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
673 case PIX_FMT_BGR565: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
674 case PIX_FMT_RGB555: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
675 case PIX_FMT_BGR555: return yuv2rgb_c_16; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
676 case PIX_FMT_RGB8: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
677 case PIX_FMT_BGR8: return yuv2rgb_c_8_ordered_dither; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
678 case PIX_FMT_RGB4: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
679 case PIX_FMT_BGR4: return yuv2rgb_c_4_ordered_dither; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
680 case PIX_FMT_RGB4_BYTE: |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
681 case PIX_FMT_BGR4_BYTE: return yuv2rgb_c_4b_ordered_dither; |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
682 case PIX_FMT_MONOBLACK: return yuv2rgb_c_1_ordered_dither; |
18861 | 683 default: |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
684 assert(0); |
18861 | 685 } |
686 return NULL; | |
687 } | |
688 | |
689 static int div_round (int dividend, int divisor) | |
690 { | |
691 if (dividend > 0) | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
692 return (dividend + (divisor>>1)) / divisor; |
18861 | 693 else |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
694 return -((-dividend + (divisor>>1)) / divisor); |
18861 | 695 } |
696 | |
697 int yuv2rgb_c_init_tables (SwsContext *c, const int inv_table[4], int fullRange, int brightness, int contrast, int saturation) | |
23129 | 698 { |
19872
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
699 const int isRgb = isBGR(c->dstFormat); |
8e50cba9fe03
Remove the dependency of libswscale on img_format.h
lucabe
parents:
19431
diff
changeset
|
700 const int bpp = fmt_depth(c->dstFormat); |
18861 | 701 int i; |
702 uint8_t table_Y[1024]; | |
703 uint32_t *table_32 = 0; | |
704 uint16_t *table_16 = 0; | |
705 uint8_t *table_8 = 0; | |
706 uint8_t *table_332 = 0; | |
707 uint8_t *table_121 = 0; | |
708 uint8_t *table_1 = 0; | |
709 int entry_size = 0; | |
710 void *table_r = 0, *table_g = 0, *table_b = 0; | |
711 void *table_start; | |
712 | |
713 int64_t crv = inv_table[0]; | |
714 int64_t cbu = inv_table[1]; | |
715 int64_t cgu = -inv_table[2]; | |
716 int64_t cgv = -inv_table[3]; | |
717 int64_t cy = 1<<16; | |
718 int64_t oy = 0; | |
719 | |
720 //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv); | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
721 if (!fullRange){ |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
722 cy= (cy*255) / 219; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
723 oy= 16<<16; |
22695 | 724 }else{ |
725 crv= (crv*224) / 255; | |
726 cbu= (cbu*224) / 255; | |
727 cgu= (cgu*224) / 255; | |
728 cgv= (cgv*224) / 255; | |
18861 | 729 } |
23129 | 730 |
18861 | 731 cy = (cy *contrast )>>16; |
732 crv= (crv*contrast * saturation)>>32; | |
733 cbu= (cbu*contrast * saturation)>>32; | |
734 cgu= (cgu*contrast * saturation)>>32; | |
735 cgv= (cgv*contrast * saturation)>>32; | |
736 //printf("%lld %lld %lld %lld %lld\n", cy, crv, cbu, cgu, cgv); | |
737 oy -= 256*brightness; | |
738 | |
739 for (i = 0; i < 1024; i++) { | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
740 int j; |
18861 | 741 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
742 j= (cy*(((i - 384)<<16) - oy) + (1<<31))>>32; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
743 j = (j < 0) ? 0 : ((j > 255) ? 255 : j); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
744 table_Y[i] = j; |
18861 | 745 } |
746 | |
747 switch (bpp) { | |
748 case 32: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
749 table_start= table_32 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint32_t)); |
18861 | 750 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
751 entry_size = sizeof (uint32_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
752 table_r = table_32 + 197; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
753 table_b = table_32 + 197 + 685; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
754 table_g = table_32 + 197 + 2*682; |
18861 | 755 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
756 for (i = -197; i < 256+197; i++) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
757 ((uint32_t *)table_r)[i] = table_Y[i+384] << (isRgb ? 16 : 0); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
758 for (i = -132; i < 256+132; i++) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
759 ((uint32_t *)table_g)[i] = table_Y[i+384] << 8; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
760 for (i = -232; i < 256+232; i++) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
761 ((uint32_t *)table_b)[i] = table_Y[i+384] << (isRgb ? 0 : 16); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
762 break; |
18861 | 763 |
764 case 24: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
765 table_start= table_8 = av_malloc ((256 + 2*232) * sizeof (uint8_t)); |
18861 | 766 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
767 entry_size = sizeof (uint8_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
768 table_r = table_g = table_b = table_8 + 232; |
18861 | 769 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
770 for (i = -232; i < 256+232; i++) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
771 ((uint8_t * )table_b)[i] = table_Y[i+384]; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
772 break; |
18861 | 773 |
774 case 15: | |
775 case 16: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
776 table_start= table_16 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint16_t)); |
18861 | 777 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
778 entry_size = sizeof (uint16_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
779 table_r = table_16 + 197; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
780 table_b = table_16 + 197 + 685; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
781 table_g = table_16 + 197 + 2*682; |
18861 | 782 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
783 for (i = -197; i < 256+197; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
784 int j = table_Y[i+384] >> 3; |
18861 | 785 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
786 if (isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
787 j <<= ((bpp==16) ? 11 : 10); |
18861 | 788 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
789 ((uint16_t *)table_r)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
790 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
791 for (i = -132; i < 256+132; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
792 int j = table_Y[i+384] >> ((bpp==16) ? 2 : 3); |
18861 | 793 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
794 ((uint16_t *)table_g)[i] = j << 5; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
795 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
796 for (i = -232; i < 256+232; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
797 int j = table_Y[i+384] >> 3; |
18861 | 798 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
799 if (!isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
800 j <<= ((bpp==16) ? 11 : 10); |
18861 | 801 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
802 ((uint16_t *)table_b)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
803 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
804 break; |
18861 | 805 |
806 case 8: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
807 table_start= table_332 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint8_t)); |
18861 | 808 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
809 entry_size = sizeof (uint8_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
810 table_r = table_332 + 197; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
811 table_b = table_332 + 197 + 685; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
812 table_g = table_332 + 197 + 2*682; |
18861 | 813 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
814 for (i = -197; i < 256+197; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
815 int j = (table_Y[i+384 - 16] + 18)/36; |
18861 | 816 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
817 if (isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
818 j <<= 5; |
18861 | 819 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
820 ((uint8_t *)table_r)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
821 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
822 for (i = -132; i < 256+132; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
823 int j = (table_Y[i+384 - 16] + 18)/36; |
18861 | 824 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
825 if (!isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
826 j <<= 1; |
18861 | 827 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
828 ((uint8_t *)table_g)[i] = j << 2; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
829 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
830 for (i = -232; i < 256+232; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
831 int j = (table_Y[i+384 - 37] + 43)/85; |
18861 | 832 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
833 if (!isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
834 j <<= 6; |
18861 | 835 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
836 ((uint8_t *)table_b)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
837 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
838 break; |
18861 | 839 case 4: |
840 case 4|128: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
841 table_start= table_121 = av_malloc ((197 + 2*682 + 256 + 132) * sizeof (uint8_t)); |
18861 | 842 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
843 entry_size = sizeof (uint8_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
844 table_r = table_121 + 197; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
845 table_b = table_121 + 197 + 685; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
846 table_g = table_121 + 197 + 2*682; |
18861 | 847 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
848 for (i = -197; i < 256+197; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
849 int j = table_Y[i+384 - 110] >> 7; |
18861 | 850 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
851 if (isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
852 j <<= 3; |
18861 | 853 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
854 ((uint8_t *)table_r)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
855 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
856 for (i = -132; i < 256+132; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
857 int j = (table_Y[i+384 - 37]+ 43)/85; |
18861 | 858 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
859 ((uint8_t *)table_g)[i] = j << 1; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
860 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
861 for (i = -232; i < 256+232; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
862 int j =table_Y[i+384 - 110] >> 7; |
18861 | 863 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
864 if (!isRgb) |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
865 j <<= 3; |
18861 | 866 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
867 ((uint8_t *)table_b)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
868 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
869 break; |
18861 | 870 |
871 case 1: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
872 table_start= table_1 = av_malloc (256*2 * sizeof (uint8_t)); |
18861 | 873 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
874 entry_size = sizeof (uint8_t); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
875 table_g = table_1; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
876 table_r = table_b = NULL; |
18861 | 877 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
878 for (i = 0; i < 256+256; i++) { |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
879 int j = table_Y[i + 384 - 110]>>7; |
18861 | 880 |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
881 ((uint8_t *)table_g)[i] = j; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
882 } |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
883 break; |
18861 | 884 |
885 default: | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
886 table_start= NULL; |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
887 av_log(c, AV_LOG_ERROR, "%ibpp not supported by yuv2rgb\n", bpp); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
888 //free mem? |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
889 return -1; |
18861 | 890 } |
891 | |
892 for (i = 0; i < 256; i++) { | |
23157
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
893 c->table_rV[i] = (uint8_t *)table_r + entry_size * div_round (crv * (i-128), 76309); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
894 c->table_gU[i] = (uint8_t *)table_g + entry_size * div_round (cgu * (i-128), 76309); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
895 c->table_gV[i] = entry_size * div_round (cgv * (i-128), 76309); |
ebc55c913d73
cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents:
23129
diff
changeset
|
896 c->table_bU[i] = (uint8_t *)table_b + entry_size * div_round (cbu * (i-128), 76309); |
18861 | 897 } |
898 | |
19143
c4dac777b44c
Use libavutil in libswscale, and allow it to be built out of the mplayer tree
lucabe
parents:
18861
diff
changeset
|
899 av_free(c->yuvTable); |
18861 | 900 c->yuvTable= table_start; |
901 return 0; | |
902 } |