| 234 | } |
| 235 | |
| 236 | static inline void idctSparseColAdd (uint8_t *dest, int line_size, |
| 237 | DCTELEM * col) |
| 238 | { |
| 239 | int a0, a1, a2, a3, b0, b1, b2, b3; |
| 240 | uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; |
| 241 | |
| 242 | /* XXX: I did that only to give same values as previous code */ |
| 243 | a0 = W4 * (col[8*0] + ((1<<(COL_SHIFT-1))/W4)); |
| 244 | a1 = a0; |
| 245 | a2 = a0; |
| 246 | a3 = a0; |
| 247 | |
| 248 | a0 += + W2*col[8*2]; |
| 249 | a1 += + W6*col[8*2]; |
| 250 | a2 += - W6*col[8*2]; |
| 251 | a3 += - W2*col[8*2]; |
| 252 | |
| 253 | b0 = MUL16(W1, col[8*1]); |
| 254 | b1 = MUL16(W3, col[8*1]); |
| 255 | b2 = MUL16(W5, col[8*1]); |
| 256 | b3 = MUL16(W7, col[8*1]); |
| 257 | |
| 258 | MAC16(b0, + W3, col[8*3]); |
| 259 | MAC16(b1, - W7, col[8*3]); |
| 260 | MAC16(b2, - W1, col[8*3]); |
| 261 | MAC16(b3, - W5, col[8*3]); |
| 262 | |
| 263 | if(col[8*4]){ |
| 264 | a0 += + W4*col[8*4]; |
| 265 | a1 += - W4*col[8*4]; |
| 266 | a2 += - W4*col[8*4]; |
| 267 | a3 += + W4*col[8*4]; |
| 268 | } |
| 269 | |
| 270 | if (col[8*5]) { |
| 271 | MAC16(b0, + W5, col[8*5]); |
| 272 | MAC16(b1, - W1, col[8*5]); |
| 273 | MAC16(b2, + W7, col[8*5]); |
| 274 | MAC16(b3, + W3, col[8*5]); |
| 275 | } |
| 276 | |
| 277 | if(col[8*6]){ |
| 278 | a0 += + W6*col[8*6]; |
| 279 | a1 += - W2*col[8*6]; |
| 280 | a2 += + W2*col[8*6]; |
| 281 | a3 += - W6*col[8*6]; |
| 282 | } |
| 283 | |
| 284 | if (col[8*7]) { |
| 285 | MAC16(b0, + W7, col[8*7]); |
| 286 | MAC16(b1, - W5, col[8*7]); |
| 287 | MAC16(b2, + W3, col[8*7]); |
| 288 | MAC16(b3, - W1, col[8*7]); |
| 289 | } |
| 290 | |
| 291 | dest[0] = cm[dest[0] + ((a0 + b0) >> COL_SHIFT)]; |
| 292 | dest += line_size; |
| 293 | dest[0] = cm[dest[0] + ((a1 + b1) >> COL_SHIFT)]; |
no test coverage detected