亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fastimdct.c

?? VC寫的MP3解碼源碼和Layer3編碼源碼
?? C
字號:
#include "mp3dec.h"

/* An Inverse Modified Discrete Cosinus Transform is applied to 18 values
   at a time. The 18 frequency values generate 36 time domain values, 
   where half of these are overlapped with half of the previously generated
   values to produce 18 output values. These can later be fed into the
   subband synthesis.

   The multiply-add loop here is very time critical. It uses a total of
   684*32=21888 MAC operations per imdct, 4 times per frame. With 38
   frames per second, thats 3.33 million MAC's.

   Using some small trigonometric tricks, we can do this in 360*32*4*38=
   1.75 million MAC's per second instead.

*/

extern mpfloat Granule_imdct_previous[2][576];  /* used for overlapping */
extern mpfloat Granule_9x9_idct[72];
extern mpfloat Granule_imdct_win[4][36];

mpfloat Granule_twiddles_short[23] = {
    0.866025403f, 0.5f,
    1.931851653f, 0.707106781f, 0.517638090f,

    0.504314480f, 0.541196100f, 0.630236207f,
    0.821339815f, 1.306562965f, 3.830648788f,
    0.793353340f, 0.608761429f, 0.923879532f,
    0.382683432f, 0.991444861f, 0.130526192f, 
    0.382683432f, 0.608761429f, 0.793353340f,
    0.923879532f, 0.991444861f, 0.130526192f
};

mpfloat Granule_twiddles_normal[] = {
    5.736856623f, 1.931851653f, 1.183100792f,
    0.871723397f, 0.707106781f, 0.610387294f, 
    0.551688959f, 0.517638090f, 0.501909918f,

    -0.500476342f, -0.504314480f, -0.512139757f,
    -0.524264562f, -0.541196100f, -0.563690973f, 
    -0.592844523f, -0.630236207f, -0.678170852f, 
    -0.740093616f, -0.821339815f, -0.930579498f,
    -1.082840285f, -1.306562965f, -1.662754762f, 
    -2.310113158f, -3.830648788f, -11.46279281f
};

void
Granule_imdct(Granule *gr, int ch, Granule_floatfreqs X)
{
    int sb, i, j, k, l, window;
    mpfloat save, sum, sum2, pp1;
    mpfloat s;
    mpfloat x[36], t[18];
    mpfloat *v, *prev, *z, *twid;

    prev = Granule_imdct_previous[ch];

    /* process each subband */

    for(sb = 0; sb < NUM_SUBBANDS; sb++) {

	for(i = 0; i < 36; i++)
	    x[i] = (mpfloat)0.0f;
	
	/* decode the block_type - it's in block_type, but we have to think
	   about the mixed blocks lower 2 subbands */
	
	if(gr->block_type == BLOCKTYPE_3WIN &&
	   !(gr->window_switching_flag && 
	     gr->mixed_block_flag && sb < 2)) {

	    /* process the 3 windows separately, each window has 12 values */

	    for(window = 0; window < 3; window++) {

#ifdef LEE_IMDCT
		/* 30*3=90 adds, 25*3=75 muls */

		X[15+window] += X[12+window];
		X[12+window] += X[9+window];
		X[9+window] += X[6+window];
		X[6+window] += X[3+window];
		X[3+window] += X[window];

		X[15+window] += X[9+window];
		X[9+window] += X[3+window];

		twid = Granule_twiddles_short;

		/* do a 3x3 IDCT on the even part */

		pp1 = X[6+window] * twid[0];
		sum = X[window] + X[12+window] * twid[1];
		t[1] = X[window] - X[12+window];
		t[0] = sum + pp1;
		t[2] = sum - pp1;

		/* 3x3 IDCT for odd part */

		pp1 = X[9+window] * twid[0];
		sum = X[3+window] + X[15+window] * twid[1];
		t[4] = X[3+window] - X[15+window];
		t[5] = sum + pp1;
		t[3] = sum - pp1;

		/* scale the odd part */

		t[3] *= twid[2];
		t[4] *= twid[3];
		t[5] *= twid[4];

		save = t[0];
		t[0] += t[5];
		t[5] = save - t[5];

		save = t[1];
		t[1] += t[4];
		t[4] = save - t[4];

		save = t[2];
		t[2] += t[3];
		t[3] = save - t[3];

		t[0]  *= twid[5];
		t[1]  *= twid[6];
		t[2]  *= twid[7];
		t[3]  *= twid[8];
		t[4]  *= twid[9];
		t[5]  *= twid[10];

		t[6]  = -t[2] * twid[15];
		t[7]  = -t[1] * twid[13];
		t[8]  = -t[0] * twid[11];
		t[9]  = -t[0] * twid[12];
		t[10] = -t[1] * twid[14];
		t[11] = -t[2] * twid[16];
		
		t[0]  =  t[3];
		t[1]  =  t[4] * twid[17];
		t[2]  =  t[5] * twid[18];
		
		t[3]  = -t[5] * twid[19];
		t[4]  = -t[4] * twid[20];
		t[5]  = -t[0] * twid[21];
		
		t[0] *= twid[22];

		z = &x[window * 6 + 6];
		z[0]  += t[0];
		z[1]  += t[1];
		z[2]  += t[2];
		z[3]  += t[3];
		z[4]  += t[4];
		z[5]  += t[5];
		z[6]  += t[6];
		z[7]  += t[7];
		z[8]  += t[8];
		z[9]  += t[9];
		z[10]  += t[10];
		z[11]  += t[11];

#else
		/* uses 3*6*6+3*12=144 MAC's */
		v = Granule_imdct_bigCOS2;
		for(i = 0; i < 6; i++) {
		    s = X[window] * *(v++); 
		    s += X[window + 3] * *(v++);
		    s += X[window + 6] * *(v++);
		    s += X[window + 9] * *(v++);
		    s += X[window + 12] * *(v++);
		    s += X[window + 15] * *(v++);
		    ISCALE(s);
		    t[i] = s;
		}

		/* periodic expansion */
		z = &x[window * 6 + 6];
		z[0] -= t[3] * Granule_imdct_win[2][0];
		z[1] -= t[4] * Granule_imdct_win[2][1];
		z[2] -= t[5] * Granule_imdct_win[2][2];
		z[3] += t[5] * Granule_imdct_win[2][3];
		z[4] += t[4] * Granule_imdct_win[2][4];
		z[5] += t[3] * Granule_imdct_win[2][5];
		z[6] += t[2] * Granule_imdct_win[2][6];
		z[7] += t[1] * Granule_imdct_win[2][7];
		z[8] += t[0] * Granule_imdct_win[2][8];
		z[9] += t[0] * Granule_imdct_win[2][9];
		z[10] += t[1] * Granule_imdct_win[2][10];
		z[11] += t[2] * Granule_imdct_win[2][11];
#endif
	    }

#ifdef INT_MATH
	    for(i = 0; i < 36; i++)
		ISCALE(x[i]);
#endif

	} else {

#ifdef LEE_IMDCT
	    
	    /* uses 207 muls, 189 adds */
		 
	    X[17] += X[16];
	    X[16] += X[15];
	    X[15] += X[14];
	    X[14] += X[13];
	    X[13] += X[12];
	    X[12] += X[11];
	    X[11] += X[10];
	    X[10] += X[9];
	    X[9] += X[8];
	    X[8] += X[7];
	    X[7] += X[6];
	    X[6] += X[5];
	    X[5] += X[4];
	    X[4] += X[3];
	    X[3] += X[2];
	    X[2] += X[1];
	    X[1] += X[0];

	    X[17] += X[15];
	    X[15] += X[13];
	    X[13] += X[11];
	    X[11] += X[9];
	    X[9] += X[7];
	    X[7] += X[5];
	    X[5] += X[3];
	    X[3] += X[1];

	    for(i = 0, j = 0; i < 9; i++, j += 8) {
#ifdef USE_INLINE_ASM
__asm {
	mov eax, X
	mov ecx, j
	lea ebx, [Granule_9x9_idct + ecx*4]
	fld dword ptr [eax]
	fld dword ptr [eax + 4]

	fld dword ptr [ebx]
	fld st(0)
	fmul dword ptr [eax + 8]
	faddp st(3), st
	fmul dword ptr [eax + 12]
	faddp st(1), st

	fld dword ptr [ebx + 4]
	fld st(0)
	fmul dword ptr [eax + 16]
	faddp st(3), st
	fmul dword ptr [eax + 20]
	faddp st(1), st

	fld dword ptr [ebx + 8]
	fld st(0)
	fmul dword ptr [eax + 24]
	faddp st(3), st
	fmul dword ptr [eax + 28]
	faddp st(1), st

	fld dword ptr [ebx + 12]
	fld st(0)
	fmul dword ptr [eax + 32]
	faddp st(3), st
	fmul dword ptr [eax + 36]
	faddp st(1), st

	fld dword ptr [ebx + 16]
	fld st(0)
	fmul dword ptr [eax + 40]
	faddp st(3), st
	fmul dword ptr [eax + 44]
	faddp st(1), st

	fld dword ptr [ebx + 20]
	fld st(0)
	fmul dword ptr [eax + 48]
	faddp st(3), st
	fmul dword ptr [eax + 52]
	faddp st(1), st

	fld dword ptr [ebx + 24]
	fld st(0)
	fmul dword ptr [eax + 56]
	faddp st(3), st
	fmul dword ptr [eax + 60]
	faddp st(1), st

	fld dword ptr [ebx + 28]
	fld st(0)
	fmul dword ptr [eax + 64]
	faddp st(3), st
	fmul dword ptr [eax + 68]
	faddp st(1), st

	fstp dword ptr [sum2]
	fstp dword ptr [sum]
}
#else
                        sum = X[0];
			sum2 = X[1];
			for(l = 0, k = 0; l < 16; l += 2, k++) {
			    s = Granule_9x9_idct[j+k];
			    sum += X[2+l] * s;
			    sum2 += X[3+l] * s;
			}
#endif
			t[i] = sum;
			t[17-i] = sum2;
	    }

	    twid = Granule_twiddles_normal;
	    
	    for(i = 0; i < 9; i++)
		t[9+i] *= twid[i];

	    for(i = 0; i < 9; i++) {
		save = t[i];
		t[i] += t[17-i];
		t[17-i] = save - t[17-i];
	    }

	    for(i = 0; i < 18; i++)
		t[i] *= twid[9+i];

#else
	    /* this loop uses 19*36=684 MAC operations */

	    /* do a 18x18 IMDCT */
	    /* 324 muls and 324 adds */

	    v = Granule_imdct_bigCOS;
	    for(i = 0; i < 18; i++) {
		s = (mpfloat)0.0f;
		k = 0;
		do {
		    s += X[k] * v[k];
		    s += X[k+1] * v[k+1];
		    s += X[k+2] * v[k+2];
		    s += X[k+3] * v[k+3];
		    s += X[k+4] * v[k+4];
		    s += X[k+5] * v[k+5];
		    k += 6;
		} while(k < 18);
		v += 18;
		ISCALE(s);
		t[i] = s;
	    }
#endif
	    /* correct the transform into the 18x36 IMDCT we need */
	    /* 36 muls */

	    for(i = 0; i < 9; i++) {
		x[i] = t[i+9] * Granule_imdct_win[gr->block_type][i];
		ISCALE(x[i]);
		x[i+9] = t[17-i] * Granule_imdct_win[gr->block_type][i+9];
		ISCALE(x[i+9]);
		x[i+18] = t[8-i] * Granule_imdct_win[gr->block_type][i+18];
		ISCALE(x[i+18]);
		x[i+27] = t[i] * Granule_imdct_win[gr->block_type][i+27];
		ISCALE(x[i+27]);
	    }

	}
	
	/* Overlap and add with previous block -
	   The first half of the 36 values is overlapped with the second half
	   of the previous block. The second half of the actual block is stored
	   to be used in the next block.
	   */
	
	for(i = 0; i < 18; i++) {
	    *(X++) = x[i] + *prev;  /* produce an output value */
	    *(prev++) = x[i+18]; 
	}
    }	
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区不卡| 国产精品一区二区你懂的| 免费不卡在线视频| 福利视频网站一区二区三区| 884aa四虎影成人精品一区| 中文字幕不卡三区| 蜜桃av一区二区三区| 99在线精品免费| 久久免费看少妇高潮| 天天亚洲美女在线视频| 99精品久久久久久| 久久免费午夜影院| 免费观看日韩电影| 欧美视频日韩视频| ●精品国产综合乱码久久久久| 蜜桃一区二区三区四区| 欧美日免费三级在线| **网站欧美大片在线观看| 国产一区美女在线| 久久久亚洲精品石原莉奈| 日本女人一区二区三区| 欧美性生交片4| 亚洲人成精品久久久久| 懂色av一区二区夜夜嗨| 久久精品一区四区| 久久99精品久久久久久| 欧美一区二区三区在| 亚洲国产美女搞黄色| 一本高清dvd不卡在线观看 | 18欧美亚洲精品| 国产一区在线观看视频| 久久亚洲精华国产精华液| 伦理电影国产精品| 日韩一区二区三| 日本不卡1234视频| 欧美电影在哪看比较好| 日韩国产欧美在线观看| 91精品国产丝袜白色高跟鞋| 五月激情综合网| 欧美一区二区三区日韩视频| 日本不卡高清视频| 日韩欧美国产综合一区| 激情综合网av| 欧美激情一区二区在线| 成人手机在线视频| 国产精品素人一区二区| 99精品热视频| 亚洲最快最全在线视频| 久久五月婷婷丁香社区| 国产一区二区在线看| 国产三级欧美三级| jlzzjlzz亚洲女人18| 一区二区三区中文免费| 欧美三级午夜理伦三级中视频| 天堂在线一区二区| 精品国产麻豆免费人成网站| 国产福利91精品| 亚洲精品欧美综合四区| 91精品国产综合久久精品app | 色域天天综合网| 亚洲超碰精品一区二区| 日韩欧美色综合网站| 国产成人免费av在线| 亚洲精品成人精品456| 欧美肥胖老妇做爰| 国产精品1区二区.| 亚洲欧美区自拍先锋| 91精品午夜视频| 国产精品456露脸| 亚洲成a人在线观看| 久久久久久夜精品精品免费| 91丨国产丨九色丨pron| 五月婷婷激情综合| 国产网红主播福利一区二区| 欧美亚洲免费在线一区| 激情综合网av| 亚洲国产毛片aaaaa无费看| 精品国产麻豆免费人成网站| 日韩一区二区影院| 国产精品自拍网站| 亚洲18女电影在线观看| 久久久久久黄色| 欧美精品日韩综合在线| 成人在线视频一区二区| 天天av天天翘天天综合网色鬼国产 | 一区二区国产盗摄色噜噜| 欧美成人高清电影在线| 99精品欧美一区二区三区综合在线| 捆绑变态av一区二区三区| 亚洲精品中文在线观看| 久久午夜色播影院免费高清 | 亚洲图片自拍偷拍| 国产欧美日本一区二区三区| 91精品在线麻豆| 日本韩国欧美在线| 国产成人自拍高清视频在线免费播放| 亚洲国产成人91porn| 国产精品理伦片| 国产校园另类小说区| 日韩欧美一级片| 91精品国产一区二区三区蜜臀 | 东方aⅴ免费观看久久av| 日韩高清电影一区| 亚洲一区二区三区在线看| 亚洲欧洲精品一区二区精品久久久| 亚洲精品在线免费观看视频| 欧美一区二区在线播放| 欧美日韩免费在线视频| 在线一区二区三区四区五区| 97久久精品人人澡人人爽| 国产成a人亚洲精| 国产成人av一区二区三区在线观看| 日韩av一区二区在线影视| 一区二区三区四区视频精品免费| 中文字幕一区免费在线观看| 欧美高清一级片在线观看| 国产婷婷精品av在线| 久久久久亚洲蜜桃| 久久精品人人爽人人爽| 国产婷婷精品av在线| 国产视频911| 成人欧美一区二区三区| 日韩av一区二区三区四区| 免费成人在线观看视频| 麻豆精品久久久| 韩国av一区二区三区在线观看| 久久99国产精品成人| 国产一区二区三区四区五区入口| 久久不见久久见免费视频1| 狠狠狠色丁香婷婷综合激情| 国产尤物一区二区| 成人一级片网址| 91视频观看免费| 欧美日韩久久久| 日韩精品一区二区三区视频在线观看 | 亚洲品质自拍视频网站| 亚洲制服丝袜一区| 午夜电影网一区| 毛片基地黄久久久久久天堂| 国产精品一区二区在线看| 成人午夜免费电影| 在线亚洲+欧美+日本专区| 8x8x8国产精品| 国产丝袜欧美中文另类| 成人免费在线视频观看| 亚洲成人激情自拍| 加勒比av一区二区| jvid福利写真一区二区三区| 337p亚洲精品色噜噜噜| 久久人人97超碰com| 亚洲日本乱码在线观看| 日韩精品免费视频人成| 岛国精品在线播放| 在线观看视频一区二区欧美日韩| 制服.丝袜.亚洲.另类.中文| 国产精品乱人伦| 成人午夜激情视频| 91福利社在线观看| 日韩三级免费观看| 中文字幕视频一区二区三区久| 五月天激情小说综合| 成人综合婷婷国产精品久久蜜臀| 欧美高清精品3d| 国产精品不卡在线| 麻豆成人在线观看| 色天使色偷偷av一区二区| 精品国产一区二区亚洲人成毛片| 亚洲欧美电影院| 国产综合色在线| 欧美久久久久久蜜桃| 国产精品久久久久久久久果冻传媒| 日韩成人精品在线| 色哟哟欧美精品| 国产午夜精品一区二区三区视频 | 欧美日韩高清在线| 国产精品激情偷乱一区二区∴| 美洲天堂一区二卡三卡四卡视频 | 91精品在线一区二区| 亚洲丝袜另类动漫二区| 国内精品国产成人| 91精品国产麻豆| 亚洲一区免费在线观看| 不卡高清视频专区| 久久综合成人精品亚洲另类欧美| 天天影视网天天综合色在线播放 | www.亚洲色图| 国产丝袜美腿一区二区三区| 激情文学综合插| 日韩一区二区在线观看视频| 亚洲高清视频的网址| 91麻豆成人久久精品二区三区| 欧美国产亚洲另类动漫| 国产精品影音先锋| 日韩精品一区二区三区在线 | 国产精品亲子伦对白| 韩国欧美国产一区| 日韩欧美久久一区| 免费精品视频最新在线| 777奇米成人网| 日本不卡一区二区三区 |