⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sbr_dct.c

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -