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

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

?? fastimdct.c

?? MP3方面的一些C語言源程序.rar
?? 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一区二区三区免费野_久草精品视频
午夜精品久久久久久久 | 亚洲一卡二卡三卡四卡无卡久久| 国产乱理伦片在线观看夜一区| 欧美xxxxxxxxx| 国产一区二区女| 国产精品超碰97尤物18| 成人国产精品免费网站| 曰韩精品一区二区| 7777精品伊人久久久大香线蕉 | 91精品办公室少妇高潮对白| 亚洲午夜三级在线| 91精品黄色片免费大全| 激情av综合网| 一区二区中文字幕在线| 日本道在线观看一区二区| 亚洲电影一级片| 欧美精品一区二区三区蜜桃| 99久久99久久精品国产片果冻| 亚洲成人一二三| 久久久亚洲欧洲日产国码αv| 99r国产精品| 麻豆精品一区二区三区| 国产精品视频麻豆| 欧美日本一区二区三区| 国内外精品视频| 一区二区三区日韩欧美精品| 日韩三级.com| eeuss影院一区二区三区| 亚洲va欧美va天堂v国产综合| 久久久99精品免费观看不卡| 91国在线观看| 国产美女娇喘av呻吟久久| 亚洲在线视频网站| 欧美国产精品一区| 91麻豆精品国产91久久久| 成人av在线播放网站| 日韩av电影一区| 亚洲欧美日韩系列| 精品三级在线观看| 欧洲一区二区三区免费视频| 国产sm精品调教视频网站| 午夜精品福利一区二区蜜股av| 国产精品网站在线| 精品久久久影院| 欧美日韩免费在线视频| 蜜臀a∨国产成人精品| 亚洲综合小说图片| 国产欧美综合色| 日韩欧美国产不卡| 欧美日韩久久久| 一本久道中文字幕精品亚洲嫩| 国产不卡在线播放| 麻豆成人免费电影| 五月综合激情婷婷六月色窝| 亚洲欧美电影院| 欧美国产视频在线| 久久免费电影网| 日韩精品最新网址| 欧美久久久久久蜜桃| 欧美性生活一区| 91看片淫黄大片一级在线观看| 国产suv一区二区三区88区| 精品一区二区三区视频在线观看 | 8x8x8国产精品| 欧美性受极品xxxx喷水| 色综合一区二区三区| 99在线视频精品| 99re热视频这里只精品| 国产+成+人+亚洲欧洲自线| 国产精品99久久久久久似苏梦涵 | 久久综合色一综合色88| 日韩欧美专区在线| 日韩一卡二卡三卡| 欧美精品色一区二区三区| 在线观看网站黄不卡| 91美女片黄在线观看91美女| 不卡的av在线| 国产91露脸合集magnet| 国产盗摄视频一区二区三区| 国产成人免费在线观看| 国产成人在线观看| 高清av一区二区| 97aⅴ精品视频一二三区| 色8久久人人97超碰香蕉987| 99久久国产综合色|国产精品| 色综合久久久久久久久久久| 欧美日韩一本到| 欧美精品xxxxbbbb| 欧美一个色资源| 精品黑人一区二区三区久久| 国产午夜精品福利| 国产精品久久久久影视| 亚洲欧美偷拍三级| 亚洲成av人片| 国产综合色视频| 高清不卡在线观看av| 97久久精品人人爽人人爽蜜臀| 在线观看亚洲一区| 日韩视频在线永久播放| xf在线a精品一区二区视频网站| 国产欧美一区二区精品性色| 亚洲欧洲国产日本综合| 亚洲自拍偷拍麻豆| 奇米精品一区二区三区在线观看| 国产一区二区三区电影在线观看| 成人高清伦理免费影院在线观看| 91年精品国产| 日韩色视频在线观看| 国产精品久久三| 亚洲国产成人高清精品| 蜜乳av一区二区三区| 成人黄色小视频| 宅男在线国产精品| 国产精品无人区| 三级亚洲高清视频| 国产激情视频一区二区三区欧美| 一本到一区二区三区| 精品国产乱码久久久久久影片| 国产精品国产精品国产专区不蜜| 亚洲成a人片在线不卡一二三区| 国产一区二区三区四| 色综合天天天天做夜夜夜夜做| 正在播放亚洲一区| 日韩毛片高清在线播放| 另类中文字幕网| 91精品办公室少妇高潮对白| 久久精品一区二区三区不卡| 爽爽淫人综合网网站| 成人自拍视频在线| 日韩一区二区中文字幕| 综合久久久久久| 国产一区二三区好的| 欧美精品1区2区| 亚洲私人黄色宅男| 国产一区二区三区四区在线观看| 欧美日韩不卡一区二区| 中文字幕av在线一区二区三区| 亚洲国产成人高清精品| 成人成人成人在线视频| www国产成人免费观看视频 深夜成人网| 亚洲人成精品久久久久久| 国产一区二区精品久久| 欧美一区二区三区在线| 亚洲激情自拍视频| av不卡免费在线观看| 欧美α欧美αv大片| 五月婷婷欧美视频| 91高清视频在线| 国产精品乱码人人做人人爱 | 91色.com| 国产精品乱码久久久久久| 国产米奇在线777精品观看| 91精品午夜视频| 亚洲香蕉伊在人在线观| 91啪在线观看| 成人欧美一区二区三区黑人麻豆 | 亚洲私人影院在线观看| 波多野结衣中文字幕一区| 久久久国际精品| 国产在线精品视频| 欧美大片拔萝卜| 麻豆精品视频在线| 日韩亚洲欧美一区二区三区| 亚洲aaa精品| 欧美福利一区二区| 亚洲v精品v日韩v欧美v专区| 欧美人与禽zozo性伦| 亚洲福利视频一区| 欧美色视频在线| 亚洲bdsm女犯bdsm网站| 欧美一区二区三区喷汁尤物| 日韩av网站在线观看| 日韩欧美另类在线| 精品一区中文字幕| 欧美电影免费观看高清完整版| 日本色综合中文字幕| 日韩精品一区二区三区在线观看| 麻豆专区一区二区三区四区五区| 欧美一区二区不卡视频| 国产综合久久久久久久久久久久| 日本一区二区综合亚洲| 成人国产精品视频| 一区二区三区中文字幕在线观看| 欧美视频一区二区三区四区| 天天综合网天天综合色| 日韩三级.com| 成人高清av在线| 一区二区三区日本| 欧美日韩激情在线| 美女免费视频一区二区| 国产婷婷色一区二区三区| a美女胸又www黄视频久久| 亚洲免费高清视频在线| 欧美日韩国产123区| 精品一区二区在线观看| 国产精品久久久久久久久搜平片| 在线看国产日韩| 精品在线播放免费| 亚洲日本一区二区| 欧美一区二区三区精品|