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

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

?? fastimdct.c

?? 給ARM7用的MP3程序源碼
?? C
字號:
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/




/*
   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.

*/ 

    /* calculate some window shapes and cos tables for the IMDCT */

#include "math.h"
#include "common.h" 

double 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
};

double 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(struct Granule *gr, int ch, SS XX )
{
    static double Granule_imdct_previous[2][576];  /* used for overlapping */
    static double Granule_9x9_idct[72];
    static double Granule_imdct_win[4][36];

    int sb, i, j, k, l, window;
    double save, sum, sum2, pp1;
    double s;
    double x[36], t[18];
    double  *prev, *z, *twid,*X;
    int odd_i, two_odd_i, four_odd_i, eight_odd_i;
	static int init=1;
	X=&XX[0][0];

    if(init)
	{

	/* block_type 0 (normal window) */
      for(i = 0; i < 36; i++)
	    Granule_imdct_win[0][i] = sin(PI/36 * (i + 0.5));
    
    /* block_type 1 (start block) */

      for(i = 0; i < 18; i++)
	    Granule_imdct_win[1][i] = sin(PI/36 * (i + 0.5));

      for(i = 18; i < 24; i++)
	    Granule_imdct_win[1][i] = 1.0f;

      for(i = 24; i < 30; i++)
	    Granule_imdct_win[1][i] =  sin(PI/12 * (i - 18 + 0.5));

      for(i = 30; i < 36; i++)
	    Granule_imdct_win[1][i] =  0.0f;
    
    /* block_type 3 (stop block) */

      for(i = 0; i < 6; i++)
	    Granule_imdct_win[3][i] =  0.0f;

      for(i = 6; i < 12; i++)
	    Granule_imdct_win[3][i] =  sin(PI/12 * (i - 6 + 0.5));

      for(i = 12; i < 18; i++)
	    Granule_imdct_win[3][i] =  1.0f;

      for(i = 18; i < 36; i++)
	    Granule_imdct_win[3][i] =  sin(PI/36 * (i + 0.5));
    
    /* block_type 2 (short block) */

      for(i = 0; i < 12; i++)
	    Granule_imdct_win[2][i] =  sin(PI/12 * (i + 0.5));

      for(i = 12; i < 36; i++)
	    Granule_imdct_win[2][i] =  0.0 ;
      
      j = 0;
      for(i = 0; i < 9; i++) 
	  {
  	    odd_i = (i << 1) + 1;
	    two_odd_i = odd_i << 1;
	    four_odd_i = odd_i << 2;
	    Granule_9x9_idct[j++] =  cos(PI/18 * odd_i);
	    Granule_9x9_idct[j++] =  cos(PI/18 * two_odd_i);
	    eight_odd_i = two_odd_i << 2;
	    Granule_9x9_idct[j++] =  cos(PI/18 * (four_odd_i - odd_i));
	    Granule_9x9_idct[j++] =  cos(PI/18 * four_odd_i);
	    Granule_9x9_idct[j++] =  cos(PI/18 * (four_odd_i + odd_i));
	    Granule_9x9_idct[j++] =  cos(PI/18 * (four_odd_i + two_odd_i));
	    Granule_9x9_idct[j++] =  cos(PI/18 * (eight_odd_i - odd_i));
	    Granule_9x9_idct[j++] =  cos(PI/18 * eight_odd_i);
	  }

     for(j = 0;  j< 2; j++)
  	   for(i = 0; i < 576; i++)
	     Granule_imdct_previous[j][i] = 0.0f;

	  init=0;
	}
	
	prev = Granule_imdct_previous[ch];

    /* process each subband */

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

	  for(i = 0; i < 36; i++)
	     x[i] =  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 == 2 &&
	   !(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++)
	  {
		/* 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 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)
		{
            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;
			}
			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];

	    /* 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];
		  x[i+9] = t[17-i] * Granule_imdct_win[gr->block_type][i+9];
		  x[i+18] = t[8-i] * Granule_imdct_win[gr->block_type][i+18];
		  x[i+27] = t[i] * Granule_imdct_win[gr->block_type][i+27];
	    }

	}
	
	/* Overlap and add with previous block */
  	    for(i = 0; i < 18; i++) 
		{
	      *(X++) = x[i] + *prev;  /* produce an output value */
	      *(prev++) = x[i+18]; 
		}
    }	
    
}

void Granule_freqinverse(SS X)
{
    int sb, dct;
	double *x;
    x = &X[0][SSLIMIT];
    for(sb = 1; sb < SBLIMIT; sb += 2) 
	{
	  for(dct = 1; dct < SSLIMIT; dct += 2)
	    x[dct] = -x[dct];
	  x = &x[2 * SSLIMIT];
    }
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久爽爽爽麻豆色哟哟| 精品福利av导航| 99精品国产热久久91蜜凸| 国产一区视频网站| 国产 日韩 欧美大片| 国产mv日韩mv欧美| zzijzzij亚洲日本少妇熟睡| 福利视频网站一区二区三区| 成人午夜看片网址| 色噜噜狠狠色综合中国| 在线观看成人小视频| 91精品视频网| 国产片一区二区| 亚洲色图欧洲色图婷婷| 亚洲小说欧美激情另类| 日韩国产成人精品| 国产一区二区精品久久| www.爱久久.com| 欧美日韩中文一区| 日韩精品一区二| 自拍偷在线精品自拍偷无码专区| 亚洲午夜激情网站| 国产在线不卡一区| 91蜜桃免费观看视频| 3751色影院一区二区三区| 国产日韩欧美一区二区三区乱码| 中文字幕综合网| 美女网站一区二区| 91久久精品网| 久久欧美一区二区| 午夜久久久影院| 国产精品99久| 欧美精品色一区二区三区| 国产欧美综合色| 男女男精品网站| 91麻豆免费观看| 精品福利av导航| 亚洲va韩国va欧美va精品| 国产高清不卡一区| 欧美一级一级性生活免费录像| 国产婷婷色一区二区三区四区| 亚洲午夜日本在线观看| 成人听书哪个软件好| 日韩女优电影在线观看| 亚洲另类中文字| 成人高清av在线| 精品av综合导航| 五月天亚洲精品| 色婷婷av久久久久久久| 欧美精品一区二区三区视频 | 色婷婷精品久久二区二区蜜臂av| 在线不卡a资源高清| 中文字幕制服丝袜成人av| 久久精品国产一区二区三| 欧美亚日韩国产aⅴ精品中极品| 国产女人18毛片水真多成人如厕 | 精品国产91洋老外米糕| 亚洲国产aⅴ天堂久久| 99视频国产精品| 2017欧美狠狠色| 久久精品av麻豆的观看方式| 欧美亚洲国产一区二区三区va | 亚洲午夜激情av| 色香色香欲天天天影视综合网| 久久久综合视频| 国产精品自拍毛片| 久久久国产综合精品女国产盗摄| 日韩成人一级片| 日韩午夜在线影院| 日韩精品1区2区3区| 欧美日韩中字一区| 日韩和欧美一区二区| 欧美亚洲丝袜传媒另类| 亚洲一区二区四区蜜桃| 91麻豆国产自产在线观看| 亚洲天堂精品在线观看| 91在线观看免费视频| 国产女人水真多18毛片18精品视频 | 婷婷丁香激情综合| 欧美疯狂性受xxxxx喷水图片| 一区二区三区四区高清精品免费观看| 93久久精品日日躁夜夜躁欧美| 中文字幕一区二区日韩精品绯色| 99re这里都是精品| 一个色综合网站| 91精品婷婷国产综合久久 | k8久久久一区二区三区| 亚洲视频精选在线| 欧美日韩视频一区二区| 蜜桃av噜噜一区| 国产精品你懂的| 在线精品视频一区二区三四 | 精品国产一区二区三区av性色| 经典三级在线一区| 国产精品视频一二三| 91在线精品一区二区| 亚洲国产日日夜夜| 精品久久久久99| 91蜜桃免费观看视频| 石原莉奈一区二区三区在线观看 | 成人午夜私人影院| 亚洲第四色夜色| 欧美精品一区二区三区蜜桃 | 婷婷中文字幕综合| 国产欧美视频一区二区| 欧美亚洲国产bt| 国产成人免费视频| 日韩精品亚洲一区| 国产精品国产自产拍在线| 欧美精品乱码久久久久久| 国产精品亚洲第一区在线暖暖韩国 | 韩国精品在线观看| 亚洲一区二区三区小说| 日韩美一区二区三区| kk眼镜猥琐国模调教系列一区二区| 五月天久久比比资源色| ●精品国产综合乱码久久久久| 欧美精品日韩一区| 一本一本大道香蕉久在线精品| 久久er99精品| 亚洲国产综合人成综合网站| 国产亚洲成aⅴ人片在线观看| 欧美日韩免费视频| 91亚洲精品久久久蜜桃| 久久99精品久久久久久久久久久久| 亚洲乱码精品一二三四区日韩在线| 精品久久久久久久久久久久包黑料 | 久久精品国产久精国产爱| 久久婷婷一区二区三区| 欧美性三三影院| 91蜜桃传媒精品久久久一区二区| 麻豆freexxxx性91精品| 亚洲国产人成综合网站| 亚洲欧洲中文日韩久久av乱码| 2023国产精品自拍| 日韩亚洲欧美综合| 欧美美女bb生活片| 欧洲色大大久久| 日本久久电影网| 色欧美片视频在线观看| 成人午夜精品一区二区三区| 国产一区二区三区电影在线观看| 蜜桃av一区二区三区| 免费视频最近日韩| 青椒成人免费视频| 久久国产综合精品| 六月丁香婷婷久久| 国产综合久久久久久久久久久久| 麻豆一区二区99久久久久| 蜜桃视频一区二区三区在线观看| 亚洲成av人片在线| 亚洲成人激情综合网| 午夜免费欧美电影| 蜜臀va亚洲va欧美va天堂| 毛片不卡一区二区| 国产乱子伦视频一区二区三区 | 51精品秘密在线观看| 欧美一区二区私人影院日本| 欧美男人的天堂一二区| 欧美日本在线视频| 欧美大胆人体bbbb| 国产午夜精品一区二区三区视频| 欧美韩国日本一区| 亚洲宅男天堂在线观看无病毒| 亚洲免费av在线| 午夜精彩视频在线观看不卡| 全国精品久久少妇| 国产精品一二三四五| av不卡一区二区三区| 欧美综合色免费| 欧美一区日本一区韩国一区| 精品三级在线观看| 国产精品剧情在线亚洲| 一区二区三区中文字幕精品精品 | 日本一区二区三区久久久久久久久不 | 成人h精品动漫一区二区三区| 99久久综合精品| 欧美精品丝袜中出| 国产区在线观看成人精品| 日韩一区欧美小说| 美女久久久精品| 成人精品视频一区| 精品视频在线看| 国产喂奶挤奶一区二区三区| 一区二区三区在线播| 久久99精品久久久久久| 91影院在线观看| 91精品欧美福利在线观看| 久久久久88色偷偷免费| 亚洲一区二区三区美女| 国产一区在线看| 欧美精选午夜久久久乱码6080| 久久久av毛片精品| 亚洲午夜羞羞片| 国产成人自拍在线| 91精品国产综合久久久久久| 亚洲国产精品精华液2区45| 天堂久久久久va久久久久| 粉嫩av亚洲一区二区图片| 欧美日韩久久久|