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

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

?? fastimdct.c

?? arm7制作的MP3(軟解碼部分)
?? 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一区二区三区免费野_久草精品视频
欧美日本韩国一区二区三区视频 | 色噜噜狠狠色综合中国| 黄一区二区三区| 美女视频黄免费的久久| 日韩黄色一级片| 日本色综合中文字幕| 日韩avvvv在线播放| 另类综合日韩欧美亚洲| 九九视频精品免费| 国产精品 欧美精品| 粉嫩av一区二区三区| www.欧美日韩国产在线| 色一区在线观看| 欧美顶级少妇做爰| 日韩亚洲欧美中文三级| 久久亚洲精精品中文字幕早川悠里| 精品国产乱码久久久久久夜甘婷婷| 日韩午夜电影av| 国产亚洲欧洲997久久综合| 亚洲国产电影在线观看| 成人免费在线视频观看| 亚洲国产精品久久人人爱蜜臀| 舔着乳尖日韩一区| 国产精品18久久久久久久久| 91在线国产福利| 欧美男生操女生| 国产欧美一区二区精品性| 亚洲人成在线观看一区二区| 日韩二区三区四区| 国产91精品免费| 91福利在线播放| 久久蜜桃av一区二区天堂| 亚洲男人的天堂一区二区 | 亚洲一区二区三区免费视频| 久久精品国产亚洲aⅴ| 99国产精品久久久久| 欧美日韩日日骚| 国产精品热久久久久夜色精品三区| 一区二区三区在线观看国产| 国产麻豆视频精品| 99热这里都是精品| 91精品黄色片免费大全| 亚洲特黄一级片| 国产综合久久久久久久久久久久| 日本高清无吗v一区| 久久精品人人爽人人爽| 日本不卡高清视频| 欧美色图激情小说| 亚洲蜜臀av乱码久久精品| 精品一区二区三区在线观看国产| 在线免费av一区| 国产精品久久夜| 国产乱码一区二区三区| 日韩欧美在线一区二区三区| 亚洲乱码国产乱码精品精的特点| 国产精品自拍毛片| 欧美一级专区免费大片| 图片区小说区区亚洲影院| 91丝袜美腿高跟国产极品老师| 久久先锋影音av鲁色资源网| 青青草精品视频| 欧美日韩视频专区在线播放| 亚洲与欧洲av电影| 97久久精品人人做人人爽50路| 久久久www成人免费毛片麻豆| 热久久一区二区| 欧美一区二区日韩一区二区| 亚洲大片一区二区三区| 欧美综合亚洲图片综合区| 亚洲欧美日韩精品久久久久| 91最新地址在线播放| 亚洲欧美在线观看| 91女厕偷拍女厕偷拍高清| 国产精品成人一区二区艾草 | 久久99精品国产.久久久久| 欧美一区二区在线免费观看| 婷婷一区二区三区| 日韩美女在线视频| 国产真实乱对白精彩久久| 亚洲精品一区二区三区蜜桃下载 | 精品亚洲aⅴ乱码一区二区三区| 91精品一区二区三区在线观看| 性做久久久久久久久| 91精品国产综合久久福利| 奇米色一区二区三区四区| 欧美大白屁股肥臀xxxxxx| 精品在线免费观看| 久久精品人人爽人人爽| 99在线热播精品免费| 亚洲影院久久精品| 精品蜜桃在线看| 成人听书哪个软件好| 日韩一区日韩二区| 欧美日韩一卡二卡三卡| 免费日本视频一区| 中文字幕在线播放不卡一区| 欧美色图激情小说| 国产真实乱偷精品视频免| 一区在线观看免费| 欧美一区二区三区免费视频| 国产精品一级黄| 夜色激情一区二区| 精品国产百合女同互慰| 成人永久aaa| 日韩激情视频网站| 国产精品国产三级国产aⅴ中文| 在线观看一区日韩| 国内精品免费在线观看| 一区二区三区高清不卡| 久久亚洲一级片| 欧美日韩一区中文字幕| 国产.欧美.日韩| 五月综合激情婷婷六月色窝| 国产视频一区不卡| 在线成人小视频| fc2成人免费人成在线观看播放| 日韩一区欧美二区| 综合久久综合久久| 久久婷婷成人综合色| 色8久久精品久久久久久蜜| 久久99蜜桃精品| 午夜精彩视频在线观看不卡| 国产精品久久久久久久久久免费看| 欧美日韩mp4| 色94色欧美sute亚洲13| 成人国产亚洲欧美成人综合网| 青草国产精品久久久久久| 依依成人精品视频| 国产精品国产三级国产aⅴ入口| 日韩欧美久久久| 91精品国产免费久久综合| 色婷婷激情综合| 成人国产精品免费观看视频| 久久91精品国产91久久小草| 曰韩精品一区二区| 日韩毛片视频在线看| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美无人高清视频在线观看| gogo大胆日本视频一区| 高清国产午夜精品久久久久久| 美国毛片一区二区| 喷白浆一区二区| 丝袜美腿一区二区三区| 性做久久久久久久久| 污片在线观看一区二区| 亚洲国产一区在线观看| 一区二区三区四区蜜桃| 一区二区三区在线影院| 《视频一区视频二区| 国产精品美女一区二区三区| 久久精品视频免费| 国产婷婷色一区二区三区四区| 欧美精品一区二区在线播放| 欧美精品一区二区三| 日韩精品一区二区三区在线播放| 91精品国产福利在线观看 | 国产成+人+日韩+欧美+亚洲| 久久黄色级2电影| 久久99精品久久久| 国产一区二区三区不卡在线观看| 国产在线观看一区二区| 国产成人小视频| 成人av免费观看| 色婷婷久久久综合中文字幕| 欧美视频你懂的| 91麻豆精品国产91久久久久久久久| 欧美高清性hdvideosex| 精品国产一区二区在线观看| 久久综合色播五月| 国产精品区一区二区三区| 亚洲欧美电影一区二区| 日韩精品免费视频人成| 紧缚奴在线一区二区三区| 国产高清亚洲一区| 91久久线看在观草草青青| 欧美日韩精品欧美日韩精品一| 日韩情涩欧美日韩视频| 中文字幕+乱码+中文字幕一区| 亚洲少妇中出一区| 奇米亚洲午夜久久精品| 成人ar影院免费观看视频| 色婷婷综合久久久中文字幕| 日韩欧美一二三| 亚洲免费在线观看| 美女网站色91| 色老汉av一区二区三区| 日韩欧美国产一二三区| 亚洲视频一二三区| 日本欧美加勒比视频| 99re成人在线| 日韩视频一区二区在线观看| 欧美韩国一区二区| 免费成人结看片| 日本高清不卡一区| 久久久久久久久久久99999| 亚洲国产精品天堂| 91丨国产丨九色丨pron| 精品处破学生在线二十三| 亚洲资源中文字幕| av不卡在线播放|