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

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

?? decode.c

?? MP3的軟件解碼代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************
copyright by Haia Tech
www.haia2004.com
************************************************/



#include <math.h>
//#include <stdlib.h>
#include "common.h"
#include "decode.h"
 
extern struct Granule grle[2][2];
extern Bit_stream_struc  bs;
extern frame_params fr_ps;

struct BandIndex sfBandIndex[3]=
{
	{{0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576},
		{0,4,8,12,16,22,30,40,52,66,84,106,136,192}},
	{{0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576},
		{0,4,8,12,16,22,28,38,50,64,80,100,126,192}},
	{{0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576},
		{0,4,8,12,16,22,30,42,58,78,104,138,180,192}}
};


void decode_info()
{
    layer *hdr = fr_ps.header;
    int x;

    hdr->version = getbit(1);
    hdr->lay = 4-getbit(2);
    hdr->error_protection = !getbit(1); /* error protect. TRUE/FALSE */
    hdr->bitrate_index = getbit(4);
    hdr->sampling_frequency = getbit(2);
    hdr->padding = getbit(1);
    hdr->extension = getbit(1);
    hdr->mode = getbit(2);
    hdr->mode_ext = getbit(2);
    hdr->copyright = getbit(1);
    hdr->original = getbit(1);
    hdr->emphasis = getbit(2);
}

void III_get_side_info(III_side_info_t *si)
{
	int ch, gr, i;
	int stereo = fr_ps.stereo;

	si->main_data_begin = getbit(9);  //SI 邊信息結構
	if (stereo == 1)
		si->private_bits = getbit(5);
	else
		si->private_bits = getbit(3);

	for (ch=0; ch<stereo; ch++)         //第二顆粒是否傳送信息
		for (i=0; i<4; i++)
			si->scfsi[ch][i] = getbit(1);

	for (gr=0; gr<2; gr++) {
		for (ch=0; ch<stereo; ch++) {
			grle[ch][gr].part2_3_length = getbit(12);
			grle[ch][gr].big_values = getbit(9);
			grle[ch][gr].global_gain = getbit(8);
			grle[ch][gr].scalefac_compress = getbit(4);
			grle[ch][gr].window_switching_flag = getbit(1);
			if (grle[ch][gr].window_switching_flag) {            //窗開關為1
				grle[ch][gr].block_type = getbit(2);
				grle[ch][gr].mixed_block_flag = getbit(1);
				for (i=0; i<2; i++)
					grle[ch][gr].table_select[i] = getbit(5);
				for (i=0; i<3; i++)
					grle[ch][gr].subblock_gain[i] = getbit(3);

				/* Set region_count parameters since they are implicit in this case. */

				if (grle[ch][gr].block_type == 0) {
//					printf("Side info bad: block_type == 0 in split block.\n");
//					exit(0);
				}
				else if (grle[ch][gr].block_type == 2
						&& grle[ch][gr].mixed_block_flag == 0)
					grle[ch][gr].region0_count = 8; /* MI 9; */     //region0和1的缺省配置
				else grle[ch][gr].region0_count = 7; /* MI 8; */
					grle[ch][gr].region1_count = 20 - grle[ch][gr].region0_count;
			}
			else {                                                       //窗開關為0
				for (i=0; i<3; i++)
					grle[ch][gr].table_select[i] = getbit(5);
				grle[ch][gr].region0_count = getbit(4);
				grle[ch][gr].region1_count = getbit(3);
				grle[ch][gr].block_type = 0;
			}
			grle[ch][gr].preflag = getbit(1);
			grle[ch][gr].scalefac_scale = getbit(1);
			grle[ch][gr].count1table_select = getbit(1);
         }
	}
}


struct {
	int l[5];
	int s[3];
} sfbtable = {
	{0, 6, 11, 16, 21},
	{0, 6, 12}
};
int slen[2][16]={
	{0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4},
	{0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3}
};

void III_get_scale_factors(III_scalefac_t *scalefac, III_side_info_t *si, int gr, int ch)
{
	int sfb, i, window;
	struct Granule *gr_info = &(grle[ch][gr]);

	if (gr_info->window_switching_flag && (gr_info->block_type == 2)) {
		if (gr_info->mixed_block_flag) { /* MIXED */ /* NEW - ag 11/25 */
			for (sfb = 0; sfb < 8; sfb++)
				(*scalefac)[ch].l[sfb] = hgetbits(
					slen[0][gr_info->scalefac_compress]);       //用 slen[0]
			for (sfb = 3; sfb < 6; sfb++)
				for (window=0; window<3; window++)
					(*scalefac)[ch].s[window][sfb] = hgetbits(
						slen[0][gr_info->scalefac_compress]);   //用 slen[0]
			for (sfb = 6; sfb < 12; sfb++)
				for (window=0; window<3; window++)
					(*scalefac)[ch].s[window][sfb] = hgetbits(
						slen[1][gr_info->scalefac_compress]);   //6-11用 slen[1]

			for (sfb=12,window=0; window<3; window++)
				(*scalefac)[ch].s[window][sfb] = 0;
		}
		else {  /* SHORT*/
			for (i=0; i<2; i++)
				for (sfb = sfbtable.s[i]; sfb < sfbtable.s[i+1]; sfb++)
					for (window=0; window<3; window++)
						(*scalefac)[ch].s[window][sfb] = hgetbits(
							slen[i][gr_info->scalefac_compress]);
				for (sfb=12,window=0; window<3; window++)
					(*scalefac)[ch].s[window][sfb] = 0;
		}
	}
	else {   /* LONG types 0,1,3 */
		for (i=0; i<4; i++) {
			if ((si->scfsi[ch][i] == 0) || (gr == 0))
				for (sfb = sfbtable.l[i]; sfb < sfbtable.l[i+1]; sfb++)
					(*scalefac)[ch].l[sfb] = hgetbits(
						slen[(i<2)?0:1][gr_info->scalefac_compress]);
		}
		(*scalefac)[ch].l[22] = 0;
	}
}
 

int pretab[22] = {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,3,3,3,2,0};

void III_dequantize_sample(int is[SBLIMIT][SSLIMIT], double xr[SBLIMIT][SSLIMIT], III_scalefac_t *scalefac, struct Granule *gr_info, int ch)
{
	int ss,sb,cb=0,sfreq=fr_ps.header->sampling_frequency;
	int next_cb_boundary, cb_begin, cb_width, sign;
	double is43_table[1024],temp;
	static int init=1;

	if(init)
	{
		for(init=0;init<1024;init++)
		  is43_table[init]=1.33333333333*log(init);
		init=0;
	}

	/* choose correct scalefactor band per block type, initalize boundary */

	if (gr_info->window_switching_flag && (gr_info->block_type == 2) )
		if (gr_info->mixed_block_flag)
			next_cb_boundary=sfBandIndex[sfreq].l[1];  /* LONG blocks: 0,1,3 */
		else
		{
			next_cb_boundary=sfBandIndex[sfreq].s[1]*3; /* pure SHORT block */
			cb_width = sfBandIndex[sfreq].s[1];
			cb_begin = 0;
		}
	else
		next_cb_boundary=sfBandIndex[sfreq].l[1];  /* LONG blocks: 0,1,3 */

	/* apply formula per block type */
	for (sb=0 ; sb < SBLIMIT ; sb++) {        //0-31
		for (ss=0 ; ss < SSLIMIT ; ss++) {    //0-17

/*********              由sb和ss計算cb(比例因子帶)和cb_width(比例因子帶寬)   **************/
			if ( (sb*18)+ss == next_cb_boundary)
			{ /* Adjust critical band boundary */
				if (gr_info->window_switching_flag && (gr_info->block_type == 2))
				{
					if (gr_info->mixed_block_flag)
					{
						if (((sb*18)+ss) == sfBandIndex[sfreq].l[8])
						{
							next_cb_boundary=sfBandIndex[sfreq].s[4]*3;
							cb = 3;
							cb_width = sfBandIndex[sfreq].s[cb+1] -
										sfBandIndex[sfreq].s[cb];
							cb_begin = sfBandIndex[sfreq].s[cb]*3;
						}
						else if (((sb*18)+ss) < sfBandIndex[sfreq].l[8])
							next_cb_boundary = sfBandIndex[sfreq].l[(++cb)+1];
						else {
							next_cb_boundary = sfBandIndex[sfreq].s[(++cb)+1]*3;
							cb_width = sfBandIndex[sfreq].s[cb+1] -
										sfBandIndex[sfreq].s[cb];
							cb_begin = sfBandIndex[sfreq].s[cb]*3;
						}
					}
					else
					{
						next_cb_boundary = sfBandIndex[sfreq].s[(++cb)+1]*3;
						cb_width = sfBandIndex[sfreq].s[cb+1] -
									sfBandIndex[sfreq].s[cb];
						cb_begin = sfBandIndex[sfreq].s[cb]*3;
					}
				}
	            else /* long blocks */
		           next_cb_boundary = sfBandIndex[sfreq].l[(++cb)+1];
			}
/***************************************************************************************/
		  if(is[sb][ss]!=0)
		  {
			/* Compute overall (global) scaling. */
			xr[sb][ss] = (0.25 * (gr_info->global_gain - 210.0));
				

			/* Do long/short dependent scaling operations. */

			if (gr_info->window_switching_flag && (
				((gr_info->block_type == 2) && (gr_info->mixed_block_flag == 0)) ||
				((gr_info->block_type == 2) && gr_info->mixed_block_flag && (sb >= 2)) ))
			{

				xr[sb][ss] += (0.25 * -8.0 *gr_info->subblock_gain[(((sb*18)+ss) - cb_begin)/cb_width]);
				xr[sb][ss] += (0.25 * -2.0 * (1.0+gr_info->scalefac_scale)
						* (*scalefac)[ch].s[(((sb*18)+ss) - cb_begin)/cb_width][cb]);
			}
			else    /* LONG block types 0,1,3 & 1st 2 subbands of switched blocks */
			{
				xr[sb][ss] +=  (-0.5 * (1.0+gr_info->scalefac_scale)
								* ((*scalefac)[ch].l[cb]
								+ gr_info->preflag * pretab[cb]));
			}

			/* Scale quantized value. */
            //求出符號
			sign=0;
			if(is[sb][ss]<0)
			{
				sign=1;
			    is[sb][ss]=-is[sb][ss];
			}

			if(is[sb][ss]>1023)
				temp=is43_table[(unsigned)is[sb][ss]>>3]+2.7725887;// 4/3*ln8
			else
				temp=is43_table[is[sb][ss]];

			xr[sb][ss] *=0.69314318;        //log(2);
			xr[sb][ss] +=temp;
			xr[sb][ss] =exp(xr[sb][ss]);
			if (sign) xr[sb][ss] = -xr[sb][ss];
		  }
		  else
			xr[sb][ss] =0;

		}
	}
}
 

void III_reorder(SS xr ,  struct Granule *gr_info)
{
   int sfreq=fr_ps.header->sampling_frequency;
   int sfb, sfb_start, sfb_lines;
   int sb, ss, window, freq, src_line, des_line;
   SS ro ;

   if (gr_info->window_switching_flag && (gr_info->block_type == 2)) 
   {
      if (gr_info->mixed_block_flag) 
	  {
         /* NO REORDER FOR LOW 2 SUBBANDS */
         for (sb=0 ; sb < 2 ; sb++)
            for (ss=0 ; ss < SSLIMIT ; ss++) 
               ro[sb][ss] = xr[sb][ss];
            
         /* REORDERING FOR REST SWITCHED SHORT */
         for(sfb=3,sfb_start=sfBandIndex[sfreq].s[3],
            sfb_lines=sfBandIndex[sfreq].s[4] - sfb_start;
            sfb < 13; sfb++,sfb_start=sfBandIndex[sfreq].s[sfb],
            (sfb_lines=sfBandIndex[sfreq].s[sfb+1] - sfb_start))
               for(window=0; window<3; window++)
                  for(freq=0;freq<sfb_lines;freq++) {
                     src_line = sfb_start*3 + window*sfb_lines + freq;
                     des_line = (sfb_start*3) + window + (freq*3);
                     ro[des_line/SSLIMIT][des_line%SSLIMIT] =
                                    xr[src_line/SSLIMIT][src_line%SSLIMIT];
               }
      }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影免费一区| 亚洲一区精品在线| 欧美三级韩国三级日本三斤| 国产精品亚洲第一| 久久国产免费看| 看国产成人h片视频| 青青草视频一区| 日韩不卡在线观看日韩不卡视频| 亚洲一区成人在线| 亚洲r级在线视频| 日韩精品一二三| 老司机免费视频一区二区| 精品影视av免费| 国产精品 日产精品 欧美精品| 国产老肥熟一区二区三区| 成人免费视频播放| 91国产成人在线| 欧美一区在线视频| 精品影视av免费| 波多野结衣中文一区| av电影在线不卡| 欧美日本高清视频在线观看| 秋霞影院一区二区| 国产综合色精品一区二区三区| 激情小说欧美图片| 91亚洲精品一区二区乱码| 欧美日韩国产片| 久久久www免费人成精品| 国产精品久线在线观看| 亚洲观看高清完整版在线观看| 日本欧美加勒比视频| 国产成人综合视频| 精品视频免费在线| 国产欧美精品一区aⅴ影院| 一区二区三区在线观看视频| 久久99精品久久久久| 成人黄色国产精品网站大全在线免费观看 | 3atv一区二区三区| 欧美精品一区二区三区四区| 成人欧美一区二区三区1314 | 欧美精品一级二级| 欧美mv日韩mv国产网站| 亚洲三级免费电影| 国产福利一区二区三区视频| 91九色02白丝porn| 欧美国产日本视频| 蜜桃视频一区二区| 欧美色窝79yyyycom| 精品久久久久久无| 一区二区三区高清| av一区二区不卡| 日本韩国欧美在线| 亚洲视频一二三| 欧美日韩www| 91麻豆自制传媒国产之光| 国产美女视频一区| 成人黄色在线视频| 一区二区三区免费看视频| 国产欧美精品国产国产专区 | av激情亚洲男人天堂| 国产日韩欧美激情| 亚洲电影激情视频网站| 成人免费毛片aaaaa**| 日韩网站在线看片你懂的| 亚洲视频在线一区二区| 国产成人在线电影| 久久老女人爱爱| 七七婷婷婷婷精品国产| 99r国产精品| 中文字幕在线一区| 成人性生交大片免费看在线播放| 日韩午夜激情视频| 麻豆91在线播放| 欧美一区二区三区视频免费播放| 伊人性伊人情综合网| 色久综合一二码| 亚洲黄色录像片| 一本一道久久a久久精品综合蜜臀| 国产欧美一区二区三区鸳鸯浴 | 欧美伊人久久大香线蕉综合69| 中文欧美字幕免费| av网站一区二区三区| 综合自拍亚洲综合图不卡区| 99在线热播精品免费| 中文字幕在线免费不卡| 色综合久久久网| 亚洲一区二区三区自拍| 在线不卡a资源高清| 久久精品二区亚洲w码| 日韩一区二区在线观看视频| 免费成人在线视频观看| 久久精品日产第一区二区三区高清版| 日韩欧美成人激情| 成人性生交大片免费 | 97aⅴ精品视频一二三区| ㊣最新国产の精品bt伙计久久| 99国产精品久久| 欧美日韩一级片网站| 男女男精品网站| 2021国产精品久久精品| 粉嫩一区二区三区在线看| 日韩毛片高清在线播放| 欧美日韩免费电影| 国产一区亚洲一区| 亚洲精品伦理在线| 精品久久久久久久久久久久久久久久久| 黑人巨大精品欧美一区| 国产精品国产三级国产aⅴ原创| 欧美性大战xxxxx久久久| 国产综合久久久久影院| 国产精品欧美一区二区三区| 欧美日韩精品欧美日韩精品一| 国内精品视频一区二区三区八戒 | 亚洲国产中文字幕| 欧美成人高清电影在线| zzijzzij亚洲日本少妇熟睡| 欧美揉bbbbb揉bbbbb| 国产河南妇女毛片精品久久久 | 成人手机在线视频| 亚洲国产精品一区二区久久| 久久新电视剧免费观看| 欧美亚洲动漫精品| 成人av在线资源网| 久久99精品久久久久久| 午夜视频久久久久久| 国产精品国产三级国产aⅴ中文| 7777精品久久久大香线蕉| 国产成人精品免费| 日韩亚洲欧美一区| 欧美私人免费视频| 成人午夜免费av| 国内精品久久久久影院一蜜桃| 亚洲妇女屁股眼交7| 成人免费在线播放视频| 国产婷婷一区二区| 精品国产乱码久久久久久浪潮| 在线观看日韩av先锋影音电影院| 国产福利一区二区| 国内成人精品2018免费看| 天堂一区二区在线| 亚洲黄色小说网站| 亚洲激情成人在线| 91久久精品一区二区三| 不卡高清视频专区| 国产成人av一区二区三区在线观看| 麻豆精品精品国产自在97香蕉| 亚洲电影一区二区三区| 亚洲一区二区三区四区在线观看 | 免费成人在线观看| 日韩成人精品视频| 视频一区二区中文字幕| 亚洲国产另类av| 亚洲国产精品久久久男人的天堂| |精品福利一区二区三区| 国产精品久久久久久户外露出 | 欧美在线小视频| 色综合网站在线| 日本二三区不卡| 欧美性大战久久| 日韩三级精品电影久久久| 欧美日韩精品一区二区三区蜜桃 | 麻豆精品在线播放| 麻豆91在线看| 风间由美性色一区二区三区| 国产v日产∨综合v精品视频| 高清不卡一区二区在线| 不卡的av中国片| 欧美日韩免费电影| 日韩欧美精品在线视频| 久久综合九色欧美综合狠狠| 国产欧美精品一区二区色综合朱莉 | 不卡一区在线观看| 色老综合老女人久久久| 日本欧美大码aⅴ在线播放| 久久er99热精品一区二区| 国产成人av影院| 欧美综合一区二区| 日韩精品自拍偷拍| 国产精品美女一区二区| 亚洲国产视频网站| 国产精品一区二区在线观看不卡 | 久久影音资源网| 国产精品大尺度| 亚洲成人av电影在线| 国产乱码精品一区二区三区五月婷| av网站一区二区三区| 6080日韩午夜伦伦午夜伦| 国产成人啪午夜精品网站男同| 不卡一区二区中文字幕| 日韩一区二区影院| 亚洲视频一区二区在线观看| 日韩精品福利网| 97精品久久久久中文字幕| 欧美一级一区二区| 国产精品美女久久久久aⅴ国产馆| 亚洲愉拍自拍另类高清精品| 国产在线视频一区二区三区| 欧美最猛性xxxxx直播| 国产日韩av一区| 免费av成人在线|