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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? fastsb.c

?? MP3的軟件解碼代碼
?? C
字號(hào):
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/



/* Fast Inverse DCT implemented using Lee's algorithm */
/*
  The DCT matrix for N values is defined as:

  D(i,j) = cos((2*j+1)*i*PI/(2*N))

  Lee's fast-DCT algorithm, as used here, needs an 8-value DCT
  and an 16-value DCT matrix.
*/
#include "dewindow.h" 
#include "common.h"
#include <math.h> 

void matrix_mul16(double in1[16][16], double in2[16][16],double out[16][16]);
void fast_idct(double *in, double *out);
void fast_idct_init();


static int Granule_sbsynth_Vptr[2]={64,64};
typedef double BB[2][1024];
static BB Granule_sbsynth_V;

static double A16[16][16], A8[8][8];       /* DCT matrix         */
static double G16[16][16], G8[8][8];       /* Output butterfly   */
static double H16[16][16], H8[8][8];       /* Scaling            */

static double B16[16][16], B8[8][8];       /* B = G * DCT * H    */


void matrix_mul16(double in1[16][16],
		  double in2[16][16],
		  double out[16][16]);

void matrix_mul8(double in1[8][8],
		 double in2[8][8],
		 double out[8][8]);

void Granule_subband_synthesis(int ch, SS s, short SAM[2][SSLIMIT][SBLIMIT])
{
    int i, j, t, k;
	long is;
    double band[32];
    double *v, sum, *d;
	short *S=&SAM[0][0][0];

    /* We have 18 time-vectors of 32 subband magnitudes each. For every
       vector of 32 magnitudes, the subband synthesis generates 32
       PCM samples, so the result of 18 of these is 18*32=576 samples.
     */

    /* go through each time window */
	
    for(t = 0; t < 18; t++)
	{
	/* extract the subband strengths */
  	    v = &s[0][t];
		for(i = 0; i < 32; i++)
		{
	      band[i] = *v;
	      v = &v[18];
		}
	/* advance the buffer position */
	   Granule_sbsynth_Vptr[ch] = (Granule_sbsynth_Vptr[ch] - 64) & 0x3ff;
	   v = &Granule_sbsynth_V[ch][Granule_sbsynth_Vptr[ch]];

	   fast_idct(band, v);

	/* 32*16=512 mac's */
    /*      15          */
    /* Sj =SIGM W(j+32i) */
    /*     i=0          */

	  v = &Granule_sbsynth_V[ch][0];
      for (j = 0; j < 32; j++) 
	  {
        d = &D_coex[j];
	    k = j + Granule_sbsynth_Vptr[ch];
	    sum = 0.0f;
	    for(i = 0; i < 8; i++) 
		{
	      sum += d[0] * v[k];
	      k = (k + 96) & 0x3ff;
	      sum += d[32] * v[k];
	      k = (k + 32) & 0x3ff; 
	      d = &d[64];
		}
	
	  /* convert to integer, and clip the output */
 	    is = (long)(sum*32768);
	
	    if(is >= 32768) 
	      is = 32767;
	    else if(is < -32768)
	      is = -32768;
	    *S = (short)is;
	    S++;
	  }
    }
}

/* 18 * (4096+1024) = 92160 MAC's per call, with 2 calls per frame and
   38 frames per second this is 7 million MAC's per second.

   18 * (384 * 2 + 1024) = 32256 MAC's per call using Lee's fast DCT! That
   is just 2.4 million MAC's per second!

	We need a buffer of 1024 floats per channel.

   */

void Granule_subband_synthesis2(SS s1,SS s2,short  SAM[2][SSLIMIT][SBLIMIT])
{
    int i, j, t, k;
    double band[64];
    double *v1, *v2, sum, sum2, *d;
	double *v;
	long is;
	short *S=&SAM[0][0][0];

    /* We have 18 time-vectors of 32 subband magnitudes each. For every
       vector of 32 magnitudes, the subband synthesis generates 32
       PCM samples, so the result of 18 of these is 18*32=576 samples.
     */

    /* go through each time window */

    for(t = 0; t < 18; t++) 
	{

	/* extract the subband strengths */

	   v1 = &s1[0][t];
	   v2 = &s2[0][t];
	   for(i = 0; i < 32; i++)
	   {
	     band[i] = *v1;
	     band[i+32] = *v2;
	     v1 = &v1[18];
	     v2 = &v2[18];
	   }

	/* advance the buffer position */

 	  Granule_sbsynth_Vptr[0] = (Granule_sbsynth_Vptr[0] - 64) & 0x3ff;
	  v = &(Granule_sbsynth_V[0][Granule_sbsynth_Vptr[0]]);
	
	/* calculate 64 values for each channel and insert them into the 1024 wide buffer */

	  fast_idct(band, v);
//	  fast_idct(&band[32], &v[1024]);
         
	/* 32*16*2=1024 mac's */
	
	/* windowing - calculate 32 samples. each sample is the sum of 16 terms */
	
	/*     15          */
	/* Sj = E W(j+32i) */
	/*    i=0          */
	
	  v = &Granule_sbsynth_V[0][0];
	  for (j = 0; j < 32; j++)
	  { 
	    d = &D_coex[j];
	    k = j + Granule_sbsynth_Vptr[0];
	    
	    sum = (double)0.0f;
	    sum2 = (double)0.0f;
	    for(i = 0; i < 8; i++) 
		{
		   sum += d[0] * v[k];
		   sum2 += d[0] * v[k+1024];
		   k = (k + 96) & 0x3ff;

		   sum += d[32] * v[k];
		   sum2 += d[32] * v[k+1024];
		   k = (k + 32) & 0x3ff; 
		   d = &d[64];
	    }
	    /* convert to integer, and clip the output */
//      if(j%2)
	  {
		is=(long) (sum*32768);
// OVERFLOW_CHECKING
	    if(is >= 32768) 
		  *S = 32767;	
		else if(is < -32768) 
		  *S = -32768;
		else 
  		  *S = (short)is;

		S++;
	    
		is=(long) (sum*32768);
	    if(is >= 32768) 
		  *(S) = 32767;
		else if(is < -32768) 
		  *(S) = -32768;
		else 
		  *(S) = (short)is;

	    S++;

	  }
	  }
    }
}


void fast_idct_init()
{
    int i,j;
    double t16[16][16], t8[8][8];


    /* create the 16 matrixes */

    for(i = 0; i < 16; i++) {
	  for(j = 0; j < 16; j++) 
	  {
	    A16[i][j] = cos((2*j+1)*i*PI/32);
	    if(i == j || j == (i + 1))
		  G16[i][j] = 1.0f;
	    else
		  G16[i][j] = 0.0f;
	    if(i == j)
		  H16[i][j] = 1.0f/(2*cos((2*i+1)*PI/64));
	    else
		  H16[i][j] = 0.0;
	  }
    }

    /* create the 8 matrixes */

    for(i = 0; i < 8; i++) {
	  for(j = 0; j < 8; j++) 
	  {
	    A8[i][j] = cos((2*j+1)*i*PI/16);
	    if(i == j || j == (i + 1))
		  G8[i][j] = 1.0f;
	    else
		  G8[i][j] = 0.0f;
	    if(i == j)
		  H8[i][j] = 1.0f/(2*cos((2*i+1)*PI/32));
	    else
		  H8[i][j] = 0.0f;
	  }
    }

    /* generate the B matrixes */

    matrix_mul16(A16, H16, t16);
    matrix_mul16(G16, t16, B16);

    matrix_mul8(A8, H8, t8);
    matrix_mul8(G8, t8, B8);
}

/* This is a two-level implementation of Lee's fast-DCT algorithm */
/* 
   The 32 input values are split in two 16-value vectors using an
   even butterfly and an odd butterfly. The odd values are taken
   through Lee's odd path using a 16x16 DCT matrix (A16) and appropriate
   scaling (G16*A16*H16). The even values are further split into
   two 8-value vectors using even and odd butterflies into ee and eo.
   The ee values are fed through an 8x8 DCT matrix (A8) while the eo
   values are fed through the odd path using G8*A8*H8.

   This two-level configuration uses 384 muls and 432 adds, compared
   to the direct 32x32 DCT which uses 1024 muls and 992 adds.
*/

void fast_idct(double *in, double *out)
{
    double even[16], odd[16], ee[8], eo[8];
    double s1, s2;
    double t[32];
    int i, j;
	static int init=1;

    if(init)
	{
		fast_idct_init();
		init=0;
	}
	/* input butterflies - level 1 */
    /* 32 adds */

    for(i = 0; i < 16; i++) {
	   even[i] = in[i] + in[31-i];
	   odd[i] = in[i] - in[31-i];
    }

    /* input butterflies - level 2 */
    /* 16 adds */

    for(i = 0; i < 8; i++) {
	   ee[i] = even[i] + even[15-i];
	   eo[i] = even[i] - even[15-i];
    }

    /* multiply the even_even vector (ee) with the ee matrix (A8) */
    /* multiply the even_odd vector (eo) with the eo matrix (B8) */
    /* 128 muls, 128 adds */

    for(i = 0; i < 8; i++) {
	  s1 = 0.0;
	  s2 = 0.0;
	  for(j = 0; j < 8; j += 2) 
	  {
	    s1 += A8[i][j] * ee[j] +
		A8[i][j+1] * ee[j+1];
	    s2 += B8[i][j] * eo[j] +
		B8[i][j+1] * eo[j+1];
	  }
	  t[i*4] = s1;
	  t[i*4+2] = s2;
    }


    /* multiply the odd vector (odd) with the odd matrix (B16) */
    /* 256 muls, 256 adds */

    for(i = 0; i < 16; i++) 
	{
	  s1 = 0.0;
	  for(j = 0; j < 16; j += 4) 
	  {
	    s1 += B16[i][j] * odd[j] +
		B16[i][j+1] * odd[j+1] +
		B16[i][j+2] * odd[j+2] +
		B16[i][j+3] * odd[j+3];
	  }
	  t[i*2+1] = s1;
    }

    /* the output vector t now is expanded to 64 values using the
       symmetric property of the cosinus function */

    for(i = 0; i < 16; i++) 
	{
	  out[i] = t[i+16];
	  out[i+17] = -t[31-i];
	  out[i+32] = -t[16-i];
	  out[i+48] = -t[i];
    }
    out[16] = 0.0;
}

void matrix_mul16(double in1[16][16],
		  double in2[16][16],
		  double out[16][16])
{
    int i,j,z;

    for(i = 0; i < 16; i++) {
	  for(j = 0; j < 16; j++)
	  {
	    out[i][j] = 0.0;
	    for(z = 0; z < 16; z++)
		  out[i][j] += in1[i][z] * in2[z][j];
	  }
    } 
}

void matrix_mul8(double in1[8][8],
		 double in2[8][8],
		 double out[8][8])
{
    int i,j,z;

    for(i = 0; i < 8; i++) {
	  for(j = 0; j < 8; j++)  
	  {
	    out[i][j] = 0.0;
	    for(z = 0; z < 8; z++)
	 	  out[i][j] += in1[i][z] * in2[z][j];
	  }
    }
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲精品天堂一级| 亚洲成人资源网| 欧美三区免费完整视频在线观看| 麻豆精品一二三| 亚洲欧美日韩国产一区二区三区| 欧美大片在线观看一区二区| 91黄色免费观看| 国产成人在线影院| 麻豆成人综合网| 亚洲国产精品久久久久秋霞影院| 亚洲国产高清在线| 精品久久久久久无| 欧美色窝79yyyycom| aaa亚洲精品一二三区| 激情综合网天天干| 视频一区中文字幕国产| 一区二区三区四区在线免费观看| 国产午夜精品在线观看| 精品国精品自拍自在线| 91麻豆精品国产91久久久久久| 91丨porny丨在线| 成人久久视频在线观看| 久久国产精品99久久人人澡| 一区二区三区不卡视频| 欧美激情一区二区三区全黄| 欧美成人性战久久| 欧洲另类一二三四区| av电影在线观看不卡| 国产91丝袜在线播放0| 99这里都是精品| 亚洲精品欧美激情| 欧美午夜一区二区三区 | 精品美女一区二区三区| 裸体一区二区三区| 久久久精品日韩欧美| 不卡一区二区三区四区| 一区二区三区在线视频播放| 欧美日韩1区2区| 国产在线精品一区二区夜色| 国产精品久久久久aaaa樱花 | 日韩一级二级三级精品视频| 国产综合色在线视频区| 亚洲欧洲中文日韩久久av乱码| 3d成人h动漫网站入口| 国产福利一区二区三区| 亚洲欧美另类图片小说| 日韩欧美色综合| www.亚洲人| 奇米在线7777在线精品| 国产精品国产三级国产普通话蜜臀 | 亚洲不卡一区二区三区| 欧美成人a视频| 91麻豆高清视频| 极品尤物av久久免费看| 亚洲男人的天堂在线aⅴ视频| 欧美一级生活片| 91网站最新地址| 黄色精品一二区| 亚洲国产视频一区二区| 国产欧美在线观看一区| 777久久久精品| 91亚洲男人天堂| 韩国一区二区三区| 香蕉久久夜色精品国产使用方法 | 91精品国产综合久久精品| 成人永久免费视频| 日本美女一区二区| 亚洲精品欧美在线| 欧美国产日本韩| 日韩精品一区二区三区中文不卡 | 色婷婷综合在线| 国产精品小仙女| 蜜臀久久久99精品久久久久久| 综合久久国产九一剧情麻豆| 欧美成人a∨高清免费观看| 欧洲生活片亚洲生活在线观看| 国产成人免费视频| 免费看精品久久片| 一级精品视频在线观看宜春院 | 国产成人丝袜美腿| 免费高清在线视频一区·| 一级女性全黄久久生活片免费| 欧美国产精品v| 久久五月婷婷丁香社区| 欧美一区二区久久| 欧美狂野另类xxxxoooo| 欧洲亚洲国产日韩| 91丨九色丨蝌蚪丨老版| 成人av动漫网站| 国产成人在线网站| 国产一区二区三区高清播放| 日韩av一区二区三区四区| 曰韩精品一区二区| 亚洲精品网站在线观看| 中文字幕亚洲欧美在线不卡| 中文字幕av一区二区三区| 久久精品一区二区三区av| 精品成人一区二区| 精品久久久久av影院| 日韩欧美成人午夜| 欧美大黄免费观看| 精品免费视频一区二区| 欧美xxxx在线观看| 精品国产一区二区三区不卡| 日韩美女视频在线| 精品伦理精品一区| 久久亚洲欧美国产精品乐播| www国产精品av| 亚洲国产精品激情在线观看 | 婷婷成人激情在线网| 天堂在线亚洲视频| 免费欧美高清视频| 精品无码三级在线观看视频| 国内精品国产三级国产a久久| 韩日av一区二区| 国产精品18久久久久久久久久久久| 国产一区二区三区在线观看免费| 国产精品99久| 91美女片黄在线观看| 欧美少妇bbb| 日韩欧美的一区二区| 国产亚洲成aⅴ人片在线观看 | 国产剧情一区二区三区| 国产aⅴ综合色| 色狠狠色狠狠综合| 欧美日韩一区二区三区不卡| 91精品免费观看| 久久人人超碰精品| 国产精品国产成人国产三级 | 在线综合视频播放| 欧美刺激午夜性久久久久久久| 国产喷白浆一区二区三区| 依依成人精品视频| 蜜桃视频免费观看一区| 丰满少妇在线播放bd日韩电影| 欧美制服丝袜第一页| 欧美精品一区二区蜜臀亚洲| 亚洲国产成人自拍| 天天亚洲美女在线视频| 国产原创一区二区| 色猫猫国产区一区二在线视频| 欧美乱妇15p| 国产校园另类小说区| 亚洲高清免费观看| 国产精品91一区二区| 欧美日韩一区二区在线视频| 国产免费观看久久| 天堂在线亚洲视频| 成人国产精品免费网站| 777午夜精品免费视频| 国产精品乱子久久久久| 日韩精品一级二级 | 亚洲人成精品久久久久久| 美女久久久精品| 色呦呦国产精品| 精品国产麻豆免费人成网站| 亚洲欧美另类综合偷拍| 国产伦精品一区二区三区免费迷| 在线欧美小视频| 国产精品视频在线看| 免费观看日韩av| 在线观看亚洲专区| 亚洲国产精品精华液ab| 卡一卡二国产精品| 欧美无砖专区一中文字| 国产精品美女久久久久av爽李琼| 美女被吸乳得到大胸91| 在线视频观看一区| 中文字幕日本不卡| 国产精品一区二区三区网站| 欧美精品第1页| 一区二区三区四区乱视频| 风间由美一区二区av101| 日韩欧美色电影| 亚洲成人免费在线| 91久久精品国产91性色tv | 一区二区三区四区中文字幕| 国产不卡视频在线播放| 日韩欧美成人一区二区| 午夜精品123| 欧洲av一区二区嗯嗯嗯啊| 国产精品乱子久久久久| 国产盗摄精品一区二区三区在线| 91精品国产综合久久福利软件 | 一区二区三区四区在线播放| 成人91在线观看| 国产亚洲欧美色| 国产在线一区二区| 精品动漫一区二区三区在线观看| 日本成人在线网站| 欧美一区二区三区免费在线看 | 欧美r级在线观看| 免费看欧美美女黄的网站| 欧美高清精品3d| 亚洲二区视频在线| 欧美视频第二页| 天天亚洲美女在线视频| 91精品一区二区三区久久久久久| 天天做天天摸天天爽国产一区 | 制服丝袜国产精品|