📄 sbr_dct.c
字号:
f192 = f149 - f173;
f193 = f149 + f173;
f194 = f148 - f172;
f195 = f148 + f172;
f196 = f155 - f179;
f197 = f155 + f179;
f198 = f154 - f178;
f199 = f154 + f178;
f200 = f161 - f185;
f201 = f161 + f185;
f202 = f160 - f184;
f203 = f160 + f184;
f204 = f167 - f191;
f205 = f167 + f191;
f206 = f166 - f190;
f207 = f166 + f190;
f208 = f192 + f194;
f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
f212 = f209 + f210;
f213 = f211 - f210;
f214 = f196 + f198;
f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
f218 = f215 + f216;
f219 = f217 - f216;
f220 = f200 + f202;
f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
f224 = f221 + f222;
f225 = f223 - f222;
f226 = f204 + f206;
f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
f230 = f227 + f228;
f231 = f229 - f228;
f232 = f193 - f201;
f233 = f193 + f201;
f234 = f195 - f203;
f235 = f195 + f203;
f236 = f197 - f205;
f237 = f197 + f205;
f238 = f199 - f207;
f239 = f199 + f207;
f240 = f213 - f225;
f241 = f213 + f225;
f242 = f212 - f224;
f243 = f212 + f224;
f244 = f219 - f231;
f245 = f219 + f231;
f246 = f218 - f230;
f247 = f218 + f230;
f248 = f232 + f234;
f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
f252 = f249 + f250;
f253 = f251 - f250;
f254 = f236 + f238;
f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
f258 = f255 + f256;
f259 = f257 - f256;
f260 = f240 + f242;
f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
f264 = f261 + f262;
f265 = f263 - f262;
f266 = f244 + f246;
f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
f270 = f267 + f268;
f271 = f269 - f268;
f272 = f233 - f237;
f273 = f233 + f237;
f274 = f235 - f239;
f275 = f235 + f239;
f276 = f253 - f259;
f277 = f253 + f259;
f278 = f252 - f258;
f279 = f252 + f258;
f280 = f241 - f245;
f281 = f241 + f245;
f282 = f243 - f247;
f283 = f243 + f247;
f284 = f265 - f271;
f285 = f265 + f271;
f286 = f264 - f270;
f287 = f264 + f270;
f288 = f272 - f274;
f289 = f272 + f274;
f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
f292 = f276 - f278;
f293 = f276 + f278;
f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
f296 = f280 - f282;
f297 = f280 + f282;
f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
f300 = f284 - f286;
f301 = f284 + f286;
f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
f304 = f129 - f273;
f305 = f129 + f273;
f306 = f131 - f281;
f307 = f131 + f281;
f308 = f133 - f285;
f309 = f133 + f285;
f310 = f135 - f277;
f311 = f135 + f277;
f312 = f137 - f295;
f313 = f137 + f295;
f314 = f139 - f303;
f315 = f139 + f303;
f316 = f141 - f299;
f317 = f141 + f299;
f318 = f143 - f291;
f319 = f143 + f291;
f320 = f142 - f290;
f321 = f142 + f290;
f322 = f140 - f298;
f323 = f140 + f298;
f324 = f138 - f302;
f325 = f138 + f302;
f326 = f136 - f294;
f327 = f136 + f294;
f328 = f134 - f279;
f329 = f134 + f279;
f330 = f132 - f287;
f331 = f132 + f287;
f332 = f130 - f283;
f333 = f130 + f283;
f334 = f128 - f275;
f335 = f128 + f275;
y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
}
#ifdef SBR_LOW_POWER
void DCT2_16_unscaled(real_t *y, real_t *x)
{
real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
real_t f21, f22, f23, f24, f25, f26, f27, f28, f31, f32;
real_t f33, f34, f37, f38, f39, f40, f41, f42, f43, f44;
real_t f45, f46, f47, f48, f49, f51, f53, f54, f57, f58;
real_t f59, f60, f61, f62, f63, f64, f65, f66, f67, f68;
real_t f69, f70, f71, f72, f73, f74, f75, f76, f77, f78;
real_t f79, f80, f81, f82, f83, f84, f85, f86, f87, f88;
real_t f89, f90, f91, f92, f95, f96, f97, f98, f101, f102;
real_t f103, f104, f107, f108, f109, f110;
f0 = x[0] - x[15];
f1 = x[0] + x[15];
f2 = x[1] - x[14];
f3 = x[1] + x[14];
f4 = x[2] - x[13];
f5 = x[2] + x[13];
f6 = x[3] - x[12];
f7 = x[3] + x[12];
f8 = x[4] - x[11];
f9 = x[4] + x[11];
f10 = x[5] - x[10];
f11 = x[5] + x[10];
f12 = x[6] - x[9];
f13 = x[6] + x[9];
f14 = x[7] - x[8];
f15 = x[7] + x[8];
f16 = f1 - f15;
f17 = f1 + f15;
f18 = f3 - f13;
f19 = f3 + f13;
f20 = f5 - f11;
f21 = f5 + f11;
f22 = f7 - f9;
f23 = f7 + f9;
f24 = f17 - f23;
f25 = f17 + f23;
f26 = f19 - f21;
f27 = f19 + f21;
f28 = f25 - f27;
y[0] = f25 + f27;
y[8] = MUL_F(f28, FRAC_CONST(0.7071067811865476));
f31 = f24 + f26;
f32 = MUL_C(f24, COEF_CONST(1.3065629648763766));
f33 = MUL_F(f31, FRAC_CONST(-0.9238795325112866));
f34 = MUL_F(f26, FRAC_CONST(-0.5411961001461967));
y[12] = f32 + f33;
y[4] = f34 - f33;
f37 = f16 + f22;
f38 = MUL_C(f16, COEF_CONST(1.1758756024193588));
f39 = MUL_F(f37, FRAC_CONST(-0.9807852804032304));
f40 = MUL_F(f22, FRAC_CONST(-0.7856949583871021));
f41 = f38 + f39;
f42 = f40 - f39;
f43 = f18 + f20;
f44 = MUL_C(f18, COEF_CONST(1.3870398453221473));
f45 = MUL_F(f43, FRAC_CONST(-0.8314696123025455));
f46 = MUL_F(f20, FRAC_CONST(-0.2758993792829436));
f47 = f44 + f45;
f48 = f46 - f45;
f49 = f42 - f48;
y[2] = f42 + f48;
f51 = MUL_F(f49, FRAC_CONST(0.7071067811865476));
y[14] = f41 - f47;
f53 = f41 + f47;
f54 = MUL_F(f53, FRAC_CONST(0.7071067811865476));
y[10] = f51 - f54;
y[6] = f51 + f54;
f57 = f2 - f4;
f58 = f2 + f4;
f59 = f6 - f8;
f60 = f6 + f8;
f61 = f10 - f12;
f62 = f10 + f12;
f63 = MUL_F(f60, FRAC_CONST(0.7071067811865476));
f64 = f0 - f63;
f65 = f0 + f63;
f66 = f58 + f62;
f67 = MUL_C(f58, COEF_CONST(1.3065629648763766));
f68 = MUL_F(f66, FRAC_CONST(-0.9238795325112866));
f69 = MUL_F(f62, FRAC_CONST(-0.5411961001461967));
f70 = f67 + f68;
f71 = f69 - f68;
f72 = f65 - f71;
f73 = f65 + f71;
f74 = f64 - f70;
f75 = f64 + f70;
f76 = MUL_F(f59, FRAC_CONST(0.7071067811865476));
f77 = f14 - f76;
f78 = f14 + f76;
f79 = f61 + f57;
f80 = MUL_C(f61, COEF_CONST(1.3065629648763766));
f81 = MUL_F(f79, FRAC_CONST(-0.9238795325112866));
f82 = MUL_F(f57, FRAC_CONST(-0.5411961001461967));
f83 = f80 + f81;
f84 = f82 - f81;
f85 = f78 - f84;
f86 = f78 + f84;
f87 = f77 - f83;
f88 = f77 + f83;
f89 = f86 + f73;
f90 = MUL_F(f86, FRAC_CONST(-0.8971675863426361));
f91 = MUL_F(f89, FRAC_CONST(0.9951847266721968));
f92 = MUL_C(f73, COEF_CONST(1.0932018670017576));
y[1] = f90 + f91;
y[15] = f92 - f91;
f95 = f75 - f88;
f96 = MUL_F(f88, FRAC_CONST(-0.6666556584777466));
f97 = MUL_F(f95, FRAC_CONST(0.9569403357322089));
f98 = MUL_C(f75, COEF_CONST(1.2472250129866713));
y[3] = f97 - f96;
y[13] = f98 - f97;
f101 = f87 + f74;
f102 = MUL_F(f87, FRAC_CONST(-0.4105245275223571));
f103 = MUL_F(f101, FRAC_CONST(0.8819212643483549));
f104 = MUL_C(f74, COEF_CONST(1.3533180011743529));
y[5] = f102 + f103;
y[11] = f104 - f103;
f107 = f72 - f85;
f108 = MUL_F(f85, FRAC_CONST(-0.1386171691990915));
f109 = MUL_F(f107, FRAC_CONST(0.7730104533627370));
f110 = MUL_C(f72, COEF_CONST(1.4074037375263826));
y[7] = f109 - f108;
y[9] = f110 - f109;
}
void DCT4_16(real_t *y, real_t *x)
{
real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
real_t f121, f122, f123, f124, f125, f126, f127, f128, f130, f132;
real_t f134, f136, f138, f140, f142, f144, f145, f148, f149, f152;
real_t f153, f156, f157;
f0 = x[0] + x[15];
f1 = MUL_C(COEF_CONST(1.0478631305325901), x[0]);
f2 = MUL_F(FRAC_CONST(-0.9987954562051724), f0);
f3 = MUL_F(FRAC_CONST(-0.9497277818777548), x[15]);
f4 = f1 + f2;
f5 = f3 - f2;
f6 = x[2] + x[13];
f7 = MUL_C(COEF_CONST(1.2130114330978077), x[2]);
f8 = MUL_F(FRAC_CONST(-0.9700312531945440), f6);
f9 = MUL_F(FRAC_CONST(-0.7270510732912803), x[13]);
f10 = f7 + f8;
f11 = f9 - f8;
f12 = x[4] + x[11];
f13 = MUL_C(COEF_CONST(1.3315443865537255), x[4]);
f14 = MUL_F(FRAC_CONST(-0.9039892931234433), f12);
f15 = MUL_F(FRAC_CONST(-0.4764341996931612), x[11]);
f16 = f13 + f14;
f17 = f15 - f14;
f18 = x[6] + x[9];
f19 = MUL_C(COEF_CONST(1.3989068359730781), x[6]);
f20 = MUL_F(FRAC_CONST(-0.8032075314806453), f18);
f21 = MUL_F(FRAC_CONST(-0.2075082269882124), x[9]);
f22 = f19 + f20;
f23 = f21 - f20;
f24 = x[8] + x[7];
f25 = MUL_C(COEF_CONST(1.4125100802019777), x[8]);
f26 = MUL_F(FRAC_CONST(-0.6715589548470187), f24);
f27 = MUL_F(FRAC_CONST(0.0693921705079402), x[7]);
f28 = f25 + f26;
f29 = f27 - f26;
f30 = x[10] + x[5];
f31 = MUL_C(COEF_CONST(1.3718313541934939), x[10]);
f32 = MUL_F(FRAC_CONST(-0.5141027441932219), f30);
f33 = MUL_F(FRAC_CONST(0.3436258658070501), x[5]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -