Mercurial > libavcodec.hg
annotate vp3dsp.c @ 10893:2aafcafbe1f0 libavcodec
Replace cabac checks in inline functions from h264.h with constants.
No benchmark because its just replacing variables with litteral constants
(so no risk for slowdown outside gcc silliness) and i need sleep.
author | michael |
---|---|
date | Sat, 16 Jan 2010 05:41:33 +0000 |
parents | e9d9d946f213 |
children | f7281af560fe |
rev | line source |
---|---|
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
1 /* |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
2 * Copyright (C) 2004 the ffmpeg project |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
3 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
4 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
5 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
6 * FFmpeg is free software; you can redistribute it and/or |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
8 * License as published by the Free Software Foundation; either |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
10 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
11 * FFmpeg is distributed in the hope that it will be useful, |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
14 * Lesser General Public License for more details. |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
15 * |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3505
diff
changeset
|
17 * License along with FFmpeg; if not, write to the Free Software |
3036
0b546eab515d
Update licensing information: The FSF changed postal address.
diego
parents:
2967
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
19 */ |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
20 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
21 /** |
8718
e9d9d946f213
Use full internal pathname in doxygen @file directives.
diego
parents:
7995
diff
changeset
|
22 * @file libavcodec/vp3dsp.c |
2967 | 23 * Standard C DSP-oriented functions cribbed from the original VP3 |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
24 * source code. |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
25 */ |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
26 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
27 #include "avcodec.h" |
2024
f65d87bfdd5a
some of the warning fixes by (Michael Roitzsch <mroi at users dot sourceforge dot net>)
michael
parents:
1977
diff
changeset
|
28 #include "dsputil.h" |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
29 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
30 #define IdctAdjustBeforeShift 8 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
31 #define xC1S7 64277 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
32 #define xC2S6 60547 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
33 #define xC3S5 54491 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
34 #define xC4S4 46341 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
35 #define xC5S3 36410 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
36 #define xC6S2 25080 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
37 #define xC7S1 12785 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
38 |
3503
074c9f3d8e62
remove a few useless casts and avoid the useless t1/t2 variables
michael
parents:
3036
diff
changeset
|
39 #define M(a,b) (((a) * (b))>>16) |
074c9f3d8e62
remove a few useless casts and avoid the useless t1/t2 variables
michael
parents:
3036
diff
changeset
|
40 |
4283
d6f83e2f8804
rename always_inline to av_always_inline and move to common.h
mru
parents:
4176
diff
changeset
|
41 static av_always_inline void idct(uint8_t *dst, int stride, int16_t *input, int type) |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
42 { |
2693 | 43 int16_t *ip = input; |
4176 | 44 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
45 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
46 int A, B, C, D, Ad, Bd, Cd, Dd, E, F, G, H; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
47 int Ed, Gd, Add, Bdd, Fd, Hd; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
48 |
2834 | 49 int i; |
2967 | 50 |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
51 /* Inverse DCT on the rows now */ |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
52 for (i = 0; i < 8; i++) { |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
53 /* Check for non-zero values */ |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
54 if ( ip[0] | ip[1] | ip[2] | ip[3] | ip[4] | ip[5] | ip[6] | ip[7] ) { |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
55 A = M(xC1S7, ip[1]) + M(xC7S1, ip[7]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
56 B = M(xC7S1, ip[1]) - M(xC1S7, ip[7]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
57 C = M(xC3S5, ip[3]) + M(xC5S3, ip[5]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
58 D = M(xC3S5, ip[5]) - M(xC5S3, ip[3]); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
59 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
60 Ad = M(xC4S4, (A - C)); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
61 Bd = M(xC4S4, (B - D)); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
62 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
63 Cd = A + C; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
64 Dd = B + D; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
65 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
66 E = M(xC4S4, (ip[0] + ip[4])); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
67 F = M(xC4S4, (ip[0] - ip[4])); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
68 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
69 G = M(xC2S6, ip[2]) + M(xC6S2, ip[6]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
70 H = M(xC6S2, ip[2]) - M(xC2S6, ip[6]); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
71 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
72 Ed = E - G; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
73 Gd = E + G; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
74 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
75 Add = F + Ad; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
76 Bdd = Bd - H; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
77 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
78 Fd = F - Ad; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
79 Hd = Bd + H; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
80 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
81 /* Final sequence of operations over-write original inputs. */ |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
82 ip[0] = Gd + Cd ; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
83 ip[7] = Gd - Cd ; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
84 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
85 ip[1] = Add + Hd; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
86 ip[2] = Add - Hd; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
87 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
88 ip[3] = Ed + Dd ; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
89 ip[4] = Ed - Dd ; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
90 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
91 ip[5] = Fd + Bdd; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
92 ip[6] = Fd - Bdd; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
93 } |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
94 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
95 ip += 8; /* next row */ |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
96 } |
2967 | 97 |
2693 | 98 ip = input; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
99 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
100 for ( i = 0; i < 8; i++) { |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
101 /* Check for non-zero values (bitwise or faster than ||) */ |
2693 | 102 if ( ip[1 * 8] | ip[2 * 8] | ip[3 * 8] | |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
103 ip[4 * 8] | ip[5 * 8] | ip[6 * 8] | ip[7 * 8] ) { |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
104 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
105 A = M(xC1S7, ip[1*8]) + M(xC7S1, ip[7*8]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
106 B = M(xC7S1, ip[1*8]) - M(xC1S7, ip[7*8]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
107 C = M(xC3S5, ip[3*8]) + M(xC5S3, ip[5*8]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
108 D = M(xC3S5, ip[5*8]) - M(xC5S3, ip[3*8]); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
109 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
110 Ad = M(xC4S4, (A - C)); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
111 Bd = M(xC4S4, (B - D)); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
112 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
113 Cd = A + C; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
114 Dd = B + D; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
115 |
3505 | 116 E = M(xC4S4, (ip[0*8] + ip[4*8])) + 8; |
117 F = M(xC4S4, (ip[0*8] - ip[4*8])) + 8; | |
118 | |
119 if(type==1){ //HACK | |
120 E += 16*128; | |
121 F += 16*128; | |
122 } | |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
123 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
124 G = M(xC2S6, ip[2*8]) + M(xC6S2, ip[6*8]); |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
125 H = M(xC6S2, ip[2*8]) - M(xC2S6, ip[6*8]); |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
126 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
127 Ed = E - G; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
128 Gd = E + G; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
129 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
130 Add = F + Ad; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
131 Bdd = Bd - H; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
132 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
133 Fd = F - Ad; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
134 Hd = Bd + H; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
135 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
136 /* Final sequence of operations over-write original inputs. */ |
2693 | 137 if(type==0){ |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
138 ip[0*8] = (Gd + Cd ) >> 4; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
139 ip[7*8] = (Gd - Cd ) >> 4; |
2967 | 140 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
141 ip[1*8] = (Add + Hd ) >> 4; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
142 ip[2*8] = (Add - Hd ) >> 4; |
2967 | 143 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
144 ip[3*8] = (Ed + Dd ) >> 4; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
145 ip[4*8] = (Ed - Dd ) >> 4; |
2967 | 146 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
147 ip[5*8] = (Fd + Bdd ) >> 4; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
148 ip[6*8] = (Fd - Bdd ) >> 4; |
2693 | 149 }else if(type==1){ |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
150 dst[0*stride] = cm[(Gd + Cd ) >> 4]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
151 dst[7*stride] = cm[(Gd - Cd ) >> 4]; |
2967 | 152 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
153 dst[1*stride] = cm[(Add + Hd ) >> 4]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
154 dst[2*stride] = cm[(Add - Hd ) >> 4]; |
2967 | 155 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
156 dst[3*stride] = cm[(Ed + Dd ) >> 4]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
157 dst[4*stride] = cm[(Ed - Dd ) >> 4]; |
2967 | 158 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
159 dst[5*stride] = cm[(Fd + Bdd ) >> 4]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
160 dst[6*stride] = cm[(Fd - Bdd ) >> 4]; |
2693 | 161 }else{ |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
162 dst[0*stride] = cm[dst[0*stride] + ((Gd + Cd ) >> 4)]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
163 dst[7*stride] = cm[dst[7*stride] + ((Gd - Cd ) >> 4)]; |
2967 | 164 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
165 dst[1*stride] = cm[dst[1*stride] + ((Add + Hd ) >> 4)]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
166 dst[2*stride] = cm[dst[2*stride] + ((Add - Hd ) >> 4)]; |
2967 | 167 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
168 dst[3*stride] = cm[dst[3*stride] + ((Ed + Dd ) >> 4)]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
169 dst[4*stride] = cm[dst[4*stride] + ((Ed - Dd ) >> 4)]; |
2967 | 170 |
3504
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
171 dst[5*stride] = cm[dst[5*stride] + ((Fd + Bdd ) >> 4)]; |
40d83cd39561
remove 166 useless underscores, and make this file valid c code as a result
michael
parents:
3503
diff
changeset
|
172 dst[6*stride] = cm[dst[6*stride] + ((Fd - Bdd ) >> 4)]; |
2693 | 173 } |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
174 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
175 } else { |
2693 | 176 if(type==0){ |
2967 | 177 ip[0*8] = |
178 ip[1*8] = | |
179 ip[2*8] = | |
180 ip[3*8] = | |
181 ip[4*8] = | |
182 ip[5*8] = | |
2693 | 183 ip[6*8] = |
184 ip[7*8] = ((xC4S4 * ip[0*8] + (IdctAdjustBeforeShift<<16))>>20); | |
185 }else if(type==1){ | |
186 dst[0*stride]= | |
187 dst[1*stride]= | |
188 dst[2*stride]= | |
189 dst[3*stride]= | |
190 dst[4*stride]= | |
191 dst[5*stride]= | |
192 dst[6*stride]= | |
7274 | 193 dst[7*stride]= cm[128 + ((xC4S4 * ip[0*8] + (IdctAdjustBeforeShift<<16))>>20)]; |
2693 | 194 }else{ |
195 if(ip[0*8]){ | |
196 int v= ((xC4S4 * ip[0*8] + (IdctAdjustBeforeShift<<16))>>20); | |
197 dst[0*stride] = cm[dst[0*stride] + v]; | |
198 dst[1*stride] = cm[dst[1*stride] + v]; | |
199 dst[2*stride] = cm[dst[2*stride] + v]; | |
200 dst[3*stride] = cm[dst[3*stride] + v]; | |
201 dst[4*stride] = cm[dst[4*stride] + v]; | |
202 dst[5*stride] = cm[dst[5*stride] + v]; | |
203 dst[6*stride] = cm[dst[6*stride] + v]; | |
204 dst[7*stride] = cm[dst[7*stride] + v]; | |
205 } | |
206 } | |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
207 } |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
208 |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
209 ip++; /* next column */ |
2693 | 210 dst++; |
1866
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
211 } |
1755f959ab7f
seperated out the C-based VP3 DSP functions into a different file; also
melanson
parents:
diff
changeset
|
212 } |
2693 | 213 |
214 void ff_vp3_idct_c(DCTELEM *block/* align 16*/){ | |
215 idct(NULL, 0, block, 0); | |
216 } | |
2967 | 217 |
2693 | 218 void ff_vp3_idct_put_c(uint8_t *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/){ |
219 idct(dest, line_size, block, 1); | |
220 } | |
221 | |
222 void ff_vp3_idct_add_c(uint8_t *dest/*align 8*/, int line_size, DCTELEM *block/*align 16*/){ | |
223 idct(dest, line_size, block, 2); | |
224 } | |
7995 | 225 |
226 void ff_vp3_v_loop_filter_c(uint8_t *first_pixel, int stride, int *bounding_values) | |
227 { | |
228 unsigned char *end; | |
229 int filter_value; | |
230 const int nstride= -stride; | |
231 | |
232 for (end= first_pixel + 8; first_pixel < end; first_pixel++) { | |
233 filter_value = | |
234 (first_pixel[2 * nstride] - first_pixel[ stride]) | |
235 +3*(first_pixel[0 ] - first_pixel[nstride]); | |
236 filter_value = bounding_values[(filter_value + 4) >> 3]; | |
237 first_pixel[nstride] = av_clip_uint8(first_pixel[nstride] + filter_value); | |
238 first_pixel[0] = av_clip_uint8(first_pixel[0] - filter_value); | |
239 } | |
240 } | |
241 | |
242 void ff_vp3_h_loop_filter_c(uint8_t *first_pixel, int stride, int *bounding_values) | |
243 { | |
244 unsigned char *end; | |
245 int filter_value; | |
246 | |
247 for (end= first_pixel + 8*stride; first_pixel != end; first_pixel += stride) { | |
248 filter_value = | |
249 (first_pixel[-2] - first_pixel[ 1]) | |
250 +3*(first_pixel[ 0] - first_pixel[-1]); | |
251 filter_value = bounding_values[(filter_value + 4) >> 3]; | |
252 first_pixel[-1] = av_clip_uint8(first_pixel[-1] + filter_value); | |
253 first_pixel[ 0] = av_clip_uint8(first_pixel[ 0] - filter_value); | |
254 } | |
255 } |