- int a0, a1, a2, a3, b0, b1, b2, b3;
- const int C1 =W1;
- const int C2 =W2;
- const int C3 =W3;
- const int C4 =W4;
- const int C5 =W5;
- const int C6 =W6;
- const int C7 =W7;
-/*
- if( !(col[8*1] | col[8*2] |col[8*3] |col[8*4] |col[8*5] |col[8*6] | col[8*7])) {
- col[8*0] = col[8*1] = col[8*2] = col[8*3] = col[8*4] =
- col[8*5] = col[8*6] = col[8*7] = col[8*0]<<3;
- return;
- }*/
- col[0] += (1<<(COL_SHIFT-1))/W4;
- a0 = C4*col[8*0] + C2*col[8*2] + C4*col[8*4] + C6*col[8*6];
- a1 = C4*col[8*0] + C6*col[8*2] - C4*col[8*4] - C2*col[8*6];
- a2 = C4*col[8*0] - C6*col[8*2] - C4*col[8*4] + C2*col[8*6];
- a3 = C4*col[8*0] - C2*col[8*2] + C4*col[8*4] - C6*col[8*6];
-
- b0 = C1*col[8*1] + C3*col[8*3] + C5*col[8*5] + C7*col[8*7];
- b1 = C3*col[8*1] - C7*col[8*3] - C1*col[8*5] - C5*col[8*7];
- b2 = C5*col[8*1] - C1*col[8*3] + C7*col[8*5] + C3*col[8*7];
- b3 = C7*col[8*1] - C5*col[8*3] + C3*col[8*5] - C1*col[8*7];
-
- col[8*0] = (a0 + b0) >> COL_SHIFT;
- col[8*1] = (a1 + b1) >> COL_SHIFT;
- col[8*2] = (a2 + b2) >> COL_SHIFT;
- col[8*3] = (a3 + b3) >> COL_SHIFT;
- col[8*4] = (a3 - b3) >> COL_SHIFT;
- col[8*5] = (a2 - b2) >> COL_SHIFT;
- col[8*6] = (a1 - b1) >> COL_SHIFT;
- col[8*7] = (a0 - b0) >> COL_SHIFT;
+ int c0, c1, c2, c3, a0, a1, a2, a3;
+
+ a0 = col[8*0];
+ a1 = col[8*1];
+ a2 = col[8*2];
+ a3 = col[8*3];
+ c0 = (a0 + a2)*C3 + (1 << (C_SHIFT - 1));
+ c2 = (a0 - a2)*C3 + (1 << (C_SHIFT - 1));
+ c1 = a1 * C1 + a3 * C2;
+ c3 = a1 * C2 - a3 * C1;
+ dest[0] = av_clip_uint8(dest[0] + ((c0 + c1) >> C_SHIFT));
+ dest += line_size;
+ dest[0] = av_clip_uint8(dest[0] + ((c2 + c3) >> C_SHIFT));
+ dest += line_size;
+ dest[0] = av_clip_uint8(dest[0] + ((c2 - c3) >> C_SHIFT));
+ dest += line_size;
+ dest[0] = av_clip_uint8(dest[0] + ((c0 - c1) >> C_SHIFT));