/src/ffmpeg/libavcodec/simple_idct_template.c
Line | Count | Source |
1 | | /* |
2 | | * Simple IDCT |
3 | | * |
4 | | * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at> |
5 | | * |
6 | | * This file is part of FFmpeg. |
7 | | * |
8 | | * FFmpeg is free software; you can redistribute it and/or |
9 | | * modify it under the terms of the GNU Lesser General Public |
10 | | * License as published by the Free Software Foundation; either |
11 | | * version 2.1 of the License, or (at your option) any later version. |
12 | | * |
13 | | * FFmpeg is distributed in the hope that it will be useful, |
14 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | | * Lesser General Public License for more details. |
17 | | * |
18 | | * You should have received a copy of the GNU Lesser General Public |
19 | | * License along with FFmpeg; if not, write to the Free Software |
20 | | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
21 | | */ |
22 | | |
23 | | /** |
24 | | * @file |
25 | | * simpleidct in C. |
26 | | */ |
27 | | |
28 | | /* Based upon some commented-out C code from mpeg2dec (idct_mmx.c |
29 | | * written by Aaron Holtzman <aholtzma@ess.engr.uvic.ca>). */ |
30 | | |
31 | | #include "bit_depth_template.c" |
32 | | |
33 | | #undef W1 |
34 | | #undef W2 |
35 | | #undef W3 |
36 | | #undef W4 |
37 | | #undef W5 |
38 | | #undef W6 |
39 | | #undef W7 |
40 | | #undef ROW_SHIFT |
41 | | #undef COL_SHIFT |
42 | | #undef DC_SHIFT |
43 | | #undef MUL |
44 | | #undef MAC |
45 | | |
46 | | #if BIT_DEPTH == 8 |
47 | | |
48 | | #define W1 22725 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
49 | 3.47G | #define W2 21407 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
50 | | #define W3 19266 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
51 | 3.73G | #define W4 16383 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
52 | | #define W5 12873 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
53 | 3.47G | #define W6 8867 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
54 | | #define W7 4520 //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 |
55 | | |
56 | 901M | #define ROW_SHIFT 11 |
57 | 2.62G | #define COL_SHIFT 20 |
58 | 2.79G | #define DC_SHIFT 3 |
59 | | |
60 | 6.44G | #define MUL(a, b) MUL16(a, b) |
61 | 7.38G | #define MAC(a, b, c) MAC16(a, b, c) |
62 | | |
63 | | #elif BIT_DEPTH == 10 || BIT_DEPTH == 12 |
64 | | |
65 | | # if BIT_DEPTH == 10 |
66 | | #define W1 22725 // 90901 |
67 | 213M | #define W2 21407 // 85627 |
68 | | #define W3 19265 // 77062 |
69 | 215M | #define W4 16384 // 65535 |
70 | | #define W5 12873 // 51491 |
71 | 213M | #define W6 8867 // 35468 |
72 | | #define W7 4520 // 18081 |
73 | | |
74 | | # ifdef EXTRA_SHIFT |
75 | 1.28M | #define ROW_SHIFT 13 |
76 | 19.6M | #define COL_SHIFT 18 |
77 | 6.11M | #define DC_SHIFT 1 |
78 | | # elif IN_IDCT_DEPTH == 32 |
79 | 3.71M | #define ROW_SHIFT 13 |
80 | 412k | #define COL_SHIFT 21 |
81 | | #define DC_SHIFT 2 |
82 | | # else |
83 | 6.33M | #define ROW_SHIFT 12 |
84 | 101M | #define COL_SHIFT 19 |
85 | 201M | #define DC_SHIFT 2 |
86 | | # endif |
87 | | |
88 | | # else |
89 | | #define W1 45451 |
90 | 131M | #define W2 42813 |
91 | | #define W3 38531 |
92 | 130M | #define W4 32767 |
93 | | #define W5 25746 |
94 | 131M | #define W6 17734 |
95 | | #define W7 9041 |
96 | | |
97 | 20.2M | #define ROW_SHIFT 16 |
98 | 80.4M | #define COL_SHIFT 17 |
99 | 182M | #define DC_SHIFT -1 |
100 | | # endif |
101 | | |
102 | 682M | #define MUL(a, b) ((int)((SUINT)(a) * (b))) |
103 | 700M | #define MAC(a, b, c) ((a) += (SUINT)(b) * (c)) |
104 | | |
105 | | #else |
106 | | |
107 | | #error "Unsupported bitdepth" |
108 | | |
109 | | #endif |
110 | | |
111 | | #ifdef EXTRA_SHIFT |
112 | | static inline void FUNC(idctRowCondDC_extrashift)(int16_t *row, int extra_shift) |
113 | | #else |
114 | | static inline void FUNC6(idctRowCondDC)(idctin *row, int extra_shift) |
115 | | #endif |
116 | 1.66G | { |
117 | 1.66G | SUINT a0, a1, a2, a3, b0, b1, b2, b3; |
118 | | |
119 | | // TODO: Add DC-only support for int32_t input |
120 | | #if IN_IDCT_DEPTH == 16 |
121 | | #if HAVE_FAST_64BIT |
122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) |
123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { |
124 | | uint64_t temp; |
125 | | if (DC_SHIFT - extra_shift >= 0) { |
126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; |
127 | | } else { |
128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; |
129 | | } |
130 | | temp += temp * (1 << 16); |
131 | | temp += temp * ((uint64_t) 1 << 32); |
132 | | AV_WN64A(row, temp); |
133 | | AV_WN64A(row + 4, temp); |
134 | | return; |
135 | | } |
136 | | #else |
137 | 1.66G | if (!(AV_RN32A(row+2) | |
138 | 1.66G | AV_RN32A(row+4) | |
139 | 1.66G | AV_RN32A(row+6) | |
140 | 1.66G | row[1])) { |
141 | 1.56G | uint32_t temp; |
142 | 1.56G | if (DC_SHIFT - extra_shift >= 0) { |
143 | 1.49G | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; |
144 | 1.49G | } else { |
145 | 62.8M | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; |
146 | 62.8M | } |
147 | 1.56G | temp += temp * (1 << 16); |
148 | 1.56G | AV_WN32A(row, temp); |
149 | 1.56G | AV_WN32A(row+2, temp); |
150 | 1.56G | AV_WN32A(row+4, temp); |
151 | 1.56G | AV_WN32A(row+6, temp); |
152 | 1.56G | return; |
153 | 1.56G | } |
154 | 101M | #endif |
155 | 101M | #endif |
156 | | |
157 | 103M | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); |
158 | 101M | a1 = a0; |
159 | 101M | a2 = a0; |
160 | 101M | a3 = a0; |
161 | | |
162 | 103M | a0 += (SUINT)W2 * row[2]; |
163 | 103M | a1 += (SUINT)W6 * row[2]; |
164 | 103M | a2 -= (SUINT)W6 * row[2]; |
165 | 103M | a3 -= (SUINT)W2 * row[2]; |
166 | | |
167 | 103M | b0 = MUL(W1, row[1]); |
168 | 103M | MAC(b0, W3, row[3]); |
169 | 103M | b1 = MUL(W3, row[1]); |
170 | 103M | MAC(b1, -W7, row[3]); |
171 | 103M | b2 = MUL(W5, row[1]); |
172 | 103M | MAC(b2, -W1, row[3]); |
173 | 103M | b3 = MUL(W7, row[1]); |
174 | 103M | MAC(b3, -W5, row[3]); |
175 | | |
176 | | #if IN_IDCT_DEPTH == 32 |
177 | 2.32M | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { |
178 | | #else |
179 | 101M | if (AV_RN64A(row + 4)) { |
180 | 50.3M | #endif |
181 | 50.4M | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; |
182 | 50.4M | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; |
183 | 50.4M | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; |
184 | 50.4M | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; |
185 | | |
186 | 50.4M | MAC(b0, W5, row[5]); |
187 | 50.4M | MAC(b0, W7, row[7]); |
188 | | |
189 | 50.4M | MAC(b1, -W1, row[5]); |
190 | 50.4M | MAC(b1, -W5, row[7]); |
191 | | |
192 | 50.4M | MAC(b2, W7, row[5]); |
193 | 50.4M | MAC(b2, W3, row[7]); |
194 | | |
195 | 50.4M | MAC(b3, W3, row[5]); |
196 | 50.4M | MAC(b3, -W1, row[7]); |
197 | 50.3M | } |
198 | | |
199 | 103M | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); |
200 | 103M | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); |
201 | 103M | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); |
202 | 103M | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); |
203 | 103M | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); |
204 | 103M | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); |
205 | 103M | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); |
206 | 103M | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); |
207 | 101M | } simple_idct.c:idctRowCondDC_int16_8bit Line | Count | Source | 116 | 1.49G | { | 117 | 1.49G | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | 1.49G | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | 1.49G | if (!(AV_RN32A(row+2) | | 138 | 1.49G | AV_RN32A(row+4) | | 139 | 1.49G | AV_RN32A(row+6) | | 140 | 1.49G | row[1])) { | 141 | 1.39G | uint32_t temp; | 142 | 1.39G | if (DC_SHIFT - extra_shift >= 0) { | 143 | 1.39G | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | 1.39G | } else { | 145 | 0 | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | 0 | } | 147 | 1.39G | temp += temp * (1 << 16); | 148 | 1.39G | AV_WN32A(row, temp); | 149 | 1.39G | AV_WN32A(row+2, temp); | 150 | 1.39G | AV_WN32A(row+4, temp); | 151 | 1.39G | AV_WN32A(row+6, temp); | 152 | 1.39G | return; | 153 | 1.39G | } | 154 | 100M | #endif | 155 | 100M | #endif | 156 | | | 157 | 100M | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 100M | a1 = a0; | 159 | 100M | a2 = a0; | 160 | 100M | a3 = a0; | 161 | | | 162 | 100M | a0 += (SUINT)W2 * row[2]; | 163 | 100M | a1 += (SUINT)W6 * row[2]; | 164 | 100M | a2 -= (SUINT)W6 * row[2]; | 165 | 100M | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 100M | b0 = MUL(W1, row[1]); | 168 | 100M | MAC(b0, W3, row[3]); | 169 | 100M | b1 = MUL(W3, row[1]); | 170 | 100M | MAC(b1, -W7, row[3]); | 171 | 100M | b2 = MUL(W5, row[1]); | 172 | 100M | MAC(b2, -W1, row[3]); | 173 | 100M | b3 = MUL(W7, row[1]); | 174 | 100M | MAC(b3, -W5, row[3]); | 175 | | | 176 | | #if IN_IDCT_DEPTH == 32 | 177 | | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | 100M | if (AV_RN64A(row + 4)) { | 180 | 49.5M | #endif | 181 | 49.5M | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 49.5M | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 49.5M | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 49.5M | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 49.5M | MAC(b0, W5, row[5]); | 187 | 49.5M | MAC(b0, W7, row[7]); | 188 | | | 189 | 49.5M | MAC(b1, -W1, row[5]); | 190 | 49.5M | MAC(b1, -W5, row[7]); | 191 | | | 192 | 49.5M | MAC(b2, W7, row[5]); | 193 | 49.5M | MAC(b2, W3, row[7]); | 194 | | | 195 | 49.5M | MAC(b3, W3, row[5]); | 196 | 49.5M | MAC(b3, -W1, row[7]); | 197 | 49.5M | } | 198 | | | 199 | 100M | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 100M | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 100M | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 100M | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 100M | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 100M | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 100M | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 100M | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 100M | } |
simple_idct.c:idctRowCondDC_int16_10bit Line | Count | Source | 116 | 101M | { | 117 | 101M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | 101M | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | 101M | if (!(AV_RN32A(row+2) | | 138 | 101M | AV_RN32A(row+4) | | 139 | 101M | AV_RN32A(row+6) | | 140 | 101M | row[1])) { | 141 | 100M | uint32_t temp; | 142 | 100M | if (DC_SHIFT - extra_shift >= 0) { | 143 | 100M | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | 100M | } else { | 145 | 0 | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | 0 | } | 147 | 100M | temp += temp * (1 << 16); | 148 | 100M | AV_WN32A(row, temp); | 149 | 100M | AV_WN32A(row+2, temp); | 150 | 100M | AV_WN32A(row+4, temp); | 151 | 100M | AV_WN32A(row+6, temp); | 152 | 100M | return; | 153 | 100M | } | 154 | 703k | #endif | 155 | 703k | #endif | 156 | | | 157 | 703k | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 703k | a1 = a0; | 159 | 703k | a2 = a0; | 160 | 703k | a3 = a0; | 161 | | | 162 | 703k | a0 += (SUINT)W2 * row[2]; | 163 | 703k | a1 += (SUINT)W6 * row[2]; | 164 | 703k | a2 -= (SUINT)W6 * row[2]; | 165 | 703k | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 703k | b0 = MUL(W1, row[1]); | 168 | 703k | MAC(b0, W3, row[3]); | 169 | 703k | b1 = MUL(W3, row[1]); | 170 | 703k | MAC(b1, -W7, row[3]); | 171 | 703k | b2 = MUL(W5, row[1]); | 172 | 703k | MAC(b2, -W1, row[3]); | 173 | 703k | b3 = MUL(W7, row[1]); | 174 | 703k | MAC(b3, -W5, row[3]); | 175 | | | 176 | | #if IN_IDCT_DEPTH == 32 | 177 | | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | 703k | if (AV_RN64A(row + 4)) { | 180 | 579k | #endif | 181 | 579k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 579k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 579k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 579k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 579k | MAC(b0, W5, row[5]); | 187 | 579k | MAC(b0, W7, row[7]); | 188 | | | 189 | 579k | MAC(b1, -W1, row[5]); | 190 | 579k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 579k | MAC(b2, W7, row[5]); | 193 | 579k | MAC(b2, W3, row[7]); | 194 | | | 195 | 579k | MAC(b3, W3, row[5]); | 196 | 579k | MAC(b3, -W1, row[7]); | 197 | 579k | } | 198 | | | 199 | 703k | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 703k | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 703k | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 703k | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 703k | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 703k | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 703k | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 703k | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 703k | } |
simple_idct.c:idctRowCondDC_int16_12bit Line | Count | Source | 116 | 60.8M | { | 117 | 60.8M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | 60.8M | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | 60.8M | if (!(AV_RN32A(row+2) | | 138 | 60.8M | AV_RN32A(row+4) | | 139 | 60.8M | AV_RN32A(row+6) | | 140 | 60.8M | row[1])) { | 141 | 60.5M | uint32_t temp; | 142 | 60.5M | if (DC_SHIFT - extra_shift >= 0) { | 143 | 0 | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | 60.5M | } else { | 145 | 60.5M | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | 60.5M | } | 147 | 60.5M | temp += temp * (1 << 16); | 148 | 60.5M | AV_WN32A(row, temp); | 149 | 60.5M | AV_WN32A(row+2, temp); | 150 | 60.5M | AV_WN32A(row+4, temp); | 151 | 60.5M | AV_WN32A(row+6, temp); | 152 | 60.5M | return; | 153 | 60.5M | } | 154 | 325k | #endif | 155 | 325k | #endif | 156 | | | 157 | 325k | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 325k | a1 = a0; | 159 | 325k | a2 = a0; | 160 | 325k | a3 = a0; | 161 | | | 162 | 325k | a0 += (SUINT)W2 * row[2]; | 163 | 325k | a1 += (SUINT)W6 * row[2]; | 164 | 325k | a2 -= (SUINT)W6 * row[2]; | 165 | 325k | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 325k | b0 = MUL(W1, row[1]); | 168 | 325k | MAC(b0, W3, row[3]); | 169 | 325k | b1 = MUL(W3, row[1]); | 170 | 325k | MAC(b1, -W7, row[3]); | 171 | 325k | b2 = MUL(W5, row[1]); | 172 | 325k | MAC(b2, -W1, row[3]); | 173 | 325k | b3 = MUL(W7, row[1]); | 174 | 325k | MAC(b3, -W5, row[3]); | 175 | | | 176 | | #if IN_IDCT_DEPTH == 32 | 177 | | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | 325k | if (AV_RN64A(row + 4)) { | 180 | 204k | #endif | 181 | 204k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 204k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 204k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 204k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 204k | MAC(b0, W5, row[5]); | 187 | 204k | MAC(b0, W7, row[7]); | 188 | | | 189 | 204k | MAC(b1, -W1, row[5]); | 190 | 204k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 204k | MAC(b2, W7, row[5]); | 193 | 204k | MAC(b2, W3, row[7]); | 194 | | | 195 | 204k | MAC(b3, W3, row[5]); | 196 | 204k | MAC(b3, -W1, row[7]); | 197 | 204k | } | 198 | | | 199 | 325k | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 325k | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 325k | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 325k | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 325k | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 325k | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 325k | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 325k | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 325k | } |
simple_idct.c:idctRowCondDC_int32_10bit Line | Count | Source | 116 | 412k | { | 117 | 412k | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | | if (!(AV_RN32A(row+2) | | 138 | | AV_RN32A(row+4) | | 139 | | AV_RN32A(row+6) | | 140 | | row[1])) { | 141 | | uint32_t temp; | 142 | | if (DC_SHIFT - extra_shift >= 0) { | 143 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | | } else { | 145 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | | } | 147 | | temp += temp * (1 << 16); | 148 | | AV_WN32A(row, temp); | 149 | | AV_WN32A(row+2, temp); | 150 | | AV_WN32A(row+4, temp); | 151 | | AV_WN32A(row+6, temp); | 152 | | return; | 153 | | } | 154 | | #endif | 155 | | #endif | 156 | | | 157 | 412k | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 412k | a1 = a0; | 159 | 412k | a2 = a0; | 160 | 412k | a3 = a0; | 161 | | | 162 | 412k | a0 += (SUINT)W2 * row[2]; | 163 | 412k | a1 += (SUINT)W6 * row[2]; | 164 | 412k | a2 -= (SUINT)W6 * row[2]; | 165 | 412k | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 412k | b0 = MUL(W1, row[1]); | 168 | 412k | MAC(b0, W3, row[3]); | 169 | 412k | b1 = MUL(W3, row[1]); | 170 | 412k | MAC(b1, -W7, row[3]); | 171 | 412k | b2 = MUL(W5, row[1]); | 172 | 412k | MAC(b2, -W1, row[3]); | 173 | 412k | b3 = MUL(W7, row[1]); | 174 | 412k | MAC(b3, -W5, row[3]); | 175 | | | 176 | 412k | #if IN_IDCT_DEPTH == 32 | 177 | 412k | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | | if (AV_RN64A(row + 4)) { | 180 | | #endif | 181 | 55.0k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 55.0k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 55.0k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 55.0k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 55.0k | MAC(b0, W5, row[5]); | 187 | 55.0k | MAC(b0, W7, row[7]); | 188 | | | 189 | 55.0k | MAC(b1, -W1, row[5]); | 190 | 55.0k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 55.0k | MAC(b2, W7, row[5]); | 193 | 55.0k | MAC(b2, W3, row[7]); | 194 | | | 195 | 55.0k | MAC(b3, W3, row[5]); | 196 | 55.0k | MAC(b3, -W1, row[7]); | 197 | 55.0k | } | 198 | | | 199 | 412k | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 412k | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 412k | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 412k | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 412k | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 412k | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 412k | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 412k | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 412k | } |
proresdsp.c:idctRowCondDC_extrashift_10 Line | Count | Source | 116 | 2.18M | { | 117 | 2.18M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | 2.18M | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | 2.18M | if (!(AV_RN32A(row+2) | | 138 | 2.18M | AV_RN32A(row+4) | | 139 | 2.18M | AV_RN32A(row+6) | | 140 | 2.18M | row[1])) { | 141 | 2.03M | uint32_t temp; | 142 | 2.03M | if (DC_SHIFT - extra_shift >= 0) { | 143 | 0 | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | 2.03M | } else { | 145 | 2.03M | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | 2.03M | } | 147 | 2.03M | temp += temp * (1 << 16); | 148 | 2.03M | AV_WN32A(row, temp); | 149 | 2.03M | AV_WN32A(row+2, temp); | 150 | 2.03M | AV_WN32A(row+4, temp); | 151 | 2.03M | AV_WN32A(row+6, temp); | 152 | 2.03M | return; | 153 | 2.03M | } | 154 | 143k | #endif | 155 | 143k | #endif | 156 | | | 157 | 143k | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 143k | a1 = a0; | 159 | 143k | a2 = a0; | 160 | 143k | a3 = a0; | 161 | | | 162 | 143k | a0 += (SUINT)W2 * row[2]; | 163 | 143k | a1 += (SUINT)W6 * row[2]; | 164 | 143k | a2 -= (SUINT)W6 * row[2]; | 165 | 143k | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 143k | b0 = MUL(W1, row[1]); | 168 | 143k | MAC(b0, W3, row[3]); | 169 | 143k | b1 = MUL(W3, row[1]); | 170 | 143k | MAC(b1, -W7, row[3]); | 171 | 143k | b2 = MUL(W5, row[1]); | 172 | 143k | MAC(b2, -W1, row[3]); | 173 | 143k | b3 = MUL(W7, row[1]); | 174 | 143k | MAC(b3, -W5, row[3]); | 175 | | | 176 | | #if IN_IDCT_DEPTH == 32 | 177 | | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | 143k | if (AV_RN64A(row + 4)) { | 180 | 50.2k | #endif | 181 | 50.2k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 50.2k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 50.2k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 50.2k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 50.2k | MAC(b0, W5, row[5]); | 187 | 50.2k | MAC(b0, W7, row[7]); | 188 | | | 189 | 50.2k | MAC(b1, -W1, row[5]); | 190 | 50.2k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 50.2k | MAC(b2, W7, row[5]); | 193 | 50.2k | MAC(b2, W3, row[7]); | 194 | | | 195 | 50.2k | MAC(b3, W3, row[5]); | 196 | 50.2k | MAC(b3, -W1, row[7]); | 197 | 50.2k | } | 198 | | | 199 | 143k | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 143k | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 143k | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 143k | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 143k | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 143k | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 143k | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 143k | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 143k | } |
proresdsp.c:idctRowCondDC_int16_12bit Line | Count | Source | 116 | 259k | { | 117 | 259k | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | 259k | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | 259k | if (!(AV_RN32A(row+2) | | 138 | 259k | AV_RN32A(row+4) | | 139 | 259k | AV_RN32A(row+6) | | 140 | 259k | row[1])) { | 141 | 244k | uint32_t temp; | 142 | 244k | if (DC_SHIFT - extra_shift >= 0) { | 143 | 0 | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | 244k | } else { | 145 | 244k | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | 244k | } | 147 | 244k | temp += temp * (1 << 16); | 148 | 244k | AV_WN32A(row, temp); | 149 | 244k | AV_WN32A(row+2, temp); | 150 | 244k | AV_WN32A(row+4, temp); | 151 | 244k | AV_WN32A(row+6, temp); | 152 | 244k | return; | 153 | 244k | } | 154 | 15.5k | #endif | 155 | 15.5k | #endif | 156 | | | 157 | 15.5k | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 15.5k | a1 = a0; | 159 | 15.5k | a2 = a0; | 160 | 15.5k | a3 = a0; | 161 | | | 162 | 15.5k | a0 += (SUINT)W2 * row[2]; | 163 | 15.5k | a1 += (SUINT)W6 * row[2]; | 164 | 15.5k | a2 -= (SUINT)W6 * row[2]; | 165 | 15.5k | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 15.5k | b0 = MUL(W1, row[1]); | 168 | 15.5k | MAC(b0, W3, row[3]); | 169 | 15.5k | b1 = MUL(W3, row[1]); | 170 | 15.5k | MAC(b1, -W7, row[3]); | 171 | 15.5k | b2 = MUL(W5, row[1]); | 172 | 15.5k | MAC(b2, -W1, row[3]); | 173 | 15.5k | b3 = MUL(W7, row[1]); | 174 | 15.5k | MAC(b3, -W5, row[3]); | 175 | | | 176 | | #if IN_IDCT_DEPTH == 32 | 177 | | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | 15.5k | if (AV_RN64A(row + 4)) { | 180 | 5.95k | #endif | 181 | 5.95k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 5.95k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 5.95k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 5.95k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 5.95k | MAC(b0, W5, row[5]); | 187 | 5.95k | MAC(b0, W7, row[7]); | 188 | | | 189 | 5.95k | MAC(b1, -W1, row[5]); | 190 | 5.95k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 5.95k | MAC(b2, W7, row[5]); | 193 | 5.95k | MAC(b2, W3, row[7]); | 194 | | | 195 | 5.95k | MAC(b3, W3, row[5]); | 196 | 5.95k | MAC(b3, -W1, row[7]); | 197 | 5.95k | } | 198 | | | 199 | 15.5k | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 15.5k | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 15.5k | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 15.5k | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 15.5k | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 15.5k | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 15.5k | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 15.5k | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 15.5k | } |
proresdsp.c:idctRowCondDC_int32_12bit Line | Count | Source | 116 | 1.91M | { | 117 | 1.91M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 118 | | | 119 | | // TODO: Add DC-only support for int32_t input | 120 | | #if IN_IDCT_DEPTH == 16 | 121 | | #if HAVE_FAST_64BIT | 122 | | #define ROW0_MASK (0xffffULL << 48 * HAVE_BIGENDIAN) | 123 | | if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { | 124 | | uint64_t temp; | 125 | | if (DC_SHIFT - extra_shift >= 0) { | 126 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 127 | | } else { | 128 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 129 | | } | 130 | | temp += temp * (1 << 16); | 131 | | temp += temp * ((uint64_t) 1 << 32); | 132 | | AV_WN64A(row, temp); | 133 | | AV_WN64A(row + 4, temp); | 134 | | return; | 135 | | } | 136 | | #else | 137 | | if (!(AV_RN32A(row+2) | | 138 | | AV_RN32A(row+4) | | 139 | | AV_RN32A(row+6) | | 140 | | row[1])) { | 141 | | uint32_t temp; | 142 | | if (DC_SHIFT - extra_shift >= 0) { | 143 | | temp = (row[0] * (1 << (DC_SHIFT - extra_shift))) & 0xffff; | 144 | | } else { | 145 | | temp = ((row[0] + (1<<(extra_shift - DC_SHIFT-1))) >> (extra_shift - DC_SHIFT)) & 0xffff; | 146 | | } | 147 | | temp += temp * (1 << 16); | 148 | | AV_WN32A(row, temp); | 149 | | AV_WN32A(row+2, temp); | 150 | | AV_WN32A(row+4, temp); | 151 | | AV_WN32A(row+6, temp); | 152 | | return; | 153 | | } | 154 | | #endif | 155 | | #endif | 156 | | | 157 | 1.91M | a0 = ((SUINT)W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); | 158 | 1.91M | a1 = a0; | 159 | 1.91M | a2 = a0; | 160 | 1.91M | a3 = a0; | 161 | | | 162 | 1.91M | a0 += (SUINT)W2 * row[2]; | 163 | 1.91M | a1 += (SUINT)W6 * row[2]; | 164 | 1.91M | a2 -= (SUINT)W6 * row[2]; | 165 | 1.91M | a3 -= (SUINT)W2 * row[2]; | 166 | | | 167 | 1.91M | b0 = MUL(W1, row[1]); | 168 | 1.91M | MAC(b0, W3, row[3]); | 169 | 1.91M | b1 = MUL(W3, row[1]); | 170 | 1.91M | MAC(b1, -W7, row[3]); | 171 | 1.91M | b2 = MUL(W5, row[1]); | 172 | 1.91M | MAC(b2, -W1, row[3]); | 173 | 1.91M | b3 = MUL(W7, row[1]); | 174 | 1.91M | MAC(b3, -W5, row[3]); | 175 | | | 176 | 1.91M | #if IN_IDCT_DEPTH == 32 | 177 | 1.91M | if (AV_RN64A(row + 4) | AV_RN64A(row + 6)) { | 178 | | #else | 179 | | if (AV_RN64A(row + 4)) { | 180 | | #endif | 181 | 17.5k | a0 += (SUINT) W4*row[4] + (SUINT)W6*row[6]; | 182 | 17.5k | a1 += (SUINT)- W4*row[4] - (SUINT)W2*row[6]; | 183 | 17.5k | a2 += (SUINT)- W4*row[4] + (SUINT)W2*row[6]; | 184 | 17.5k | a3 += (SUINT) W4*row[4] - (SUINT)W6*row[6]; | 185 | | | 186 | 17.5k | MAC(b0, W5, row[5]); | 187 | 17.5k | MAC(b0, W7, row[7]); | 188 | | | 189 | 17.5k | MAC(b1, -W1, row[5]); | 190 | 17.5k | MAC(b1, -W5, row[7]); | 191 | | | 192 | 17.5k | MAC(b2, W7, row[5]); | 193 | 17.5k | MAC(b2, W3, row[7]); | 194 | | | 195 | 17.5k | MAC(b3, W3, row[5]); | 196 | 17.5k | MAC(b3, -W1, row[7]); | 197 | 17.5k | } | 198 | | | 199 | 1.91M | row[0] = (int)(a0 + b0) >> (ROW_SHIFT + extra_shift); | 200 | 1.91M | row[7] = (int)(a0 - b0) >> (ROW_SHIFT + extra_shift); | 201 | 1.91M | row[1] = (int)(a1 + b1) >> (ROW_SHIFT + extra_shift); | 202 | 1.91M | row[6] = (int)(a1 - b1) >> (ROW_SHIFT + extra_shift); | 203 | 1.91M | row[2] = (int)(a2 + b2) >> (ROW_SHIFT + extra_shift); | 204 | 1.91M | row[5] = (int)(a2 - b2) >> (ROW_SHIFT + extra_shift); | 205 | 1.91M | row[3] = (int)(a3 + b3) >> (ROW_SHIFT + extra_shift); | 206 | 1.91M | row[4] = (int)(a3 - b3) >> (ROW_SHIFT + extra_shift); | 207 | 1.91M | } |
|
208 | | |
209 | 1.67G | #define IDCT_COLS do { \ |
210 | 1.67G | a0 = (SUINT)W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); \ |
211 | 1.67G | a1 = a0; \ |
212 | 1.67G | a2 = a0; \ |
213 | 1.67G | a3 = a0; \ |
214 | 1.67G | \ |
215 | 1.67G | a0 += (SUINT) W2*col[8*2]; \ |
216 | 1.67G | a1 += (SUINT) W6*col[8*2]; \ |
217 | 1.67G | a2 += (SUINT)-W6*col[8*2]; \ |
218 | 1.67G | a3 += (SUINT)-W2*col[8*2]; \ |
219 | 1.67G | \ |
220 | 1.67G | b0 = MUL(W1, col[8*1]); \ |
221 | 1.67G | b1 = MUL(W3, col[8*1]); \ |
222 | 1.67G | b2 = MUL(W5, col[8*1]); \ |
223 | 1.67G | b3 = MUL(W7, col[8*1]); \ |
224 | 1.67G | \ |
225 | 1.67G | MAC(b0, W3, col[8*3]); \ |
226 | 1.67G | MAC(b1, -W7, col[8*3]); \ |
227 | 1.67G | MAC(b2, -W1, col[8*3]); \ |
228 | 1.67G | MAC(b3, -W5, col[8*3]); \ |
229 | 1.67G | \ |
230 | 1.67G | if (col[8*4]) { \ |
231 | 103M | a0 += (SUINT) W4*col[8*4]; \ |
232 | 103M | a1 += (SUINT)-W4*col[8*4]; \ |
233 | 103M | a2 += (SUINT)-W4*col[8*4]; \ |
234 | 103M | a3 += (SUINT) W4*col[8*4]; \ |
235 | 103M | } \ |
236 | 1.67G | \ |
237 | 1.67G | if (col[8*5]) { \ |
238 | 80.4M | MAC(b0, W5, col[8*5]); \ |
239 | 80.4M | MAC(b1, -W1, col[8*5]); \ |
240 | 80.4M | MAC(b2, W7, col[8*5]); \ |
241 | 80.4M | MAC(b3, W3, col[8*5]); \ |
242 | 80.4M | } \ |
243 | 1.67G | \ |
244 | 1.67G | if (col[8*6]) { \ |
245 | 74.6M | a0 += (SUINT) W6*col[8*6]; \ |
246 | 74.6M | a1 += (SUINT)-W2*col[8*6]; \ |
247 | 74.6M | a2 += (SUINT) W2*col[8*6]; \ |
248 | 74.6M | a3 += (SUINT)-W6*col[8*6]; \ |
249 | 74.6M | } \ |
250 | 1.67G | \ |
251 | 1.67G | if (col[8*7]) { \ |
252 | 56.3M | MAC(b0, W7, col[8*7]); \ |
253 | 56.3M | MAC(b1, -W5, col[8*7]); \ |
254 | 56.3M | MAC(b2, W3, col[8*7]); \ |
255 | 56.3M | MAC(b3, -W1, col[8*7]); \ |
256 | 56.3M | } \ |
257 | 1.67G | } while (0) |
258 | | |
259 | | #ifdef EXTRA_SHIFT |
260 | | static inline void FUNC(idctSparseCol_extrashift)(int16_t *col) |
261 | | #else |
262 | | static inline void FUNC6(idctSparseCol)(idctin *col) |
263 | | #endif |
264 | 143M | { |
265 | 143M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; |
266 | | |
267 | 143M | IDCT_COLS; |
268 | | |
269 | 143M | col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); |
270 | 143M | col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); |
271 | 143M | col[16] = ((int)(a2 + b2) >> COL_SHIFT); |
272 | 143M | col[24] = ((int)(a3 + b3) >> COL_SHIFT); |
273 | 143M | col[32] = ((int)(a3 - b3) >> COL_SHIFT); |
274 | 143M | col[40] = ((int)(a2 - b2) >> COL_SHIFT); |
275 | 143M | col[48] = ((int)(a1 - b1) >> COL_SHIFT); |
276 | 143M | col[56] = ((int)(a0 - b0) >> COL_SHIFT); |
277 | 143M | } simple_idct.c:idctSparseCol_int16_8bit Line | Count | Source | 264 | 139M | { | 265 | 139M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; | 266 | | | 267 | 139M | IDCT_COLS; | 268 | | | 269 | 139M | col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); | 270 | 139M | col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); | 271 | 139M | col[16] = ((int)(a2 + b2) >> COL_SHIFT); | 272 | 139M | col[24] = ((int)(a3 + b3) >> COL_SHIFT); | 273 | 139M | col[32] = ((int)(a3 - b3) >> COL_SHIFT); | 274 | 139M | col[40] = ((int)(a2 - b2) >> COL_SHIFT); | 275 | 139M | col[48] = ((int)(a1 - b1) >> COL_SHIFT); | 276 | 139M | col[56] = ((int)(a0 - b0) >> COL_SHIFT); | 277 | 139M | } |
Unexecuted instantiation: simple_idct.c:idctSparseCol_int16_10bit Unexecuted instantiation: simple_idct.c:idctSparseCol_int16_12bit Unexecuted instantiation: simple_idct.c:idctSparseCol_int32_10bit proresdsp.c:idctSparseCol_extrashift_10 Line | Count | Source | 264 | 2.18M | { | 265 | 2.18M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; | 266 | | | 267 | 2.18M | IDCT_COLS; | 268 | | | 269 | 2.18M | col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); | 270 | 2.18M | col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); | 271 | 2.18M | col[16] = ((int)(a2 + b2) >> COL_SHIFT); | 272 | 2.18M | col[24] = ((int)(a3 + b3) >> COL_SHIFT); | 273 | 2.18M | col[32] = ((int)(a3 - b3) >> COL_SHIFT); | 274 | 2.18M | col[40] = ((int)(a2 - b2) >> COL_SHIFT); | 275 | 2.18M | col[48] = ((int)(a1 - b1) >> COL_SHIFT); | 276 | 2.18M | col[56] = ((int)(a0 - b0) >> COL_SHIFT); | 277 | 2.18M | } |
proresdsp.c:idctSparseCol_int16_12bit Line | Count | Source | 264 | 259k | { | 265 | 259k | unsigned a0, a1, a2, a3, b0, b1, b2, b3; | 266 | | | 267 | 259k | IDCT_COLS; | 268 | | | 269 | 259k | col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); | 270 | 259k | col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); | 271 | 259k | col[16] = ((int)(a2 + b2) >> COL_SHIFT); | 272 | 259k | col[24] = ((int)(a3 + b3) >> COL_SHIFT); | 273 | 259k | col[32] = ((int)(a3 - b3) >> COL_SHIFT); | 274 | 259k | col[40] = ((int)(a2 - b2) >> COL_SHIFT); | 275 | 259k | col[48] = ((int)(a1 - b1) >> COL_SHIFT); | 276 | 259k | col[56] = ((int)(a0 - b0) >> COL_SHIFT); | 277 | 259k | } |
proresdsp.c:idctSparseCol_int32_12bit Line | Count | Source | 264 | 1.91M | { | 265 | 1.91M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; | 266 | | | 267 | 1.91M | IDCT_COLS; | 268 | | | 269 | 1.91M | col[0 ] = ((int)(a0 + b0) >> COL_SHIFT); | 270 | 1.91M | col[8 ] = ((int)(a1 + b1) >> COL_SHIFT); | 271 | 1.91M | col[16] = ((int)(a2 + b2) >> COL_SHIFT); | 272 | 1.91M | col[24] = ((int)(a3 + b3) >> COL_SHIFT); | 273 | 1.91M | col[32] = ((int)(a3 - b3) >> COL_SHIFT); | 274 | 1.91M | col[40] = ((int)(a2 - b2) >> COL_SHIFT); | 275 | 1.91M | col[48] = ((int)(a1 - b1) >> COL_SHIFT); | 276 | 1.91M | col[56] = ((int)(a0 - b0) >> COL_SHIFT); | 277 | 1.91M | } |
|
278 | | |
279 | | #ifndef PRORES_ONLY |
280 | | #ifndef EXTRA_SHIFT |
281 | | static inline void FUNC6(idctSparseColPut)(pixel *dest, ptrdiff_t line_size, |
282 | | idctin *col) |
283 | 1.44G | { |
284 | 1.44G | SUINT a0, a1, a2, a3, b0, b1, b2, b3; |
285 | | |
286 | 1.44G | IDCT_COLS; |
287 | | |
288 | 1.44G | dest[0] = av_clip_pixel((int)(a0 + b0) >> COL_SHIFT); |
289 | 1.44G | dest += line_size; |
290 | 1.44G | dest[0] = av_clip_pixel((int)(a1 + b1) >> COL_SHIFT); |
291 | 1.44G | dest += line_size; |
292 | 1.44G | dest[0] = av_clip_pixel((int)(a2 + b2) >> COL_SHIFT); |
293 | 1.44G | dest += line_size; |
294 | 1.44G | dest[0] = av_clip_pixel((int)(a3 + b3) >> COL_SHIFT); |
295 | 1.44G | dest += line_size; |
296 | 1.44G | dest[0] = av_clip_pixel((int)(a3 - b3) >> COL_SHIFT); |
297 | 1.44G | dest += line_size; |
298 | 1.44G | dest[0] = av_clip_pixel((int)(a2 - b2) >> COL_SHIFT); |
299 | 1.44G | dest += line_size; |
300 | 1.44G | dest[0] = av_clip_pixel((int)(a1 - b1) >> COL_SHIFT); |
301 | 1.44G | dest += line_size; |
302 | 1.44G | dest[0] = av_clip_pixel((int)(a0 - b0) >> COL_SHIFT); |
303 | 1.44G | } simple_idct.c:idctSparseColPut_int16_8bit Line | Count | Source | 283 | 1.27G | { | 284 | 1.27G | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 285 | | | 286 | 1.27G | IDCT_COLS; | 287 | | | 288 | 1.27G | dest[0] = av_clip_pixel((int)(a0 + b0) >> COL_SHIFT); | 289 | 1.27G | dest += line_size; | 290 | 1.27G | dest[0] = av_clip_pixel((int)(a1 + b1) >> COL_SHIFT); | 291 | 1.27G | dest += line_size; | 292 | 1.27G | dest[0] = av_clip_pixel((int)(a2 + b2) >> COL_SHIFT); | 293 | 1.27G | dest += line_size; | 294 | 1.27G | dest[0] = av_clip_pixel((int)(a3 + b3) >> COL_SHIFT); | 295 | 1.27G | dest += line_size; | 296 | 1.27G | dest[0] = av_clip_pixel((int)(a3 - b3) >> COL_SHIFT); | 297 | 1.27G | dest += line_size; | 298 | 1.27G | dest[0] = av_clip_pixel((int)(a2 - b2) >> COL_SHIFT); | 299 | 1.27G | dest += line_size; | 300 | 1.27G | dest[0] = av_clip_pixel((int)(a1 - b1) >> COL_SHIFT); | 301 | 1.27G | dest += line_size; | 302 | 1.27G | dest[0] = av_clip_pixel((int)(a0 - b0) >> COL_SHIFT); | 303 | 1.27G | } |
simple_idct.c:idctSparseColPut_int16_10bit Line | Count | Source | 283 | 101M | { | 284 | 101M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 285 | | | 286 | 101M | IDCT_COLS; | 287 | | | 288 | 101M | dest[0] = av_clip_pixel((int)(a0 + b0) >> COL_SHIFT); | 289 | 101M | dest += line_size; | 290 | 101M | dest[0] = av_clip_pixel((int)(a1 + b1) >> COL_SHIFT); | 291 | 101M | dest += line_size; | 292 | 101M | dest[0] = av_clip_pixel((int)(a2 + b2) >> COL_SHIFT); | 293 | 101M | dest += line_size; | 294 | 101M | dest[0] = av_clip_pixel((int)(a3 + b3) >> COL_SHIFT); | 295 | 101M | dest += line_size; | 296 | 101M | dest[0] = av_clip_pixel((int)(a3 - b3) >> COL_SHIFT); | 297 | 101M | dest += line_size; | 298 | 101M | dest[0] = av_clip_pixel((int)(a2 - b2) >> COL_SHIFT); | 299 | 101M | dest += line_size; | 300 | 101M | dest[0] = av_clip_pixel((int)(a1 - b1) >> COL_SHIFT); | 301 | 101M | dest += line_size; | 302 | 101M | dest[0] = av_clip_pixel((int)(a0 - b0) >> COL_SHIFT); | 303 | 101M | } |
simple_idct.c:idctSparseColPut_int16_12bit Line | Count | Source | 283 | 60.8M | { | 284 | 60.8M | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 285 | | | 286 | 60.8M | IDCT_COLS; | 287 | | | 288 | 60.8M | dest[0] = av_clip_pixel((int)(a0 + b0) >> COL_SHIFT); | 289 | 60.8M | dest += line_size; | 290 | 60.8M | dest[0] = av_clip_pixel((int)(a1 + b1) >> COL_SHIFT); | 291 | 60.8M | dest += line_size; | 292 | 60.8M | dest[0] = av_clip_pixel((int)(a2 + b2) >> COL_SHIFT); | 293 | 60.8M | dest += line_size; | 294 | 60.8M | dest[0] = av_clip_pixel((int)(a3 + b3) >> COL_SHIFT); | 295 | 60.8M | dest += line_size; | 296 | 60.8M | dest[0] = av_clip_pixel((int)(a3 - b3) >> COL_SHIFT); | 297 | 60.8M | dest += line_size; | 298 | 60.8M | dest[0] = av_clip_pixel((int)(a2 - b2) >> COL_SHIFT); | 299 | 60.8M | dest += line_size; | 300 | 60.8M | dest[0] = av_clip_pixel((int)(a1 - b1) >> COL_SHIFT); | 301 | 60.8M | dest += line_size; | 302 | 60.8M | dest[0] = av_clip_pixel((int)(a0 - b0) >> COL_SHIFT); | 303 | 60.8M | } |
simple_idct.c:idctSparseColPut_int32_10bit Line | Count | Source | 283 | 412k | { | 284 | 412k | SUINT a0, a1, a2, a3, b0, b1, b2, b3; | 285 | | | 286 | 412k | IDCT_COLS; | 287 | | | 288 | 412k | dest[0] = av_clip_pixel((int)(a0 + b0) >> COL_SHIFT); | 289 | 412k | dest += line_size; | 290 | 412k | dest[0] = av_clip_pixel((int)(a1 + b1) >> COL_SHIFT); | 291 | 412k | dest += line_size; | 292 | 412k | dest[0] = av_clip_pixel((int)(a2 + b2) >> COL_SHIFT); | 293 | 412k | dest += line_size; | 294 | 412k | dest[0] = av_clip_pixel((int)(a3 + b3) >> COL_SHIFT); | 295 | 412k | dest += line_size; | 296 | 412k | dest[0] = av_clip_pixel((int)(a3 - b3) >> COL_SHIFT); | 297 | 412k | dest += line_size; | 298 | 412k | dest[0] = av_clip_pixel((int)(a2 - b2) >> COL_SHIFT); | 299 | 412k | dest += line_size; | 300 | 412k | dest[0] = av_clip_pixel((int)(a1 - b1) >> COL_SHIFT); | 301 | 412k | dest += line_size; | 302 | 412k | dest[0] = av_clip_pixel((int)(a0 - b0) >> COL_SHIFT); | 303 | 412k | } |
|
304 | | |
305 | | static inline void FUNC6(idctSparseColAdd)(pixel *dest, ptrdiff_t line_size, |
306 | | idctin *col) |
307 | 95.0M | { |
308 | 95.0M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; |
309 | | |
310 | 95.0M | IDCT_COLS; |
311 | | |
312 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a0 + b0) >> COL_SHIFT)); |
313 | 95.0M | dest += line_size; |
314 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a1 + b1) >> COL_SHIFT)); |
315 | 95.0M | dest += line_size; |
316 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a2 + b2) >> COL_SHIFT)); |
317 | 95.0M | dest += line_size; |
318 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a3 + b3) >> COL_SHIFT)); |
319 | 95.0M | dest += line_size; |
320 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a3 - b3) >> COL_SHIFT)); |
321 | 95.0M | dest += line_size; |
322 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a2 - b2) >> COL_SHIFT)); |
323 | 95.0M | dest += line_size; |
324 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a1 - b1) >> COL_SHIFT)); |
325 | 95.0M | dest += line_size; |
326 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a0 - b0) >> COL_SHIFT)); |
327 | 95.0M | } simple_idct.c:idctSparseColAdd_int16_8bit Line | Count | Source | 307 | 95.0M | { | 308 | 95.0M | unsigned a0, a1, a2, a3, b0, b1, b2, b3; | 309 | | | 310 | 95.0M | IDCT_COLS; | 311 | | | 312 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a0 + b0) >> COL_SHIFT)); | 313 | 95.0M | dest += line_size; | 314 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a1 + b1) >> COL_SHIFT)); | 315 | 95.0M | dest += line_size; | 316 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a2 + b2) >> COL_SHIFT)); | 317 | 95.0M | dest += line_size; | 318 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a3 + b3) >> COL_SHIFT)); | 319 | 95.0M | dest += line_size; | 320 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a3 - b3) >> COL_SHIFT)); | 321 | 95.0M | dest += line_size; | 322 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a2 - b2) >> COL_SHIFT)); | 323 | 95.0M | dest += line_size; | 324 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a1 - b1) >> COL_SHIFT)); | 325 | 95.0M | dest += line_size; | 326 | 95.0M | dest[0] = av_clip_pixel(dest[0] + ((int)(a0 - b0) >> COL_SHIFT)); | 327 | 95.0M | } |
Unexecuted instantiation: simple_idct.c:idctSparseColAdd_int16_10bit Unexecuted instantiation: simple_idct.c:idctSparseColAdd_int16_12bit Unexecuted instantiation: simple_idct.c:idctSparseColAdd_int32_10bit |
328 | | |
329 | | void FUNC6(ff_simple_idct_put)(uint8_t *dest_, ptrdiff_t line_size, int16_t *block_) |
330 | 180M | { |
331 | 180M | idctin *block = (idctin *)block_; |
332 | 180M | pixel *dest = (pixel *)dest_; |
333 | 180M | int i; |
334 | | |
335 | 180M | line_size /= sizeof(pixel); |
336 | | |
337 | 1.62G | for (i = 0; i < 8; i++) |
338 | 1.44G | FUNC6(idctRowCondDC)(block + i*8, 0); |
339 | | |
340 | 1.62G | for (i = 0; i < 8; i++) |
341 | 1.44G | FUNC6(idctSparseColPut)(dest + i, line_size, block + i); |
342 | 180M | } ff_simple_idct_put_int16_8bit Line | Count | Source | 330 | 159M | { | 331 | 159M | idctin *block = (idctin *)block_; | 332 | 159M | pixel *dest = (pixel *)dest_; | 333 | 159M | int i; | 334 | | | 335 | 159M | line_size /= sizeof(pixel); | 336 | | | 337 | 1.43G | for (i = 0; i < 8; i++) | 338 | 1.27G | FUNC6(idctRowCondDC)(block + i*8, 0); | 339 | | | 340 | 1.43G | for (i = 0; i < 8; i++) | 341 | 1.27G | FUNC6(idctSparseColPut)(dest + i, line_size, block + i); | 342 | 159M | } |
ff_simple_idct_put_int16_10bit Line | Count | Source | 330 | 12.6M | { | 331 | 12.6M | idctin *block = (idctin *)block_; | 332 | 12.6M | pixel *dest = (pixel *)dest_; | 333 | 12.6M | int i; | 334 | | | 335 | 12.6M | line_size /= sizeof(pixel); | 336 | | | 337 | 114M | for (i = 0; i < 8; i++) | 338 | 101M | FUNC6(idctRowCondDC)(block + i*8, 0); | 339 | | | 340 | 114M | for (i = 0; i < 8; i++) | 341 | 101M | FUNC6(idctSparseColPut)(dest + i, line_size, block + i); | 342 | 12.6M | } |
ff_simple_idct_put_int16_12bit Line | Count | Source | 330 | 7.60M | { | 331 | 7.60M | idctin *block = (idctin *)block_; | 332 | 7.60M | pixel *dest = (pixel *)dest_; | 333 | 7.60M | int i; | 334 | | | 335 | 7.60M | line_size /= sizeof(pixel); | 336 | | | 337 | 68.4M | for (i = 0; i < 8; i++) | 338 | 60.8M | FUNC6(idctRowCondDC)(block + i*8, 0); | 339 | | | 340 | 68.4M | for (i = 0; i < 8; i++) | 341 | 60.8M | FUNC6(idctSparseColPut)(dest + i, line_size, block + i); | 342 | 7.60M | } |
ff_simple_idct_put_int32_10bit Line | Count | Source | 330 | 51.6k | { | 331 | 51.6k | idctin *block = (idctin *)block_; | 332 | 51.6k | pixel *dest = (pixel *)dest_; | 333 | 51.6k | int i; | 334 | | | 335 | 51.6k | line_size /= sizeof(pixel); | 336 | | | 337 | 464k | for (i = 0; i < 8; i++) | 338 | 412k | FUNC6(idctRowCondDC)(block + i*8, 0); | 339 | | | 340 | 464k | for (i = 0; i < 8; i++) | 341 | 412k | FUNC6(idctSparseColPut)(dest + i, line_size, block + i); | 342 | 51.6k | } |
|
343 | | |
344 | | #if IN_IDCT_DEPTH == 16 |
345 | | void FUNC6(ff_simple_idct_add)(uint8_t *dest_, ptrdiff_t line_size, int16_t *block) |
346 | 4.97M | { |
347 | 4.97M | pixel *dest = (pixel *)dest_; |
348 | 4.97M | int i; |
349 | | |
350 | 4.97M | line_size /= sizeof(pixel); |
351 | | |
352 | 44.7M | for (i = 0; i < 8; i++) |
353 | 39.7M | FUNC6(idctRowCondDC)(block + i*8, 0); |
354 | | |
355 | 44.7M | for (i = 0; i < 8; i++) |
356 | 39.7M | FUNC6(idctSparseColAdd)(dest + i, line_size, block + i); |
357 | 4.97M | } ff_simple_idct_add_int16_8bit Line | Count | Source | 346 | 4.97M | { | 347 | 4.97M | pixel *dest = (pixel *)dest_; | 348 | 4.97M | int i; | 349 | | | 350 | 4.97M | line_size /= sizeof(pixel); | 351 | | | 352 | 44.7M | for (i = 0; i < 8; i++) | 353 | 39.7M | FUNC6(idctRowCondDC)(block + i*8, 0); | 354 | | | 355 | 44.7M | for (i = 0; i < 8; i++) | 356 | 39.7M | FUNC6(idctSparseColAdd)(dest + i, line_size, block + i); | 357 | 4.97M | } |
Unexecuted instantiation: ff_simple_idct_add_int16_10bit Unexecuted instantiation: ff_simple_idct_add_int16_12bit |
358 | | |
359 | | void FUNC6(ff_simple_idct)(int16_t *block) |
360 | 17.3M | { |
361 | 17.3M | int i; |
362 | | |
363 | 156M | for (i = 0; i < 8; i++) |
364 | 139M | FUNC6(idctRowCondDC)(block + i*8, 0); |
365 | | |
366 | 156M | for (i = 0; i < 8; i++) |
367 | 139M | FUNC6(idctSparseCol)(block + i); |
368 | 17.3M | } ff_simple_idct_int16_8bit Line | Count | Source | 360 | 17.3M | { | 361 | 17.3M | int i; | 362 | | | 363 | 156M | for (i = 0; i < 8; i++) | 364 | 139M | FUNC6(idctRowCondDC)(block + i*8, 0); | 365 | | | 366 | 156M | for (i = 0; i < 8; i++) | 367 | 139M | FUNC6(idctSparseCol)(block + i); | 368 | 17.3M | } |
Unexecuted instantiation: ff_simple_idct_int16_10bit Unexecuted instantiation: ff_simple_idct_int16_12bit |
369 | | #endif |
370 | | #endif |
371 | | #endif /* PRORES_ONLY */ |