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

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

?? fastimdct.c

?? 基于DSP的MP3音頻編碼源程序、方便TCP網絡傳輸
?? 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一区二区三区免费野_久草精品视频
精品中文字幕一区二区| 在线观看区一区二| 国产精品一区三区| 久99久精品视频免费观看| 久久国产剧场电影| 狠狠狠色丁香婷婷综合久久五月| 狂野欧美性猛交blacked| 免费观看成人av| 日韩亚洲欧美一区二区三区| 3atv一区二区三区| 日韩女优av电影在线观看| 日韩视频永久免费| 精品国产乱码久久久久久闺蜜| 久久综合色一综合色88| 国产亚洲女人久久久久毛片| 国产精品久久久久久久久免费樱桃| 久久久久久一二三区| 欧美激情中文字幕| 自拍av一区二区三区| 亚洲综合久久av| 五月激情丁香一区二区三区| 久久国产乱子精品免费女| 风流少妇一区二区| 91视频在线观看免费| 精品一区二区三区不卡| 国内精品自线一区二区三区视频| 国产乱色国产精品免费视频| 成人黄色777网| 色狠狠色狠狠综合| 日韩亚洲欧美中文三级| 国产亚洲精品bt天堂精选| 亚洲特黄一级片| 视频一区二区国产| 国产精品99久久不卡二区| 99精品视频一区| 在线播放视频一区| 久久久青草青青国产亚洲免观| 国产精品黄色在线观看| 亚洲成人av福利| 国产精品一区二区在线观看不卡| 91色视频在线| 精品奇米国产一区二区三区| 综合中文字幕亚洲| 麻豆高清免费国产一区| 成人av网站免费| 欧美日韩精品三区| 国产欧美精品一区aⅴ影院| 亚洲一区二区三区中文字幕 | 懂色av噜噜一区二区三区av| 欧洲色大大久久| 国产婷婷一区二区| 性感美女久久精品| 丰满放荡岳乱妇91ww| 6080国产精品一区二区| 国产精品剧情在线亚洲| 青青草精品视频| 91蜜桃网址入口| 久久综合色天天久久综合图片| 一区二区三区四区国产精品| 国产一区二区久久| 欧美色网站导航| 亚洲国产精品成人综合色在线婷婷 | 91国偷自产一区二区三区观看| 久久亚洲影视婷婷| 午夜亚洲国产au精品一区二区| 成人在线视频首页| 精品黑人一区二区三区久久| 亚洲一区二区三区在线播放| 不卡av免费在线观看| 国产欧美日韩三区| 奇米精品一区二区三区四区| 色综合久久久久久久久| 国产色产综合色产在线视频| 日精品一区二区三区| 在线精品视频一区二区三四| 国产精品国产三级国产专播品爱网 | 亚洲国产成人午夜在线一区| 久久av资源站| 欧美一级片在线| 夜夜嗨av一区二区三区网页| 99精品视频中文字幕| 国产三级久久久| 国产精品综合网| 亚洲精品一区二区三区四区高清 | 91国偷自产一区二区开放时间| 欧美激情一区三区| 国产乱人伦偷精品视频不卡 | 综合av第一页| 粉嫩久久99精品久久久久久夜 | 精品在线播放午夜| 欧美精选午夜久久久乱码6080| 一区二区三区四区亚洲| 99精品在线观看视频| 国产精品乱码人人做人人爱| 国产精品一区2区| 精品国产乱码久久久久久浪潮| 老色鬼精品视频在线观看播放| 欧美精品在欧美一区二区少妇| 一区二区三区在线免费视频| 色婷婷久久久久swag精品 | 日韩精品色哟哟| 欧美视频一区二区| 亚洲线精品一区二区三区| 欧美综合天天夜夜久久| 一区二区高清在线| 在线免费观看一区| 午夜欧美视频在线观看| 91精品国产综合久久精品性色| 日韩vs国产vs欧美| 欧美一三区三区四区免费在线看| 成人午夜精品一区二区三区| 欧美激情在线看| av午夜精品一区二区三区| 亚洲视频一区二区在线观看| 91原创在线视频| 一区二区三区在线播| 欧美三级午夜理伦三级中视频| 亚洲韩国精品一区| 在线成人av影院| 久久国产三级精品| 中文在线一区二区| 色视频欧美一区二区三区| 亚洲自拍偷拍麻豆| 欧美一区午夜精品| 国产美女精品在线| 亚洲日本在线观看| 欧美日本在线播放| 精品在线一区二区| 中文字幕av免费专区久久| 欧美最新大片在线看| 男人操女人的视频在线观看欧美| 久久久久99精品一区| 92精品国产成人观看免费| 亚洲动漫第一页| 2021中文字幕一区亚洲| 成人精品视频一区| 亚洲成人av资源| 国产亚洲福利社区一区| 日本电影欧美片| 伦理电影国产精品| 中文字幕一区二区三区四区 | 亚洲精品中文在线观看| 欧美日韩在线直播| 国产精品一二三在| 亚洲在线视频网站| 精品国一区二区三区| 91啪亚洲精品| 久久成人av少妇免费| 亚洲男人的天堂一区二区| 日韩午夜小视频| 色综合天天综合在线视频| 日韩不卡免费视频| 亚洲欧洲成人av每日更新| 91精品在线麻豆| 99久久亚洲一区二区三区青草| 日本午夜精品一区二区三区电影| 国产精品亲子乱子伦xxxx裸| 欧美丰满美乳xxx高潮www| 成人免费观看视频| 欧美aa在线视频| 亚洲影院免费观看| 国产片一区二区| 日韩一级在线观看| 91国产免费观看| 成人一区二区在线观看| 美女在线视频一区| 洋洋av久久久久久久一区| 国产亚洲精久久久久久| 中文一区一区三区高中清不卡| 欧美一区国产二区| 91福利资源站| 成人精品一区二区三区中文字幕| 美日韩一级片在线观看| 亚洲在线免费播放| 国产精品国产三级国产a| 欧美精品一区二区在线播放| 欧美日韩国产成人在线免费| 91农村精品一区二区在线| 国产69精品久久99不卡| 精品在线免费视频| 青青草原综合久久大伊人精品优势| 亚洲精品午夜久久久| 国产精品伦理一区二区| 久久久久久久久久看片| 精品精品国产高清一毛片一天堂| 欧美精品一级二级| 在线观看91精品国产入口| 91亚洲精华国产精华精华液| 国产成人av福利| 久久av中文字幕片| 看国产成人h片视频| 日韩专区在线视频| 天天av天天翘天天综合网 | 色8久久人人97超碰香蕉987| 国产成人av在线影院| 国产精品一区二区三区四区 | 日韩一区二区免费高清| 欧美日韩国产经典色站一区二区三区| 色天使色偷偷av一区二区| 91色porny蝌蚪|