MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / idctSparseColAdd

Function idctSparseColAdd

libavcodec/simple_idct.c:236–306  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

234}
235
236static 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)];

Callers 2

ff_simple_idct_addFunction · 0.85
ff_simple_idct48_addFunction · 0.85

Calls 2

MAC16Function · 0.85
MUL16Function · 0.50

Tested by

no test coverage detected