annotate libswscale/yuv2rgb_altivec.c @ 28615:15e7abed4291

Use the same code to convert fps in float to fraction as used in mencoder, it ensures all the common frame rates work right. If this causes issues, it should be changed in the same way in mencoder.c
author reimar
date Wed, 18 Feb 2009 16:49:12 +0000
parents 75586eb0750d
children 61e4dbf0da9e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
1 /*
27155
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
2 * AltiVec acceleration for colorspace conversion
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
3 *
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
4 * copyright (C) 2004 Marc Hoffman <marc.hoffman@analog.com>
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
5 *
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
6 * This file is part of FFmpeg.
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
7 *
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or modify
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
9 * it under the terms of the GNU General Public License as published by
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
11 * (at your option) any later version.
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
12 *
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
16 * GNU General Public License for more details.
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
17 *
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
18 * You should have received a copy of the GNU General Public License
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
19 * along with FFmpeg; if not, write to the Free Software
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
21 */
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
22
27155
d5d7ecbbf0d8 Place license header at the top of the file for consistency.
diego
parents: 26219
diff changeset
23 /*
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
24 Convert I420 YV12 to RGB in various formats,
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
25 it rejects images that are not in 420 formats,
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
26 it rejects images that don't have widths of multiples of 16,
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
27 it rejects images that don't have heights of multiples of 2.
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
28 Reject defers to C simulation code.
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
29
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
30 Lots of optimizations to be done here.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
31
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
32 1. Need to fix saturation code. I just couldn't get it to fly with packs
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
33 and adds, so we currently use max/min to clip.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
34
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
35 2. The inefficient use of chroma loading needs a bit of brushing up.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
36
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
37 3. Analysis of pipeline stalls needs to be done. Use shark to identify
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
38 pipeline stalls.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
39
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
40
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
41 MODIFIED to calculate coeffs from currently selected color space.
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
42 MODIFIED core to be a macro where you specify the output format.
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
43 ADDED UYVY conversion which is never called due to some thing in swscale.
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
44 CORRECTED algorithim selection to be strict on input formats.
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
45 ADDED runtime detection of AltiVec.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
46
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
47 ADDED altivec_yuv2packedX vertical scl + RGB converter
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
48
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
49 March 27,2004
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
50 PERFORMANCE ANALYSIS
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
51
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
52 The C version uses 25% of the processor or ~250Mips for D1 video rawvideo
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
53 used as test.
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
54 The AltiVec version uses 10% of the processor or ~100Mips for D1 video
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
55 same sequence.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
56
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
57 720 * 480 * 30 ~10MPS
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
58
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
59 so we have roughly 10 clocks per pixel. This is too high, something has
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
60 to be wrong.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
61
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
62 OPTIMIZED clip codes to utilize vec_max and vec_packs removing the
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
63 need for vec_min.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
64
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
65 OPTIMIZED DST OUTPUT cache/DMA controls. We are pretty much guaranteed to have
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
66 the input video frame, it was just decompressed so it probably resides in L1
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
67 caches. However, we are creating the output video stream. This needs to use the
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
68 DSTST instruction to optimize for the cache. We couple this with the fact that
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
69 we are not going to be visiting the input buffer again so we mark it Least
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
70 Recently Used. This shaves 25% of the processor cycles off.
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
71
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
72 Now memcpy is the largest mips consumer in the system, probably due
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
73 to the inefficient X11 stuff.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
74
27156
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
75 GL libraries seem to be very slow on this machine 1.33Ghz PB running
23f1738030fc whitespace cosmetics
diego
parents: 27155
diff changeset
76 Jaguar, this is not the case for my 1Ghz PB. I thought it might be
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
77 a versioning issue, however I have libGL.1.2.dylib for both
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
78 machines. (We need to figure this out now.)
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
79
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
80 GL2 libraries work now with patch for RGB32.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
81
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
82 NOTE: quartz vo driver ARGB32_to_RGB24 consumes 30% of the processor.
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
83
27158
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
84 Integrated luma prescaling adjustment for saturation/contrast/brightness
65b8334df960 spelling/grammar/wording overhaul
diego
parents: 27156
diff changeset
85 adjustment.
20094
aca9e9783f67 Change license headers to say 'FFmpeg' instead of 'this program'.
diego
parents: 20006
diff changeset
86 */
19766
cb40a93756af Add proper GPL headers.
diego
parents: 19431
diff changeset
87
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
88 #include <stdio.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
89 #include <stdlib.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
90 #include <string.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
91 #include <inttypes.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
92 #include <assert.h>
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
93 #include "config.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
94 #include "rgb2rgb.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
95 #include "swscale.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
96 #include "swscale_internal.h"
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
97
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
98 #undef PROFILE_THE_BEAST
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
99 #undef INC_SCALING
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
100
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
101 typedef unsigned char ubyte;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
102 typedef signed char sbyte;
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
103
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
104
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
105 /* RGB interleaver, 16 planar pels 8-bit samples per channel in
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
106 homogeneous vector registers x0,x1,x2 are interleaved with the
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
107 following technique:
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
108
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
109 o0 = vec_mergeh (x0,x1);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
110 o1 = vec_perm (o0, x2, perm_rgb_0);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
111 o2 = vec_perm (o0, x2, perm_rgb_1);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
112 o3 = vec_mergel (x0,x1);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
113 o4 = vec_perm (o3,o2,perm_rgb_2);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
114 o5 = vec_perm (o3,o2,perm_rgb_3);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
115
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
116 perm_rgb_0: o0(RG).h v1(B) --> o1*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
117 0 1 2 3 4
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
118 rgbr|gbrg|brgb|rgbr
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
119 0010 0100 1001 0010
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
120 0102 3145 2673 894A
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
121
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
122 perm_rgb_1: o0(RG).h v1(B) --> o2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
123 0 1 2 3 4
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
124 gbrg|brgb|bbbb|bbbb
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
125 0100 1001 1111 1111
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
126 B5CD 6EF7 89AB CDEF
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
127
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
128 perm_rgb_2: o3(RG).l o2(rgbB.l) --> o4*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
129 0 1 2 3 4
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
130 gbrg|brgb|rgbr|gbrg
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
131 1111 1111 0010 0100
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
132 89AB CDEF 0182 3945
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
133
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
134 perm_rgb_2: o3(RG).l o2(rgbB.l) ---> o5*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
135 0 1 2 3 4
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
136 brgb|rgbr|gbrg|brgb
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
137 1001 0010 0100 1001
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
138 a67b 89cA BdCD eEFf
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
139
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
140 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
141 static
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
142 const vector unsigned char
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
143 perm_rgb_0 = {0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
144 0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a},
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
145 perm_rgb_1 = {0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
146 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f},
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
147 perm_rgb_2 = {0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
148 0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05},
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
149 perm_rgb_3 = {0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
150 0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
151
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
152 #define vec_merge3(x2,x1,x0,y0,y1,y2) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
153 do { \
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
154 __typeof__(x0) o0,o2,o3; \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
155 o0 = vec_mergeh (x0,x1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
156 y0 = vec_perm (o0, x2, perm_rgb_0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
157 o2 = vec_perm (o0, x2, perm_rgb_1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
158 o3 = vec_mergel (x0,x1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
159 y1 = vec_perm (o3,o2,perm_rgb_2); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
160 y2 = vec_perm (o3,o2,perm_rgb_3); \
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
161 } while(0)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
162
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
163 #define vec_mstbgr24(x0,x1,x2,ptr) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
164 do { \
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
165 __typeof__(x0) _0,_1,_2; \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
166 vec_merge3 (x0,x1,x2,_0,_1,_2); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
167 vec_st (_0, 0, ptr++); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
168 vec_st (_1, 0, ptr++); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
169 vec_st (_2, 0, ptr++); \
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
170 } while (0);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
171
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
172 #define vec_mstrgb24(x0,x1,x2,ptr) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
173 do { \
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
174 __typeof__(x0) _0,_1,_2; \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
175 vec_merge3 (x2,x1,x0,_0,_1,_2); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
176 vec_st (_0, 0, ptr++); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
177 vec_st (_1, 0, ptr++); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
178 vec_st (_2, 0, ptr++); \
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
179 } while (0);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
180
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
181 /* pack the pixels in rgb0 format
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
182 msb R
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
183 lsb 0
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
184 */
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
185 #define vec_mstrgb32(T,x0,x1,x2,x3,ptr) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
186 do { \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
187 T _0,_1,_2,_3; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
188 _0 = vec_mergeh (x0,x1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
189 _1 = vec_mergeh (x2,x3); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
190 _2 = (T)vec_mergeh ((vector unsigned short)_0,(vector unsigned short)_1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
191 _3 = (T)vec_mergel ((vector unsigned short)_0,(vector unsigned short)_1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
192 vec_st (_2, 0*16, (T *)ptr); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
193 vec_st (_3, 1*16, (T *)ptr); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
194 _0 = vec_mergel (x0,x1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
195 _1 = vec_mergel (x2,x3); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
196 _2 = (T)vec_mergeh ((vector unsigned short)_0,(vector unsigned short)_1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
197 _3 = (T)vec_mergel ((vector unsigned short)_0,(vector unsigned short)_1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
198 vec_st (_2, 2*16, (T *)ptr); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
199 vec_st (_3, 3*16, (T *)ptr); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
200 ptr += 4; \
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
201 } while (0);
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
202
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
203 /*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
204
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
205 | 1 0 1.4021 | | Y |
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
206 | 1 -0.3441 -0.7142 |x| Cb|
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
207 | 1 1.7718 0 | | Cr|
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
208
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
209
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
210 Y: [-128 127]
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
211 Cb/Cr : [-128 127]
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
212
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
213 typical yuv conversion work on Y: 0-255 this version has been optimized for jpeg decode.
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
214
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
215 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
216
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
217
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
218
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
219
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
220 #define vec_unh(x) \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
221 (vector signed short) \
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
222 vec_perm(x,(__typeof__(x)){0}, \
27317
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
223 ((vector unsigned char){0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
224 0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07}))
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
225 #define vec_unl(x) \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
226 (vector signed short) \
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
227 vec_perm(x,(__typeof__(x)){0}, \
27317
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
228 ((vector unsigned char){0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
229 0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F}))
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
230
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
231 #define vec_clip_s16(x) \
27317
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
232 vec_max (vec_min (x, ((vector signed short){235,235,235,235,235,235,235,235})), \
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
233 ((vector signed short){ 16, 16, 16, 16, 16, 16, 16, 16}))
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
234
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
235 #define vec_packclp(x,y) \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
236 (vector unsigned char)vec_packs \
27317
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
237 ((vector unsigned short)vec_max (x,((vector signed short) {0})), \
5707f04b8e69 compilation fix with GCC 4.0.1 on MacOSX tiger, broken by the removal of AVV() macro
gpoirier
parents: 27313
diff changeset
238 (vector unsigned short)vec_max (y,((vector signed short) {0})))
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
239
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
240 //#define out_pixels(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),a,a,a,ptr)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
241
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
242
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
243 static inline void cvtyuvtoRGB (SwsContext *c,
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
244 vector signed short Y, vector signed short U, vector signed short V,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
245 vector signed short *R, vector signed short *G, vector signed short *B)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
246 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
247 vector signed short vx,ux,uvx;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
248
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
249 Y = vec_mradds (Y, c->CY, c->OY);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
250 U = vec_sub (U,(vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
251 vec_splat((vector signed short){128},0));
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
252 V = vec_sub (V,(vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
253 vec_splat((vector signed short){128},0));
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
254
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
255 // ux = (CBU*(u<<c->CSHIFT)+0x4000)>>15;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
256 ux = vec_sl (U, c->CSHIFT);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
257 *B = vec_mradds (ux, c->CBU, Y);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
258
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
259 // vx = (CRV*(v<<c->CSHIFT)+0x4000)>>15;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
260 vx = vec_sl (V, c->CSHIFT);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
261 *R = vec_mradds (vx, c->CRV, Y);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
262
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
263 // uvx = ((CGU*u) + (CGV*v))>>15;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
264 uvx = vec_mradds (U, c->CGU, Y);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
265 *G = vec_mradds (V, c->CGV, uvx);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
266 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
267
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
268
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
269 /*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
270 ------------------------------------------------------------------------------
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
271 CS converters
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
272 ------------------------------------------------------------------------------
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
273 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
274
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
275
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
276 #define DEFCSP420_CVT(name,out_pixels) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
277 static int altivec_##name (SwsContext *c, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
278 unsigned char **in, int *instrides, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
279 int srcSliceY, int srcSliceH, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
280 unsigned char **oplanes, int *outstrides) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
281 { \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
282 int w = c->srcW; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
283 int h = srcSliceH; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
284 int i,j; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
285 int instrides_scl[3]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
286 vector unsigned char y0,y1; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
287 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
288 vector signed char u,v; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
289 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
290 vector signed short Y0,Y1,Y2,Y3; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
291 vector signed short U,V; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
292 vector signed short vx,ux,uvx; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
293 vector signed short vx0,ux0,uvx0; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
294 vector signed short vx1,ux1,uvx1; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
295 vector signed short R0,G0,B0; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
296 vector signed short R1,G1,B1; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
297 vector unsigned char R,G,B; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
298 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
299 vector unsigned char *y1ivP, *y2ivP, *uivP, *vivP; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
300 vector unsigned char align_perm; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
301 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
302 vector signed short \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
303 lCY = c->CY, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
304 lOY = c->OY, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
305 lCRV = c->CRV, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
306 lCBU = c->CBU, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
307 lCGU = c->CGU, \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
308 lCGV = c->CGV; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
309 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
310 vector unsigned short lCSHIFT = c->CSHIFT; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
311 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
312 ubyte *y1i = in[0]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
313 ubyte *y2i = in[0]+instrides[0]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
314 ubyte *ui = in[1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
315 ubyte *vi = in[2]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
316 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
317 vector unsigned char *oute \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
318 = (vector unsigned char *) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
319 (oplanes[0]+srcSliceY*outstrides[0]); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
320 vector unsigned char *outo \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
321 = (vector unsigned char *) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
322 (oplanes[0]+srcSliceY*outstrides[0]+outstrides[0]); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
323 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
324 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
325 instrides_scl[0] = instrides[0]*2-w; /* the loop moves y{1,2}i by w */ \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
326 instrides_scl[1] = instrides[1]-w/2; /* the loop moves ui by w/2 */ \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
327 instrides_scl[2] = instrides[2]-w/2; /* the loop moves vi by w/2 */ \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
328 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
329 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
330 for (i=0;i<h/2;i++) { \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
331 vec_dstst (outo, (0x02000002|(((w*3+32)/32)<<16)), 0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
332 vec_dstst (oute, (0x02000002|(((w*3+32)/32)<<16)), 1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
333 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
334 for (j=0;j<w/16;j++) { \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
335 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
336 y1ivP = (vector unsigned char *)y1i; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
337 y2ivP = (vector unsigned char *)y2i; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
338 uivP = (vector unsigned char *)ui; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
339 vivP = (vector unsigned char *)vi; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
340 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
341 align_perm = vec_lvsl (0, y1i); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
342 y0 = (vector unsigned char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
343 vec_perm (y1ivP[0], y1ivP[1], align_perm); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
344 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
345 align_perm = vec_lvsl (0, y2i); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
346 y1 = (vector unsigned char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
347 vec_perm (y2ivP[0], y2ivP[1], align_perm); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
348 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
349 align_perm = vec_lvsl (0, ui); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
350 u = (vector signed char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
351 vec_perm (uivP[0], uivP[1], align_perm); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
352 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
353 align_perm = vec_lvsl (0, vi); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
354 v = (vector signed char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
355 vec_perm (vivP[0], vivP[1], align_perm); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
356 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
357 u = (vector signed char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
358 vec_sub (u,(vector signed char) \
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
359 vec_splat((vector signed char){128},0)); \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
360 v = (vector signed char) \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
361 vec_sub (v,(vector signed char) \
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
362 vec_splat((vector signed char){128},0)); \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
363 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
364 U = vec_unpackh (u); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
365 V = vec_unpackh (v); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
366 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
367 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
368 Y0 = vec_unh (y0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
369 Y1 = vec_unl (y0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
370 Y2 = vec_unh (y1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
371 Y3 = vec_unl (y1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
372 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
373 Y0 = vec_mradds (Y0, lCY, lOY); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
374 Y1 = vec_mradds (Y1, lCY, lOY); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
375 Y2 = vec_mradds (Y2, lCY, lOY); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
376 Y3 = vec_mradds (Y3, lCY, lOY); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
377 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
378 /* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */ \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
379 ux = vec_sl (U, lCSHIFT); \
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
380 ux = vec_mradds (ux, lCBU, (vector signed short){0}); \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
381 ux0 = vec_mergeh (ux,ux); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
382 ux1 = vec_mergel (ux,ux); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
383 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
384 /* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */ \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
385 vx = vec_sl (V, lCSHIFT); \
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
386 vx = vec_mradds (vx, lCRV, (vector signed short){0}); \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
387 vx0 = vec_mergeh (vx,vx); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
388 vx1 = vec_mergel (vx,vx); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
389 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
390 /* uvx = ((CGU*u) + (CGV*v))>>15 */ \
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
391 uvx = vec_mradds (U, lCGU, (vector signed short){0}); \
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
392 uvx = vec_mradds (V, lCGV, uvx); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
393 uvx0 = vec_mergeh (uvx,uvx); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
394 uvx1 = vec_mergel (uvx,uvx); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
395 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
396 R0 = vec_add (Y0,vx0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
397 G0 = vec_add (Y0,uvx0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
398 B0 = vec_add (Y0,ux0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
399 R1 = vec_add (Y1,vx1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
400 G1 = vec_add (Y1,uvx1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
401 B1 = vec_add (Y1,ux1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
402 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
403 R = vec_packclp (R0,R1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
404 G = vec_packclp (G0,G1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
405 B = vec_packclp (B0,B1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
406 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
407 out_pixels(R,G,B,oute); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
408 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
409 R0 = vec_add (Y2,vx0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
410 G0 = vec_add (Y2,uvx0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
411 B0 = vec_add (Y2,ux0); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
412 R1 = vec_add (Y3,vx1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
413 G1 = vec_add (Y3,uvx1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
414 B1 = vec_add (Y3,ux1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
415 R = vec_packclp (R0,R1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
416 G = vec_packclp (G0,G1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
417 B = vec_packclp (B0,B1); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
418 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
419 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
420 out_pixels(R,G,B,outo); \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
421 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
422 y1i += 16; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
423 y2i += 16; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
424 ui += 8; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
425 vi += 8; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
426 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
427 } \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
428 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
429 outo += (outstrides[0])>>4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
430 oute += (outstrides[0])>>4; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
431 \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
432 ui += instrides_scl[1]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
433 vi += instrides_scl[2]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
434 y1i += instrides_scl[0]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
435 y2i += instrides_scl[0]; \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
436 } \
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
437 return srcSliceH; \
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
438 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
439
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
440
27771
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
441 #define out_abgr(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),c,b,a,ptr)
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
442 #define out_bgra(a,b,c,ptr) vec_mstrgb32(__typeof__(a),c,b,a,((__typeof__ (a)){0}),ptr)
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
443 #define out_rgba(a,b,c,ptr) vec_mstrgb32(__typeof__(a),a,b,c,((__typeof__ (a)){0}),ptr)
15df1f217e6d Convert typeof keyword into __typeof__
conrad
parents: 27317
diff changeset
444 #define out_argb(a,b,c,ptr) vec_mstrgb32(__typeof__(a),((__typeof__ (a)){0}),a,b,c,ptr)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
445 #define out_rgb24(a,b,c,ptr) vec_mstrgb24(a,b,c,ptr)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
446 #define out_bgr24(a,b,c,ptr) vec_mstbgr24(a,b,c,ptr)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
447
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
448 DEFCSP420_CVT (yuv2_abgr, out_abgr)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
449 #if 1
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
450 DEFCSP420_CVT (yuv2_bgra, out_bgra)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
451 #else
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
452 static int altivec_yuv2_bgra32 (SwsContext *c,
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
453 unsigned char **in, int *instrides,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
454 int srcSliceY, int srcSliceH,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
455 unsigned char **oplanes, int *outstrides)
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
456 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
457 int w = c->srcW;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
458 int h = srcSliceH;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
459 int i,j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
460 int instrides_scl[3];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
461 vector unsigned char y0,y1;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
462
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
463 vector signed char u,v;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
464
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
465 vector signed short Y0,Y1,Y2,Y3;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
466 vector signed short U,V;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
467 vector signed short vx,ux,uvx;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
468 vector signed short vx0,ux0,uvx0;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
469 vector signed short vx1,ux1,uvx1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
470 vector signed short R0,G0,B0;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
471 vector signed short R1,G1,B1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
472 vector unsigned char R,G,B;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
473
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
474 vector unsigned char *uivP, *vivP;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
475 vector unsigned char align_perm;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
476
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
477 vector signed short
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
478 lCY = c->CY,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
479 lOY = c->OY,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
480 lCRV = c->CRV,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
481 lCBU = c->CBU,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
482 lCGU = c->CGU,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
483 lCGV = c->CGV;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
484
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
485 vector unsigned short lCSHIFT = c->CSHIFT;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
486
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
487 ubyte *y1i = in[0];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
488 ubyte *y2i = in[0]+w;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
489 ubyte *ui = in[1];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
490 ubyte *vi = in[2];
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
491
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
492 vector unsigned char *oute
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
493 = (vector unsigned char *)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
494 (oplanes[0]+srcSliceY*outstrides[0]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
495 vector unsigned char *outo
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
496 = (vector unsigned char *)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
497 (oplanes[0]+srcSliceY*outstrides[0]+outstrides[0]);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
498
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
499
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
500 instrides_scl[0] = instrides[0];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
501 instrides_scl[1] = instrides[1]-w/2; /* the loop moves ui by w/2 */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
502 instrides_scl[2] = instrides[2]-w/2; /* the loop moves vi by w/2 */
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
503
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
504
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
505 for (i=0;i<h/2;i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
506 vec_dstst (outo, (0x02000002|(((w*3+32)/32)<<16)), 0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
507 vec_dstst (oute, (0x02000002|(((w*3+32)/32)<<16)), 1);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
508
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
509 for (j=0;j<w/16;j++) {
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
510
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
511 y0 = vec_ldl (0,y1i);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
512 y1 = vec_ldl (0,y2i);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
513 uivP = (vector unsigned char *)ui;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
514 vivP = (vector unsigned char *)vi;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
515
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
516 align_perm = vec_lvsl (0, ui);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
517 u = (vector signed char)vec_perm (uivP[0], uivP[1], align_perm);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
518
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
519 align_perm = vec_lvsl (0, vi);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
520 v = (vector signed char)vec_perm (vivP[0], vivP[1], align_perm);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
521 u = (vector signed char)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
522 vec_sub (u,(vector signed char)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
523 vec_splat((vector signed char){128},0));
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
524
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
525 v = (vector signed char)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
526 vec_sub (v, (vector signed char)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
527 vec_splat((vector signed char){128},0));
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
528
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
529 U = vec_unpackh (u);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
530 V = vec_unpackh (v);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
531
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
532
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
533 Y0 = vec_unh (y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
534 Y1 = vec_unl (y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
535 Y2 = vec_unh (y1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
536 Y3 = vec_unl (y1);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
537
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
538 Y0 = vec_mradds (Y0, lCY, lOY);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
539 Y1 = vec_mradds (Y1, lCY, lOY);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
540 Y2 = vec_mradds (Y2, lCY, lOY);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
541 Y3 = vec_mradds (Y3, lCY, lOY);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
542
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
543 /* ux = (CBU*(u<<CSHIFT)+0x4000)>>15 */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
544 ux = vec_sl (U, lCSHIFT);
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
545 ux = vec_mradds (ux, lCBU, (vector signed short){0});
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
546 ux0 = vec_mergeh (ux,ux);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
547 ux1 = vec_mergel (ux,ux);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
548
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
549 /* vx = (CRV*(v<<CSHIFT)+0x4000)>>15; */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
550 vx = vec_sl (V, lCSHIFT);
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
551 vx = vec_mradds (vx, lCRV, (vector signed short){0});
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
552 vx0 = vec_mergeh (vx,vx);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
553 vx1 = vec_mergel (vx,vx);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
554 /* uvx = ((CGU*u) + (CGV*v))>>15 */
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
555 uvx = vec_mradds (U, lCGU, (vector signed short){0});
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
556 uvx = vec_mradds (V, lCGV, uvx);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
557 uvx0 = vec_mergeh (uvx,uvx);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
558 uvx1 = vec_mergel (uvx,uvx);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
559 R0 = vec_add (Y0,vx0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
560 G0 = vec_add (Y0,uvx0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
561 B0 = vec_add (Y0,ux0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
562 R1 = vec_add (Y1,vx1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
563 G1 = vec_add (Y1,uvx1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
564 B1 = vec_add (Y1,ux1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
565 R = vec_packclp (R0,R1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
566 G = vec_packclp (G0,G1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
567 B = vec_packclp (B0,B1);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
568
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
569 out_argb(R,G,B,oute);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
570 R0 = vec_add (Y2,vx0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
571 G0 = vec_add (Y2,uvx0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
572 B0 = vec_add (Y2,ux0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
573 R1 = vec_add (Y3,vx1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
574 G1 = vec_add (Y3,uvx1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
575 B1 = vec_add (Y3,ux1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
576 R = vec_packclp (R0,R1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
577 G = vec_packclp (G0,G1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
578 B = vec_packclp (B0,B1);
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
579
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
580 out_argb(R,G,B,outo);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
581 y1i += 16;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
582 y2i += 16;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
583 ui += 8;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
584 vi += 8;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
585
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
586 }
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
587
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
588 outo += (outstrides[0])>>4;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
589 oute += (outstrides[0])>>4;
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
590
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
591 ui += instrides_scl[1];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
592 vi += instrides_scl[2];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
593 y1i += instrides_scl[0];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
594 y2i += instrides_scl[0];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
595 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
596 return srcSliceH;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
597 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
598
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
599 #endif
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
600
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
601
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
602 DEFCSP420_CVT (yuv2_rgba, out_rgba)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
603 DEFCSP420_CVT (yuv2_argb, out_argb)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
604 DEFCSP420_CVT (yuv2_rgb24, out_rgb24)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
605 DEFCSP420_CVT (yuv2_bgr24, out_bgr24)
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
606
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
607
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
608 // uyvy|uyvy|uyvy|uyvy
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
609 // 0123 4567 89ab cdef
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
610 static
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
611 const vector unsigned char
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
612 demux_u = {0x10,0x00,0x10,0x00,
27313
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
613 0x10,0x04,0x10,0x04,
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
614 0x10,0x08,0x10,0x08,
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
615 0x10,0x0c,0x10,0x0c},
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
616 demux_v = {0x10,0x02,0x10,0x02,
27313
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
617 0x10,0x06,0x10,0x06,
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
618 0x10,0x0A,0x10,0x0A,
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
619 0x10,0x0E,0x10,0x0E},
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
620 demux_y = {0x10,0x01,0x10,0x03,
27313
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
621 0x10,0x05,0x10,0x07,
ffbe8d9e13d6 cosmetics: Fix indentation after last commit.
diego
parents: 27312
diff changeset
622 0x10,0x09,0x10,0x0B,
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
623 0x10,0x0D,0x10,0x0F};
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
624
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
625 /*
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
626 this is so I can play live CCIR raw video
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
627 */
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
628 static int altivec_uyvy_rgb32 (SwsContext *c,
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
629 unsigned char **in, int *instrides,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
630 int srcSliceY, int srcSliceH,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
631 unsigned char **oplanes, int *outstrides)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
632 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
633 int w = c->srcW;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
634 int h = srcSliceH;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
635 int i,j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
636 vector unsigned char uyvy;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
637 vector signed short Y,U,V;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
638 vector signed short R0,G0,B0,R1,G1,B1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
639 vector unsigned char R,G,B;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
640 vector unsigned char *out;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
641 ubyte *img;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
642
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
643 img = in[0];
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
644 out = (vector unsigned char *)(oplanes[0]+srcSliceY*outstrides[0]);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
645
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
646 for (i=0;i<h;i++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
647 for (j=0;j<w/16;j++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
648 uyvy = vec_ld (0, img);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
649 U = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
650 vec_perm (uyvy, (vector unsigned char){0}, demux_u);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
651
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
652 V = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
653 vec_perm (uyvy, (vector unsigned char){0}, demux_v);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
654
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
655 Y = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
656 vec_perm (uyvy, (vector unsigned char){0}, demux_y);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
657
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
658 cvtyuvtoRGB (c, Y,U,V,&R0,&G0,&B0);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
659
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
660 uyvy = vec_ld (16, img);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
661 U = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
662 vec_perm (uyvy, (vector unsigned char){0}, demux_u);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
663
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
664 V = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
665 vec_perm (uyvy, (vector unsigned char){0}, demux_v);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
666
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
667 Y = (vector signed short)
27312
f058ded683db Remove AltiVec vector declaration compiler compatibility macros.
diego
parents: 27247
diff changeset
668 vec_perm (uyvy, (vector unsigned char){0}, demux_y);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
669
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
670 cvtyuvtoRGB (c, Y,U,V,&R1,&G1,&B1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
671
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
672 R = vec_packclp (R0,R1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
673 G = vec_packclp (G0,G1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
674 B = vec_packclp (B0,B1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
675
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
676 // vec_mstbgr24 (R,G,B, out);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
677 out_rgba (R,G,B,out);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
678
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
679 img += 32;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
680 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
681 }
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
682 return srcSliceH;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
683 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
684
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
685
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
686
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
687 /* Ok currently the acceleration routine only supports
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
688 inputs of widths a multiple of 16
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
689 and heights a multiple 2
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
690
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
691 So we just fall back to the C codes for this.
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
692 */
28461
75586eb0750d Prefix visible YUV2RGB functions with sws_
kostya
parents: 28129
diff changeset
693 SwsFunc sws_yuv2rgb_init_altivec (SwsContext *c)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
694 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
695 if (!(c->flags & SWS_CPU_CAPS_ALTIVEC))
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
696 return NULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
697
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
698 /*
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
699 and this seems not to matter too much I tried a bunch of
26219
diego
parents: 26215
diff changeset
700 videos with abnormal widths and MPlayer crashes elsewhere.
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
701 mplayer -vo x11 -rawvideo on:w=350:h=240 raw-350x240.eyuv
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
702 boom with X11 bad match.
23129
9528d1ebe68f cosmetics: Remove trailing whitespace.
diego
parents: 21981
diff changeset
703
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
704 */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
705 if ((c->srcW & 0xf) != 0) return NULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
706
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
707 switch (c->srcFormat) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
708 case PIX_FMT_YUV410P:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
709 case PIX_FMT_YUV420P:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
710 /*case IMGFMT_CLPL: ??? */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
711 case PIX_FMT_GRAY8:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
712 case PIX_FMT_NV12:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
713 case PIX_FMT_NV21:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
714 if ((c->srcH & 0x1) != 0)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
715 return NULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
716
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
717 switch(c->dstFormat){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
718 case PIX_FMT_RGB24:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
719 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space RGB24\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
720 return altivec_yuv2_rgb24;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
721 case PIX_FMT_BGR24:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
722 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space BGR24\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
723 return altivec_yuv2_bgr24;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
724 case PIX_FMT_ARGB:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
725 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space ARGB\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
726 return altivec_yuv2_argb;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
727 case PIX_FMT_ABGR:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
728 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space ABGR\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
729 return altivec_yuv2_abgr;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
730 case PIX_FMT_RGBA:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
731 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space RGBA\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
732 return altivec_yuv2_rgba;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
733 case PIX_FMT_BGRA:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
734 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space BGRA\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
735 return altivec_yuv2_bgra;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
736 default: return NULL;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
737 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
738 break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
739
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
740 case PIX_FMT_UYVY422:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
741 switch(c->dstFormat){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
742 case PIX_FMT_BGR32:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
743 av_log(c, AV_LOG_WARNING, "ALTIVEC: Color Space UYVY -> RGB32\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
744 return altivec_uyvy_rgb32;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
745 default: return NULL;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
746 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
747 break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
748
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
749 }
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
750 return NULL;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
751 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
752
28461
75586eb0750d Prefix visible YUV2RGB functions with sws_
kostya
parents: 28129
diff changeset
753 void sws_yuv2rgb_altivec_init_tables (SwsContext *c, const int inv_table[4],int brightness,int contrast, int saturation)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
754 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
755 union {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
756 signed short tmp[8] __attribute__ ((aligned(16)));
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
757 vector signed short vec;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
758 } buf;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
759
25749
8d082a234a6d Remove non cosmetic spaces inside parentheses.
benoit
parents: 24665
diff changeset
760 buf.tmp[0] = ((0xffffLL) * contrast>>8)>>9; //cy
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
761 buf.tmp[1] = -256*brightness; //oy
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
762 buf.tmp[2] = (inv_table[0]>>3) *(contrast>>16)*(saturation>>16); //crv
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
763 buf.tmp[3] = (inv_table[1]>>3) *(contrast>>16)*(saturation>>16); //cbu
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
764 buf.tmp[4] = -((inv_table[2]>>1)*(contrast>>16)*(saturation>>16)); //cgu
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
765 buf.tmp[5] = -((inv_table[3]>>1)*(contrast>>16)*(saturation>>16)); //cgv
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
766
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
767
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
768 c->CSHIFT = (vector unsigned short)vec_splat_u16(2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
769 c->CY = vec_splat ((vector signed short)buf.vec, 0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
770 c->OY = vec_splat ((vector signed short)buf.vec, 1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
771 c->CRV = vec_splat ((vector signed short)buf.vec, 2);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
772 c->CBU = vec_splat ((vector signed short)buf.vec, 3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
773 c->CGU = vec_splat ((vector signed short)buf.vec, 4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
774 c->CGV = vec_splat ((vector signed short)buf.vec, 5);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
775 #if 0
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
776 {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
777 int i;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
778 char *v[6]={"cy","oy","crv","cbu","cgu","cgv"};
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
779 for (i=0; i<6; i++)
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
780 printf("%s %d ", v[i],buf.tmp[i] );
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
781 printf("\n");
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
782 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
783 #endif
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
784 return;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
785 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
786
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
787
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
788 void
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
789 altivec_yuv2packedX (SwsContext *c,
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
790 int16_t *lumFilter, int16_t **lumSrc, int lumFilterSize,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
791 int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize,
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
792 uint8_t *dest, int dstW, int dstY)
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
793 {
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
794 int i,j;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
795 vector signed short X,X0,X1,Y0,U0,V0,Y1,U1,V1,U,V;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
796 vector signed short R0,G0,B0,R1,G1,B1;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
797
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
798 vector unsigned char R,G,B;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
799 vector unsigned char *out,*nout;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
800
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
801 vector signed short RND = vec_splat_s16(1<<3);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
802 vector unsigned short SCL = vec_splat_u16(4);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
803 unsigned long scratch[16] __attribute__ ((aligned (16)));
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
804
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
805 vector signed short *YCoeffs, *CCoeffs;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
806
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
807 YCoeffs = c->vYCoeffsBank+dstY*lumFilterSize;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
808 CCoeffs = c->vCCoeffsBank+dstY*chrFilterSize;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
809
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
810 out = (vector unsigned char *)dest;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
811
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
812 for (i=0; i<dstW; i+=16){
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
813 Y0 = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
814 Y1 = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
815 /* extract 16 coeffs from lumSrc */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
816 for (j=0; j<lumFilterSize; j++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
817 X0 = vec_ld (0, &lumSrc[j][i]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
818 X1 = vec_ld (16, &lumSrc[j][i]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
819 Y0 = vec_mradds (X0, YCoeffs[j], Y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
820 Y1 = vec_mradds (X1, YCoeffs[j], Y1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
821 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
822
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
823 U = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
824 V = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
825 /* extract 8 coeffs from U,V */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
826 for (j=0; j<chrFilterSize; j++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
827 X = vec_ld (0, &chrSrc[j][i/2]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
828 U = vec_mradds (X, CCoeffs[j], U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
829 X = vec_ld (0, &chrSrc[j][i/2+2048]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
830 V = vec_mradds (X, CCoeffs[j], V);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
831 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
832
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
833 /* scale and clip signals */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
834 Y0 = vec_sra (Y0, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
835 Y1 = vec_sra (Y1, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
836 U = vec_sra (U, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
837 V = vec_sra (V, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
838
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
839 Y0 = vec_clip_s16 (Y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
840 Y1 = vec_clip_s16 (Y1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
841 U = vec_clip_s16 (U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
842 V = vec_clip_s16 (V);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
843
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
844 /* now we have
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
845 Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
846 U= u0 u1 u2 u3 u4 u5 u6 u7 V= v0 v1 v2 v3 v4 v5 v6 v7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
847
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
848 Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
849 U0= u0 u0 u1 u1 u2 u2 u3 u3 U1= u4 u4 u5 u5 u6 u6 u7 u7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
850 V0= v0 v0 v1 v1 v2 v2 v3 v3 V1= v4 v4 v5 v5 v6 v6 v7 v7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
851 */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
852
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
853 U0 = vec_mergeh (U,U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
854 V0 = vec_mergeh (V,V);
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 U1 = vec_mergel (U,U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
857 V1 = vec_mergel (V,V);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
858
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
859 cvtyuvtoRGB (c, Y0,U0,V0,&R0,&G0,&B0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
860 cvtyuvtoRGB (c, Y1,U1,V1,&R1,&G1,&B1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
861
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
862 R = vec_packclp (R0,R1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
863 G = vec_packclp (G0,G1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
864 B = vec_packclp (B0,B1);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
865
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
866 switch(c->dstFormat) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
867 case PIX_FMT_ABGR: out_abgr (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
868 case PIX_FMT_BGRA: out_bgra (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
869 case PIX_FMT_RGBA: out_rgba (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
870 case PIX_FMT_ARGB: out_argb (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
871 case PIX_FMT_RGB24: out_rgb24 (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
872 case PIX_FMT_BGR24: out_bgr24 (R,G,B,out); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
873 default:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
874 {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
875 /* If this is reached, the caller should have called yuv2packedXinC
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
876 instead. */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
877 static int printed_error_message;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
878 if (!printed_error_message) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
879 av_log(c, AV_LOG_ERROR, "altivec_yuv2packedX doesn't support %s output\n",
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
880 sws_format_name(c->dstFormat));
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
881 printed_error_message=1;
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 return;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
884 }
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
885 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
886 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
887
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
888 if (i < dstW) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
889 i -= 16;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
890
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
891 Y0 = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
892 Y1 = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
893 /* extract 16 coeffs from lumSrc */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
894 for (j=0; j<lumFilterSize; j++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
895 X0 = vec_ld (0, &lumSrc[j][i]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
896 X1 = vec_ld (16, &lumSrc[j][i]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
897 Y0 = vec_mradds (X0, YCoeffs[j], Y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
898 Y1 = vec_mradds (X1, YCoeffs[j], Y1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
899 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
900
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
901 U = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
902 V = RND;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
903 /* extract 8 coeffs from U,V */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
904 for (j=0; j<chrFilterSize; j++) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
905 X = vec_ld (0, &chrSrc[j][i/2]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
906 U = vec_mradds (X, CCoeffs[j], U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
907 X = vec_ld (0, &chrSrc[j][i/2+2048]);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
908 V = vec_mradds (X, CCoeffs[j], V);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
909 }
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
910
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
911 /* scale and clip signals */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
912 Y0 = vec_sra (Y0, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
913 Y1 = vec_sra (Y1, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
914 U = vec_sra (U, SCL);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
915 V = vec_sra (V, SCL);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
916
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
917 Y0 = vec_clip_s16 (Y0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
918 Y1 = vec_clip_s16 (Y1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
919 U = vec_clip_s16 (U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
920 V = vec_clip_s16 (V);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
921
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
922 /* now we have
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
923 Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
924 U = u0 u1 u2 u3 u4 u5 u6 u7 V = v0 v1 v2 v3 v4 v5 v6 v7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
925
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
926 Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
927 U0= u0 u0 u1 u1 u2 u2 u3 u3 U1= u4 u4 u5 u5 u6 u6 u7 u7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
928 V0= v0 v0 v1 v1 v2 v2 v3 v3 V1= v4 v4 v5 v5 v6 v6 v7 v7
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
929 */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
930
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
931 U0 = vec_mergeh (U,U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
932 V0 = vec_mergeh (V,V);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
933
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
934 U1 = vec_mergel (U,U);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
935 V1 = vec_mergel (V,V);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
936
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
937 cvtyuvtoRGB (c, Y0,U0,V0,&R0,&G0,&B0);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
938 cvtyuvtoRGB (c, Y1,U1,V1,&R1,&G1,&B1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
939
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
940 R = vec_packclp (R0,R1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
941 G = vec_packclp (G0,G1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
942 B = vec_packclp (B0,B1);
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
943
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
944 nout = (vector unsigned char *)scratch;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
945 switch(c->dstFormat) {
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
946 case PIX_FMT_ABGR: out_abgr (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
947 case PIX_FMT_BGRA: out_bgra (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
948 case PIX_FMT_RGBA: out_rgba (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
949 case PIX_FMT_ARGB: out_argb (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
950 case PIX_FMT_RGB24: out_rgb24 (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
951 case PIX_FMT_BGR24: out_bgr24 (R,G,B,nout); break;
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
952 default:
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
953 /* Unreachable, I think. */
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
954 av_log(c, AV_LOG_ERROR, "altivec_yuv2packedX doesn't support %s output\n",
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
955 sws_format_name(c->dstFormat));
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
956 return;
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
957 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
958
23157
ebc55c913d73 cosmetics attack, part III: Remove all tabs and prettyprint/reindent the code.
diego
parents: 23129
diff changeset
959 memcpy (&((uint32_t*)dest)[i], scratch, (dstW-i)/4);
18861
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
960 }
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
961
8579acff875e Move postproc ---> libswscale
lucabe
parents:
diff changeset
962 }