sbr_dct.c
来自「这是著名的TCPMP播放器在WINDWOWS,和WINCE下编译通过的源程序.笔」· C语言 代码 · 共 1,786 行 · 第 1/5 页
C
1,786 行
f279 = f199 + f235;
f280 = f201 - f240;
f281 = f201 + f240;
f282 = f203 - f241;
f283 = f203 + f241;
f284 = f205 - f246;
f285 = f205 + f246;
f286 = f207 - f247;
f287 = f207 + f247;
f288 = f192 - f252;
f289 = f192 + f252;
f290 = f194 - f253;
f291 = f194 + f253;
f292 = f196 - f258;
f293 = f196 + f258;
f294 = f198 - f259;
f295 = f198 + f259;
f296 = f200 - f264;
f297 = f200 + f264;
f298 = f202 - f265;
f299 = f202 + f265;
f300 = f204 - f270;
f301 = f204 + f270;
f302 = f206 - f271;
f303 = f206 + f271;
f304 = f275 + f273;
f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
y[0] = f305 + f306;
y[31] = f307 - f306;
f310 = f279 + f277;
f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
y[2] = f311 + f312;
y[29] = f313 - f312;
f316 = f283 + f281;
f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
y[4] = f317 + f318;
y[27] = f319 - f318;
f322 = f287 + f285;
f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
y[6] = f323 + f324;
y[25] = f325 - f324;
f328 = f291 + f289;
f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
y[8] = f329 + f330;
y[23] = f331 - f330;
f334 = f295 + f293;
f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
y[10] = f335 + f336;
y[21] = f337 - f336;
f340 = f299 + f297;
f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
y[12] = f341 + f342;
y[19] = f343 - f342;
f346 = f303 + f301;
f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
y[14] = f347 + f348;
y[17] = f349 - f348;
f352 = f274 + f272;
f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
y[16] = f353 + f354;
y[15] = f355 - f354;
f358 = f278 + f276;
f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
y[18] = f359 + f360;
y[13] = f361 - f360;
f364 = f282 + f280;
f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
y[20] = f365 + f366;
y[11] = f367 - f366;
f370 = f286 + f284;
f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
y[22] = f371 + f372;
y[9] = f373 - f372;
f376 = f290 + f288;
f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
y[24] = f377 + f378;
y[7] = f379 - f378;
f382 = f294 + f292;
f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
y[26] = f383 + f384;
y[5] = f385 - f384;
f388 = f298 + f296;
f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
y[28] = f389 + f390;
y[3] = f391 - f390;
f394 = f302 + f300;
f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
y[30] = f395 + f396;
y[1] = f397 - f396;
}
#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]);
f34 = f31 + f32;
f35 = f33 - f32;
f36 = x[12] + x[3];
f37 = MUL_C(COEF_CONST(1.2784339185752409), x[12]);
f38 = MUL_F(FRAC_CONST(-0.3368898533922200), f36);
f39 = MUL_F(FRAC_CONST(0.6046542117908008), x[3]);
f40 = f37 + f38;
f41 = f39 - f38;
f42 = x[14] + x[1];
f43 = MUL_C(COEF_CONST(1.1359069844201433), x[14]);
f44 = MUL_F(FRAC_CONST(-0.1467304744553624), f42);
f45 = MUL_F(FRAC_CONST(0.8424460355094185), x[1]);
f46 = f43 + f44;
f47 = f45 - f44;
f48 = f5 - f29;
f49 = f5 + f29;
f50 = f4 - f28;
f51 = f4 + f28;
f52 = f11 - f35;
f53 = f11 + f35;
f54 = f10 - f34;
f55 = f10 + f34;
f56 = f17 - f41;
f57 = f17 + f41;
f58 = f16 - f40;
f59 = f16 + f40;
f60 = f23 - f47;
f61 = f23 + f47;
f62 = f22 - f46;
f63 = f22 + f46;
f64 = f48 + f50;
f65 = MUL_C(COEF_CONST(1.1758756024193588), f48);
f66 = MUL_F(FRAC_CONST(-0.9807852804032304), f64);
f67 = MUL_F(FRAC_CONST(-0.7856949583871021), f50);
f68 = f65 + f66;
f69 = f67 - f66;
f70 = f52 + f54;
f71 = MUL_C(COEF_CONST(1.3870398453221475), f52);
f72 = MUL_F(FRAC_CONST(-0.5555702330196022), f70);
f73 = MUL_F(FRAC_CONST(0.2758993792829431), f54);
f74 = f71 + f72;
f75 = f73 - f72;
f76 = f56 + f58;
f77 = MUL_F(FRAC_CONST(0.7856949583871022), f56);
f78 = MUL_F(FRAC_CONST(0.1950903220161283), f76);
f79 = MUL_C(COEF_CONST(1.1758756024193586), f58);
f80 = f77 + f78;
f81 = f79 - f78;
f82 = f60 + f62;
f83 = MUL_F(FRAC_CONST(-0.2758993792829430), f60);
f84 = MUL_F(FRAC_CONST(0.8314696123025452), f82);
f85 = MUL_C(COEF_CONST(1.3870398453221475), f62);
f86 = f83 + f84;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?