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

📄 sbr_dct.c

📁 WINCE mp4 format source
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com
**  
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
** 
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
** 
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software 
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
**
** Any non-GPL usage of this software or parts of this software is strictly
** forbidden.
**
** Software using this code must display the following message visibly in or
** on each copy of the software:
** "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Nero AG, www.nero.com"
** in, for example, the about-box or help/startup screen.
**
** Commercial non-GPL licensing of this software is possible.
** For more info contact Nero AG through Mpeg4AAClicense@nero.com.
**
** $Id: sbr_dct.c,v 1.18 2006/05/26 19:21:35 menno Exp $
**/


/* Most of the DCT/DST codes here are generated using Spiral which is GPL
 * For more info see: http://www.spiral.net/
 */

#include "common.h"

#ifdef SBR_DEC

#ifdef _MSC_VER
#pragma warning(disable:4305)
#pragma warning(disable:4244)
#endif


#include "sbr_dct.h"

void DCT4_32(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, f129, f130;
    real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
    real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
    real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
    real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
    real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
    real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
    real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
    real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
    real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
    real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
    real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
    real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
    real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
    real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
    real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
    real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
    real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
    real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
    real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
    real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
    real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
    real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
    real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
    real_t f389, f390, f391, f394, f395, f396, f397;

    f0 = x[15] - x[16];
    f1 = x[15] + x[16];
    f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
    f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
    f4 = x[8] - x[23];
    f5 = x[8] + x[23];
    f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
    f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
    f8 = x[12] - x[19];
    f9 = x[12] + x[19];
    f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
    f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
    f12 = x[11] - x[20];
    f13 = x[11] + x[20];
    f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
    f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
    f16 = x[14] - x[17];
    f17 = x[14] + x[17];
    f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
    f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
    f20 = x[9] - x[22];
    f21 = x[9] + x[22];
    f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
    f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
    f24 = x[13] - x[18];
    f25 = x[13] + x[18];
    f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
    f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
    f28 = x[10] - x[21];
    f29 = x[10] + x[21];
    f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
    f32 = x[0] - f2;
    f33 = x[0] + f2;
    f34 = x[31] - f3;
    f35 = x[31] + f3;
    f36 = x[7] - f6;
    f37 = x[7] + f6;
    f38 = x[24] - f7;
    f39 = x[24] + f7;
    f40 = x[3] - f10;
    f41 = x[3] + f10;
    f42 = x[28] - f11;
    f43 = x[28] + f11;
    f44 = x[4] - f14;
    f45 = x[4] + f14;
    f46 = x[27] - f15;
    f47 = x[27] + f15;
    f48 = x[1] - f18;
    f49 = x[1] + f18;
    f50 = x[30] - f19;
    f51 = x[30] + f19;
    f52 = x[6] - f22;
    f53 = x[6] + f22;
    f54 = x[25] - f23;
    f55 = x[25] + f23;
    f56 = x[2] - f26;
    f57 = x[2] + f26;
    f58 = x[29] - f27;
    f59 = x[29] + f27;
    f60 = x[5] - f30;
    f61 = x[5] + f30;
    f62 = x[26] - f31;
    f63 = x[26] + f31;
    f64 = f39 + f37;
    f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
    f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
    f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
    f68 = f65 + f66;
    f69 = f67 - f66;
    f70 = f38 + f36;
    f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
    f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
    f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
    f74 = f71 + f72;
    f75 = f73 - f72;
    f76 = f47 + f45;
    f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
    f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
    f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
    f80 = f77 + f78;
    f81 = f79 - f78;
    f82 = f46 + f44;
    f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
    f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
    f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
    f86 = f83 + f84;
    f87 = f85 - f84;
    f88 = f55 + f53;
    f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
    f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
    f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
    f92 = f89 + f90;
    f93 = f91 - f90;
    f94 = f54 + f52;
    f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
    f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
    f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
    f98 = f95 + f96;
    f99 = f97 - f96;
    f100 = f63 + f61;
    f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
    f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
    f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
    f104 = f101 + f102;
    f105 = f103 - f102;
    f106 = f62 + f60;
    f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
    f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
    f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
    f110 = f107 + f108;
    f111 = f109 - f108;
    f112 = f33 - f68;
    f113 = f33 + f68;
    f114 = f35 - f69;
    f115 = f35 + f69;
    f116 = f32 - f74;
    f117 = f32 + f74;
    f118 = f34 - f75;
    f119 = f34 + f75;
    f120 = f41 - f80;
    f121 = f41 + f80;
    f122 = f43 - f81;
    f123 = f43 + f81;
    f124 = f40 - f86;
    f125 = f40 + f86;
    f126 = f42 - f87;
    f127 = f42 + f87;
    f128 = f49 - f92;
    f129 = f49 + f92;
    f130 = f51 - f93;
    f131 = f51 + f93;
    f132 = f48 - f98;
    f133 = f48 + f98;
    f134 = f50 - f99;
    f135 = f50 + f99;
    f136 = f57 - f104;
    f137 = f57 + f104;
    f138 = f59 - f105;
    f139 = f59 + f105;
    f140 = f56 - f110;
    f141 = f56 + f110;
    f142 = f58 - f111;
    f143 = f58 + f111;
    f144 = f123 + f121;
    f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
    f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
    f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
    f148 = f145 + f146;
    f149 = f147 - f146;
    f150 = f127 + f125;
    f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
    f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
    f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
    f154 = f151 + f152;
    f155 = f153 - f152;
    f156 = f122 + f120;
    f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
    f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
    f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
    f160 = f157 + f158;
    f161 = f159 - f158;
    f162 = f126 + f124;
    f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
    f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
    f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
    f166 = f163 + f164;
    f167 = f165 - f164;
    f168 = f139 + f137;
    f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
    f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
    f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
    f172 = f169 + f170;
    f173 = f171 - f170;
    f174 = f143 + f141;
    f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
    f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
    f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
    f178 = f175 + f176;
    f179 = f177 - f176;
    f180 = f138 + f136;
    f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
    f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
    f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
    f184 = f181 + f182;
    f185 = f183 - f182;
    f186 = f142 + f140;
    f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
    f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
    f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
    f190 = f187 + f188;
    f191 = f189 - f188;
    f192 = f113 - f148;
    f193 = f113 + f148;
    f194 = f115 - f149;
    f195 = f115 + f149;
    f196 = f117 - f154;
    f197 = f117 + f154;
    f198 = f119 - f155;
    f199 = f119 + f155;
    f200 = f112 - f160;
    f201 = f112 + f160;
    f202 = f114 - f161;
    f203 = f114 + f161;
    f204 = f116 - f166;
    f205 = f116 + f166;
    f206 = f118 - f167;
    f207 = f118 + f167;
    f208 = f129 - f172;
    f209 = f129 + f172;
    f210 = f131 - f173;
    f211 = f131 + f173;
    f212 = f133 - f178;
    f213 = f133 + f178;
    f214 = f135 - f179;
    f215 = f135 + f179;
    f216 = f128 - f184;
    f217 = f128 + f184;
    f218 = f130 - f185;
    f219 = f130 + f185;
    f220 = f132 - f190;
    f221 = f132 + f190;
    f222 = f134 - f191;
    f223 = f134 + f191;
    f224 = f211 + f209;
    f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
    f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
    f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
    f228 = f225 + f226;
    f229 = f227 - f226;
    f230 = f215 + f213;
    f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
    f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
    f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
    f234 = f231 + f232;
    f235 = f233 - f232;
    f236 = f219 + f217;
    f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
    f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
    f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
    f240 = f237 + f238;
    f241 = f239 - f238;
    f242 = f223 + f221;
    f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
    f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
    f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
    f246 = f243 + f244;
    f247 = f245 - f244;
    f248 = f210 + f208;
    f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
    f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
    f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
    f252 = f249 + f250;
    f253 = f251 - f250;
    f254 = f214 + f212;
    f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
    f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
    f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
    f258 = f255 + f256;
    f259 = f257 - f256;
    f260 = f218 + f216;
    f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
    f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
    f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
    f264 = f261 + f262;
    f265 = f263 - f262;
    f266 = f222 + f220;
    f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
    f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
    f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
    f270 = f267 + f268;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -