|
| 1 | +/*! |
| 2 | + * Generated by scripts/av1-fdct.py: the 4-, 8- and 16-point DCTs of fdct.ts's recursion, unrolled |
| 3 | + */ |
| 4 | + |
| 5 | +// the unnormalized 4-point DCT-II of x[o] in place |
| 6 | +export function dct4(x: Float64Array, o: number): void { |
| 7 | + const t0 = x[o] + x[o + 3]; |
| 8 | + const t1 = x[o + 1] + x[o + 2]; |
| 9 | + const t2 = (x[o] - x[o + 3]) * 0.541196100146197; |
| 10 | + const t3 = (x[o + 1] - x[o + 2]) * 1.3065629648763764; |
| 11 | + const t4 = t0 + t1; |
| 12 | + const t5 = (t0 - t1) * 0.7071067811865475; |
| 13 | + const t6 = t2 + t3; |
| 14 | + const t7 = (t2 - t3) * 0.7071067811865475; |
| 15 | + const t8 = t6 + t7; |
| 16 | + x[o] = t4; |
| 17 | + x[o + 1] = t8; |
| 18 | + x[o + 2] = t5; |
| 19 | + x[o + 3] = t7; |
| 20 | +} |
| 21 | + |
| 22 | +// the unnormalized 8-point DCT-II of x[o] in place |
| 23 | +export function dct8(x: Float64Array, o: number): void { |
| 24 | + const t0 = x[o] + x[o + 7]; |
| 25 | + const t1 = x[o + 1] + x[o + 6]; |
| 26 | + const t2 = x[o + 2] + x[o + 5]; |
| 27 | + const t3 = x[o + 3] + x[o + 4]; |
| 28 | + const t4 = (x[o] - x[o + 7]) * 0.5097955791041592; |
| 29 | + const t5 = (x[o + 1] - x[o + 6]) * 0.6013448869350453; |
| 30 | + const t6 = (x[o + 2] - x[o + 5]) * 0.8999762231364156; |
| 31 | + const t7 = (x[o + 3] - x[o + 4]) * 2.5629154477415055; |
| 32 | + const t8 = t0 + t3; |
| 33 | + const t9 = t1 + t2; |
| 34 | + const t10 = (t0 - t3) * 0.541196100146197; |
| 35 | + const t11 = (t1 - t2) * 1.3065629648763764; |
| 36 | + const t12 = t8 + t9; |
| 37 | + const t13 = (t8 - t9) * 0.7071067811865475; |
| 38 | + const t14 = t10 + t11; |
| 39 | + const t15 = (t10 - t11) * 0.7071067811865475; |
| 40 | + const t16 = t14 + t15; |
| 41 | + const t17 = t4 + t7; |
| 42 | + const t18 = t5 + t6; |
| 43 | + const t19 = (t4 - t7) * 0.541196100146197; |
| 44 | + const t20 = (t5 - t6) * 1.3065629648763764; |
| 45 | + const t21 = t17 + t18; |
| 46 | + const t22 = (t17 - t18) * 0.7071067811865475; |
| 47 | + const t23 = t19 + t20; |
| 48 | + const t24 = (t19 - t20) * 0.7071067811865475; |
| 49 | + const t25 = t23 + t24; |
| 50 | + const t26 = t21 + t25; |
| 51 | + const t27 = t25 + t22; |
| 52 | + const t28 = t22 + t24; |
| 53 | + x[o] = t12; |
| 54 | + x[o + 1] = t26; |
| 55 | + x[o + 2] = t16; |
| 56 | + x[o + 3] = t27; |
| 57 | + x[o + 4] = t13; |
| 58 | + x[o + 5] = t28; |
| 59 | + x[o + 6] = t15; |
| 60 | + x[o + 7] = t24; |
| 61 | +} |
| 62 | + |
| 63 | +// the unnormalized 16-point DCT-II of x[o] in place |
| 64 | +export function dct16(x: Float64Array, o: number): void { |
| 65 | + const t0 = x[o] + x[o + 15]; |
| 66 | + const t1 = x[o + 1] + x[o + 14]; |
| 67 | + const t2 = x[o + 2] + x[o + 13]; |
| 68 | + const t3 = x[o + 3] + x[o + 12]; |
| 69 | + const t4 = x[o + 4] + x[o + 11]; |
| 70 | + const t5 = x[o + 5] + x[o + 10]; |
| 71 | + const t6 = x[o + 6] + x[o + 9]; |
| 72 | + const t7 = x[o + 7] + x[o + 8]; |
| 73 | + const t8 = (x[o] - x[o + 15]) * 0.5024192861881557; |
| 74 | + const t9 = (x[o + 1] - x[o + 14]) * 0.5224986149396889; |
| 75 | + const t10 = (x[o + 2] - x[o + 13]) * 0.5669440348163577; |
| 76 | + const t11 = (x[o + 3] - x[o + 12]) * 0.6468217833599901; |
| 77 | + const t12 = (x[o + 4] - x[o + 11]) * 0.7881546234512502; |
| 78 | + const t13 = (x[o + 5] - x[o + 10]) * 1.060677685990347; |
| 79 | + const t14 = (x[o + 6] - x[o + 9]) * 1.7224470982383342; |
| 80 | + const t15 = (x[o + 7] - x[o + 8]) * 5.101148618689155; |
| 81 | + const t16 = t0 + t7; |
| 82 | + const t17 = t1 + t6; |
| 83 | + const t18 = t2 + t5; |
| 84 | + const t19 = t3 + t4; |
| 85 | + const t20 = (t0 - t7) * 0.5097955791041592; |
| 86 | + const t21 = (t1 - t6) * 0.6013448869350453; |
| 87 | + const t22 = (t2 - t5) * 0.8999762231364156; |
| 88 | + const t23 = (t3 - t4) * 2.5629154477415055; |
| 89 | + const t24 = t16 + t19; |
| 90 | + const t25 = t17 + t18; |
| 91 | + const t26 = (t16 - t19) * 0.541196100146197; |
| 92 | + const t27 = (t17 - t18) * 1.3065629648763764; |
| 93 | + const t28 = t24 + t25; |
| 94 | + const t29 = (t24 - t25) * 0.7071067811865475; |
| 95 | + const t30 = t26 + t27; |
| 96 | + const t31 = (t26 - t27) * 0.7071067811865475; |
| 97 | + const t32 = t30 + t31; |
| 98 | + const t33 = t20 + t23; |
| 99 | + const t34 = t21 + t22; |
| 100 | + const t35 = (t20 - t23) * 0.541196100146197; |
| 101 | + const t36 = (t21 - t22) * 1.3065629648763764; |
| 102 | + const t37 = t33 + t34; |
| 103 | + const t38 = (t33 - t34) * 0.7071067811865475; |
| 104 | + const t39 = t35 + t36; |
| 105 | + const t40 = (t35 - t36) * 0.7071067811865475; |
| 106 | + const t41 = t39 + t40; |
| 107 | + const t42 = t37 + t41; |
| 108 | + const t43 = t41 + t38; |
| 109 | + const t44 = t38 + t40; |
| 110 | + const t45 = t8 + t15; |
| 111 | + const t46 = t9 + t14; |
| 112 | + const t47 = t10 + t13; |
| 113 | + const t48 = t11 + t12; |
| 114 | + const t49 = (t8 - t15) * 0.5097955791041592; |
| 115 | + const t50 = (t9 - t14) * 0.6013448869350453; |
| 116 | + const t51 = (t10 - t13) * 0.8999762231364156; |
| 117 | + const t52 = (t11 - t12) * 2.5629154477415055; |
| 118 | + const t53 = t45 + t48; |
| 119 | + const t54 = t46 + t47; |
| 120 | + const t55 = (t45 - t48) * 0.541196100146197; |
| 121 | + const t56 = (t46 - t47) * 1.3065629648763764; |
| 122 | + const t57 = t53 + t54; |
| 123 | + const t58 = (t53 - t54) * 0.7071067811865475; |
| 124 | + const t59 = t55 + t56; |
| 125 | + const t60 = (t55 - t56) * 0.7071067811865475; |
| 126 | + const t61 = t59 + t60; |
| 127 | + const t62 = t49 + t52; |
| 128 | + const t63 = t50 + t51; |
| 129 | + const t64 = (t49 - t52) * 0.541196100146197; |
| 130 | + const t65 = (t50 - t51) * 1.3065629648763764; |
| 131 | + const t66 = t62 + t63; |
| 132 | + const t67 = (t62 - t63) * 0.7071067811865475; |
| 133 | + const t68 = t64 + t65; |
| 134 | + const t69 = (t64 - t65) * 0.7071067811865475; |
| 135 | + const t70 = t68 + t69; |
| 136 | + const t71 = t66 + t70; |
| 137 | + const t72 = t70 + t67; |
| 138 | + const t73 = t67 + t69; |
| 139 | + const t74 = t57 + t71; |
| 140 | + const t75 = t71 + t61; |
| 141 | + const t76 = t61 + t72; |
| 142 | + const t77 = t72 + t58; |
| 143 | + const t78 = t58 + t73; |
| 144 | + const t79 = t73 + t60; |
| 145 | + const t80 = t60 + t69; |
| 146 | + x[o] = t28; |
| 147 | + x[o + 1] = t74; |
| 148 | + x[o + 2] = t42; |
| 149 | + x[o + 3] = t75; |
| 150 | + x[o + 4] = t32; |
| 151 | + x[o + 5] = t76; |
| 152 | + x[o + 6] = t43; |
| 153 | + x[o + 7] = t77; |
| 154 | + x[o + 8] = t29; |
| 155 | + x[o + 9] = t78; |
| 156 | + x[o + 10] = t44; |
| 157 | + x[o + 11] = t79; |
| 158 | + x[o + 12] = t31; |
| 159 | + x[o + 13] = t80; |
| 160 | + x[o + 14] = t40; |
| 161 | + x[o + 15] = t69; |
| 162 | +} |
0 commit comments