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

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

?? decode.c

?? arm的板子很多人都在用
?? 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一区二区三区免费野_久草精品视频
国产精品久久久久精k8| 久久99精品国产91久久来源| 国产清纯在线一区二区www| 日韩一级片在线播放| 欧美日韩精品是欧美日韩精品| 欧美伊人精品成人久久综合97| 日本国产一区二区| 在线欧美小视频| 色欧美片视频在线观看| 色素色在线综合| 在线观看免费成人| 欧美日韩国产综合一区二区三区 | 国产精品99久久久久久久女警| 午夜欧美2019年伦理| 丝袜美腿高跟呻吟高潮一区| 亚洲成人激情社区| 免费成人在线观看| 久久99精品国产.久久久久久| 精品写真视频在线观看| 欧美一区二区成人6969| 日韩欧美一二区| 久久精品人人爽人人爽| 中文在线一区二区| 亚洲精品你懂的| 视频在线在亚洲| 精品一区二区三区日韩| 高清国产一区二区| 色嗨嗨av一区二区三区| 欧美一区二区三区的| 欧美成人精精品一区二区频| 国产欧美日韩视频在线观看| 亚洲啪啪综合av一区二区三区| 亚洲综合一区二区精品导航| 日韩精品一区第一页| 国产美女娇喘av呻吟久久| 不卡视频在线看| 欧美日本视频在线| www激情久久| 亚洲欧美激情插| 免费观看91视频大全| 高清免费成人av| 欧美日韩激情一区二区| 久久久精品蜜桃| 亚洲资源在线观看| 国产一区二区三区免费观看| 91亚洲国产成人精品一区二三 | 亚洲乱码一区二区三区在线观看| 午夜不卡av在线| 国产成人自拍网| 欧美日韩大陆在线| 国产日产欧产精品推荐色| 亚洲精品高清在线| 久久97超碰色| 欧美在线免费视屏| 久久久久久久综合色一本| 亚洲高清视频在线| 国产**成人网毛片九色 | 亚洲综合小说图片| 国产一区在线观看视频| 欧美视频一区二区三区| 国产三级一区二区| 日韩电影一区二区三区| 91原创在线视频| 久久久久久一二三区| 性做久久久久久免费观看| 成人精品视频一区| 日韩精品一区二区三区在线观看| 国产精品久久影院| 韩国成人在线视频| 欧美一区二区在线免费播放| 最新不卡av在线| 国产98色在线|日韩| 91精品国产色综合久久ai换脸| |精品福利一区二区三区| 韩国av一区二区三区| 欧美一区二区三区四区在线观看| 日韩一区有码在线| 国产69精品一区二区亚洲孕妇| 欧美一二三区在线观看| 亚洲午夜在线视频| 色综合天天视频在线观看| 国产午夜精品理论片a级大结局 | 成人免费精品视频| 欧美不卡视频一区| 日本vs亚洲vs韩国一区三区二区| 色综合夜色一区| 欧美高清在线视频| 国产综合一区二区| 日韩久久久精品| 青娱乐精品视频| 8v天堂国产在线一区二区| 一区二区三区中文在线观看| 97久久超碰国产精品| 国产精品国产三级国产专播品爱网| 国产一区二区成人久久免费影院| 日韩欧美国产高清| 久草精品在线观看| 日韩欧美亚洲国产精品字幕久久久 | 久久午夜羞羞影院免费观看| 免费成人美女在线观看.| 在线播放一区二区三区| 五月婷婷色综合| 欧美日韩成人高清| 日日摸夜夜添夜夜添亚洲女人| 欧美精品久久久久久久多人混战 | 欧美一区二区三区四区五区| 日韩中文字幕区一区有砖一区 | 亚洲午夜一二三区视频| 91福利国产精品| 亚洲电影你懂得| 欧美精品日韩一区| 蜜桃av噜噜一区二区三区小说| 91精品国产色综合久久久蜜香臀| 免费一区二区视频| 久久免费美女视频| 成人精品视频一区二区三区| 最新不卡av在线| 欧美性一二三区| 青青青爽久久午夜综合久久午夜| 精品少妇一区二区三区在线视频| 九九**精品视频免费播放| 久久久久久9999| 99精品黄色片免费大全| 一区二区三区四区五区视频在线观看| 欧美性猛片xxxx免费看久爱| 视频一区欧美精品| 丝袜美腿高跟呻吟高潮一区| 欧美mv日韩mv国产| 高清av一区二区| 亚洲猫色日本管| 91精品国产综合久久久久久漫画| 蜜桃av噜噜一区二区三区小说| 久久久久久久久久久黄色| 不卡的av电影在线观看| 亚洲国产人成综合网站| 日韩欧美中文字幕精品| 国产91精品免费| 一区二区三区高清| 欧美大片拔萝卜| 成人免费看片app下载| 亚洲高清免费视频| 欧美变态口味重另类| 成人丝袜18视频在线观看| 亚洲综合免费观看高清完整版| 日韩欧美一级二级三级久久久| 国产成人自拍网| 亚洲一区免费观看| 亚洲精品在线观看网站| 91麻豆国产自产在线观看| 日本成人在线不卡视频| 中文字幕不卡三区| 在线成人免费观看| 成人免费电影视频| 亚洲bt欧美bt精品777| 国产色一区二区| 欧美日韩午夜在线视频| 国产精品18久久久久久vr| 亚洲自拍另类综合| 国产欧美精品一区二区色综合| 欧美午夜寂寞影院| 丁香啪啪综合成人亚洲小说| 午夜精品一区二区三区三上悠亚| 久久久久久亚洲综合| 欧美午夜电影网| 东方欧美亚洲色图在线| 日本sm残虐另类| 国产精品福利在线播放| 日韩欧美黄色影院| 欧美网站一区二区| 成人动漫av在线| 精品一区二区在线播放| 亚洲国产日产av| 亚洲三级在线免费| 国产麻豆成人传媒免费观看| 亚洲永久精品国产| 国产精品久久一级| 久久人人97超碰com| 日韩三级视频在线看| 欧美日韩在线播放三区| 99免费精品视频| 国产黑丝在线一区二区三区| 日本 国产 欧美色综合| 亚洲免费大片在线观看| 中文字幕第一区综合| 精品成人一区二区三区四区| 69久久99精品久久久久婷婷| 日本精品一区二区三区四区的功能| 国产精品99久久久久久似苏梦涵| 日本午夜一本久久久综合| 亚洲一区电影777| 亚洲乱码一区二区三区在线观看| 亚洲国产精品精华液2区45| 欧美电视剧在线观看完整版| 51精品视频一区二区三区| 欧美日韩国产一二三| 欧美亚洲综合另类| 欧洲av一区二区嗯嗯嗯啊| 色哟哟国产精品免费观看| 99视频一区二区| 97se亚洲国产综合在线|