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

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

?? fastimdct.c

?? 這是一個基于DSP的MPEG解碼程序,實現MPEG格式視頻數據的解碼
?? 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一区二区三区免费野_久草精品视频
欧美高清视频www夜色资源网| 9191久久久久久久久久久| 色狠狠综合天天综合综合| 日韩一区二区精品在线观看| 中文字幕免费观看一区| 日韩专区中文字幕一区二区| jlzzjlzz国产精品久久| 精品国产一二三区| 亚洲成av人片一区二区三区| 高潮精品一区videoshd| 日韩免费高清av| 五月激情六月综合| 色先锋aa成人| 国产欧美一区二区精品性色超碰| 婷婷久久综合九色国产成人 | 免费黄网站欧美| 欧美一区永久视频免费观看| 中文字幕亚洲一区二区av在线 | 国产精品久久久久久亚洲毛片| 日韩激情一二三区| 色一区在线观看| 国产精品水嫩水嫩| 国产成人小视频| 欧美mv和日韩mv的网站| 强制捆绑调教一区二区| 欧美三日本三级三级在线播放| 最新中文字幕一区二区三区| 国产99久久久国产精品潘金网站| 欧美电影免费观看完整版| 日韩av电影天堂| 欧美日本不卡视频| 天堂久久久久va久久久久| 欧美亚洲国产怡红院影院| 亚洲免费在线看| 色婷婷精品久久二区二区蜜臂av| 综合久久综合久久| 一本久久精品一区二区| 亚洲区小说区图片区qvod| 91色九色蝌蚪| 一区二区三区在线免费视频| 91久久精品一区二区三区| 亚洲六月丁香色婷婷综合久久 | 欧美日韩日日摸| 亚洲成在线观看| 欧美一区二区三区在线视频| 蜜臀精品一区二区三区在线观看 | 成人av片在线观看| 亚洲色图.com| 欧美亚洲免费在线一区| 日韩综合在线视频| 久久婷婷一区二区三区| 国产成人免费高清| 亚洲码国产岛国毛片在线| 91成人免费在线| 视频一区视频二区在线观看| 日韩精品自拍偷拍| 狠狠色狠狠色综合系列| 国产精品麻豆99久久久久久| 91同城在线观看| 午夜成人免费视频| 久久色中文字幕| 91一区二区三区在线观看| 亚洲国产三级在线| 久久综合九色综合97_久久久| 成人动漫视频在线| 天天操天天干天天综合网| 久久综合狠狠综合久久综合88| av在线综合网| 男女视频一区二区| 国产精品三级视频| 欧美日韩一区二区三区四区| 九色porny丨国产精品| 亚洲欧洲日韩av| 91麻豆精品国产91久久久| 国产乱人伦偷精品视频免下载| 综合久久久久久| 精品国产精品网麻豆系列| www.爱久久.com| 久久er99精品| 亚洲综合激情网| 国产亚洲1区2区3区| 欧美日韩国产一区二区三区地区| 国产成人免费视| 天天av天天翘天天综合网色鬼国产 | 亚洲视频网在线直播| 欧美α欧美αv大片| 色哟哟一区二区在线观看| 国产在线视视频有精品| 亚洲国产精品精华液网站| 欧美国产欧美综合| 欧美mv日韩mv国产网站app| 欧美在线制服丝袜| 不卡高清视频专区| 国产一区二区免费看| 午夜欧美视频在线观看| 最新不卡av在线| 国产偷v国产偷v亚洲高清| 欧美一区午夜视频在线观看| 欧美三级一区二区| 色综合天天性综合| 成人av网站在线观看免费| 国产在线一区二区| 麻豆精品国产传媒mv男同| 五月天视频一区| 亚洲香蕉伊在人在线观| 亚洲素人一区二区| 亚洲欧洲成人精品av97| 国产精品免费久久久久| 久久久亚洲欧洲日产国码αv| 欧美不卡一区二区三区四区| 91精品欧美一区二区三区综合在| 欧美午夜在线观看| 欧美三级电影在线观看| 欧美在线免费观看亚洲| 欧美在线影院一区二区| 欧美体内she精高潮| 欧美日韩中文字幕一区二区| 欧美天堂亚洲电影院在线播放| 色婷婷久久久综合中文字幕| 日本高清不卡在线观看| 91久久精品一区二区三区| 在线观看视频欧美| 欧美性猛片xxxx免费看久爱| 色婷婷激情综合| 欧美视频你懂的| 5月丁香婷婷综合| 日韩美女一区二区三区四区| 精品久久一区二区| 国产三级欧美三级日产三级99| 国产亚洲视频系列| 亚洲欧美自拍偷拍| 亚洲一区二区中文在线| 日韩精品久久理论片| 久久精品国产亚洲高清剧情介绍| 国产在线麻豆精品观看| 国产成人av网站| 色综合久久九月婷婷色综合| 精品视频一区二区三区免费| 日韩欧美在线一区二区三区| 精品噜噜噜噜久久久久久久久试看| 国产午夜精品久久| 亚洲欧美另类久久久精品| 亚洲资源中文字幕| 美女视频网站久久| 成人免费视频caoporn| 在线免费观看不卡av| 日韩精品一区二区三区视频播放| 国产女人水真多18毛片18精品视频| 亚洲视频免费看| 男人的天堂亚洲一区| 成人av综合一区| 欧美色涩在线第一页| 久久久久久久电影| 亚洲国产欧美一区二区三区丁香婷| 免费看日韩a级影片| 99九九99九九九视频精品| 欧美精品久久一区二区三区| 久久久久久黄色| 五月天久久比比资源色| 成人白浆超碰人人人人| 91精品久久久久久蜜臀| 国产精品国产三级国产普通话99| 亚洲一级片在线观看| 国产电影一区在线| 91麻豆精品国产自产在线| 国产精品女人毛片| 久久99久久精品| 在线国产亚洲欧美| 亚洲国产精品黑人久久久| 日韩av电影一区| 一本大道久久精品懂色aⅴ| 欧美电视剧在线看免费| 一区二区视频在线看| 国产成人综合亚洲91猫咪| 7777精品伊人久久久大香线蕉超级流畅| 国产欧美日韩麻豆91| 日韩影院精彩在线| 欧洲视频一区二区| 国产精品久久久久一区二区三区共| 久久精品99久久久| 91精品啪在线观看国产60岁| 亚洲最大色网站| 91亚洲永久精品| 国产精品福利av| 成人美女视频在线观看18| 精品国产乱码久久久久久久久 | 激情六月婷婷综合| 欧美一级一区二区| 丝袜脚交一区二区| 欧美性猛交一区二区三区精品| 日韩一区欧美小说| av在线一区二区| 国产精品久久久久影院色老大| 成人性视频免费网站| 天天综合日日夜夜精品| 在线观看国产精品网站| 亚洲国产精品一区二区www在线| av在线不卡观看免费观看| 国产精品美女久久久久久2018| 国产成人在线观看免费网站|