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

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

?? layer3.cpp

?? < VC++視頻音頻開發(fā)>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
								lines = -10;
							}

							lines--;
							i--;

						} // while (lines > 0)

					} // for (sfb=12 ...
					sfb = sfbcnt + 1;

					if (sfb > max_sfb)
						max_sfb = sfb;

					while(sfb < 12) {
               	temp = sfBandIndex[sfreq].s[sfb];
               	sb   = sfBandIndex[sfreq].s[sfb+1] - temp;
                  i    = (temp << 2) - temp + j * sb;

						for ( ; sb > 0; sb--) {
                  	is_pos[i] = scalefac[1].s[j][sfb];
							if (is_pos[i] != 7)
                     	if (lsf)
                           i_stereo_k_values(is_pos[i], io_type, i);
                        else
                        	is_ratio[i] = TAN12[is_pos[i]];

							i++;
						} // for (; sb>0...
						sfb++;
					} // while (sfb < 12)
					sfb = sfBandIndex[sfreq].s[10];
               sb  = sfBandIndex[sfreq].s[11] - sfb;
               sfb = (sfb << 2) - sfb + j * sb;
               temp  = sfBandIndex[sfreq].s[11];
               sb = sfBandIndex[sfreq].s[12] - temp;
               i = (temp << 2) - temp + j * sb;

					for (; sb > 0; sb--) {
               	is_pos[i] = is_pos[sfb];

		            if (lsf) {
		               k[0][i] = k[0][sfb];
				         k[1][i] = k[1][sfb];
		            } else {
     						is_ratio[i] = is_ratio[sfb];
                  }
						i++;
					} // for (; sb > 0 ...
				 }
				 if (max_sfb <= 3) {
                i = 2;
					 ss = 17;
					 sb = -1;
					 while (i >= 0) {
                	if (ro[1][i][ss] != 0.0f) {
                   	 sb = (i<<4) + (i<<1) + ss;
							 i = -1;
						} else {
                      ss--;
							 if (ss < 0) {
                         i--;
								 ss = 17;
							 }
						} // if (ro ...
					 } // while (i>=0)
					 i = 0;
					 while (sfBandIndex[sfreq].l[i] <= sb)
						 i++;
					 sfb = i;
					 i = sfBandIndex[sfreq].l[i];
					 for (; sfb<8; sfb++) {
                   sb = sfBandIndex[sfreq].l[sfb+1]-sfBandIndex[sfreq].l[sfb];
						 for (; sb>0; sb--) {
                      is_pos[i] = scalefac[1].l[sfb];
                   	 if (is_pos[i] != 7)
	                      if (lsf)
                           i_stereo_k_values(is_pos[i], io_type, i);
                         else
                        	is_ratio[i] = TAN12[is_pos[i]];
							 i++;
						 } // for (; sb>0 ...
					 } // for (; sfb<8 ...
				 } // for (j=0 ...
			} else { // if (gr_info->mixed_block_flag)
         	for (uint32 j=0; j<3; j++) {
            	int32 sfbcnt;
					sfbcnt = -1;
					for( sfb=12; sfb >=0; sfb-- )
					{
						temp = sfBandIndex[sfreq].s[sfb];
                  lines = sfBandIndex[sfreq].s[sfb+1] - temp;
                  i = (temp << 2) - temp + (j+1) * lines - 1;

						while (lines > 0) {
							if (ro[1][ss_div[i]][ss_mod[i]] != 0.0f) {
                     	sfbcnt = sfb;
								sfb = -10;
								lines = -10;
							}
							lines--;
							i--;
						} // while (lines > 0) */

					} // for (sfb=12 ...
					sfb = sfbcnt + 1;
					while(sfb<12) {
						temp = sfBandIndex[sfreq].s[sfb];
                  sb   = sfBandIndex[sfreq].s[sfb+1] - temp;
                  i    = (temp << 2) - temp + j * sb;
						for ( ; sb > 0; sb--) {
                  	is_pos[i] = scalefac[1].s[j][sfb];
							if (is_pos[i] != 7)
	                      if (lsf)
                           i_stereo_k_values(is_pos[i], io_type, i);
                         else
                        	is_ratio[i] = TAN12[is_pos[i]];
							i++;
						} // for (; sb>0 ...
						sfb++;
					} // while (sfb<12)

					temp = sfBandIndex[sfreq].s[10];
               temp2= sfBandIndex[sfreq].s[11];
               sb   = temp2 - temp;
               sfb  = (temp << 2) - temp + j * sb;
               sb   = sfBandIndex[sfreq].s[12] - temp2;
               i    = (temp2 << 2) - temp2 + j * sb;

					for (; sb>0; sb--) {
               	is_pos[i] = is_pos[sfb];

		            if (lsf) {
		               k[0][i] = k[0][sfb];
				         k[1][i] = k[1][sfb];
      		      } else {
               		is_ratio[i] = is_ratio[sfb];
                  }
						i++;
					} // for (; sb>0 ...
				} // for (sfb=12
			} // for (j=0 ...
		} else { // if (gr_info->window_switching_flag ...
      	i = 31;
			ss = 17;
			sb = 0;
			while (i >= 0) {
         	if (ro[1][i][ss] != 0.0f) {
            	sb = (i<<4) + (i<<1) + ss;
					i = -1;
				} else {
            	ss--;
					if (ss < 0) {
               	i--;
						ss = 17;
					}
				}
			}
			i = 0;
			while (sfBandIndex[sfreq].l[i] <= sb)
				i++;

			sfb = i;
			i = sfBandIndex[sfreq].l[i];
			for (; sfb<21; sfb++) {
         	sb = sfBandIndex[sfreq].l[sfb+1] - sfBandIndex[sfreq].l[sfb];
         	for (; sb > 0; sb--) {
            	is_pos[i] = scalefac[1].l[sfb];
					if (is_pos[i] != 7)
                  if (lsf)
                     i_stereo_k_values(is_pos[i], io_type, i);
                  else
                   	is_ratio[i] = TAN12[is_pos[i]];
					i++;
				}
			}
			sfb = sfBandIndex[sfreq].l[20];
			for (sb = 576 - sfBandIndex[sfreq].l[21]; (sb > 0) && (i<576); sb--)
			{
         	is_pos[i] = is_pos[sfb]; // error here : i >=576

            if (lsf) {
               k[0][i] = k[0][sfb];
		         k[1][i] = k[1][sfb];
            } else {
  					is_ratio[i] = is_ratio[sfb];
            }
				i++;
			} // if (gr_info->mixed_block_flag)
		} // if (gr_info->window_switching_flag ...
	} // if (i_stereo)

   	i = 0;
		for(sb=0;sb<SBLIMIT;sb++)
			for(ss=0;ss<SSLIMIT;ss++) {
				if (is_pos[i] == 7) {
					if (ms_stereo) {
						lr[0][sb][ss] = (ro[0][sb][ss]+ro[1][sb][ss]) * 0.707106781f;
						lr[1][sb][ss] = (ro[0][sb][ss]-ro[1][sb][ss]) * 0.707106781f;
					} else {
						lr[0][sb][ss] = ro[0][sb][ss];
						lr[1][sb][ss] = ro[1][sb][ss];
					}
				}
				else if (i_stereo) {

            	if (lsf) {
                  lr[0][sb][ss] = ro[0][sb][ss] * k[0][i];
                  lr[1][sb][ss] = ro[0][sb][ss] * k[1][i];
               } else {
               	lr[1][sb][ss] = ro[0][sb][ss] / (real) (1 + is_ratio[i]);
	  				   lr[0][sb][ss] = lr[1][sb][ss] * is_ratio[i];
               }
				}
/*				else {
					printf("Error in stereo processing\n");
				} */
            i++;
			}

    } // channels == 2
}

void LayerIII_Decoder::antialias(uint32 ch, uint32 gr)
{
	int32 sb18, ss, sb18lim;
   gr_info_s *gr_info = &(si->ch[ch].gr[gr]);

	// 31 alias-reduction operations between each pair of sub-bands
	// with 8 butterflies between each pair

	if  (gr_info->window_switching_flag && (gr_info->block_type == 2) &&
		 !gr_info->mixed_block_flag )
       return;

	if (gr_info->window_switching_flag && gr_info->mixed_block_flag &&
	    (gr_info->block_type == 2)) {
      sb18lim = 18;
	} else {
		sb18lim = 558;
   }

   for (sb18=0; sb18 < sb18lim; sb18+=18) {
      for (ss=0;ss<8;ss++) {
      	int32 src_idx1 = sb18 + 17 - ss;
         int32 src_idx2 = sb18 + 18 + ss;
      	real bu = out_1d[src_idx1];
			real bd = out_1d[src_idx2];
			out_1d[src_idx1] = (bu * cs[ss]) - (bd * ca[ss]);
			out_1d[src_idx2] = (bd * cs[ss]) + (bu * ca[ss]);
      }
   }
}

void LayerIII_Decoder::hybrid(uint32 ch, uint32 gr)
{
	real rawout[36];
   uint32 bt;
   int32 sb18;
   gr_info_s *gr_info = &(si->ch[ch].gr[gr]);
   real *tsOut;
   real *prvblk;

   for(sb18=0;sb18<576;sb18+=18) {

		bt = (gr_info->window_switching_flag && gr_info->mixed_block_flag &&
				 (sb18 < 36)) ? 0 : gr_info->block_type;

		tsOut = out_1d + sb18;

		inv_mdct(tsOut, rawout, bt);

		// overlap addition
		prvblk = &prevblck[ch][sb18];

	   tsOut[0]   = rawout[0]  + prvblk[0];
	   prvblk[0]  = rawout[18];
	   tsOut[1]   = rawout[1]  + prvblk[1];
	   prvblk[1]  = rawout[19];
	   tsOut[2]   = rawout[2]  + prvblk[2];
	   prvblk[2]  = rawout[20];
	   tsOut[3]   = rawout[3]  + prvblk[3];
	   prvblk[3]  = rawout[21];
	   tsOut[4]   = rawout[4]  + prvblk[4];
	   prvblk[4]  = rawout[22];
	   tsOut[5]   = rawout[5]  + prvblk[5];
	   prvblk[5]  = rawout[23];
	   tsOut[6]   = rawout[6]  + prvblk[6];
	   prvblk[6]  = rawout[24];
	   tsOut[7]   = rawout[7]  + prvblk[7];
	   prvblk[7]  = rawout[25];
	   tsOut[8]   = rawout[8]  + prvblk[8];
	   prvblk[8]  = rawout[26];
	   tsOut[9]   = rawout[9]  + prvblk[9];
	   prvblk[9]  = rawout[27];
   	tsOut[10]  = rawout[10] + prvblk[10];
   	prvblk[10] = rawout[28];
   	tsOut[11]  = rawout[11] + prvblk[11];
      prvblk[11] = rawout[29];
   	tsOut[12]  = rawout[12] + prvblk[12];
   	prvblk[12] = rawout[30];
   	tsOut[13]  = rawout[13] + prvblk[13];
   	prvblk[13] = rawout[31];
   	tsOut[14]  = rawout[14] + prvblk[14];
   	prvblk[14] = rawout[32];
   	tsOut[15]  = rawout[15] + prvblk[15];
   	prvblk[15] = rawout[33];
   	tsOut[16]  = rawout[16] + prvblk[16];
   	prvblk[16] = rawout[34];
   	tsOut[17]  = rawout[17] + prvblk[17];
   	prvblk[17] = rawout[35];
   }
}

void LayerIII_Decoder::do_downmix()
{
	for (uint32 sb=0; sb<SSLIMIT; sb++) {
   	for (uint32 ss=0; ss<SSLIMIT; ss+=3) {
      	lr[0][sb][ss]   = (lr[0][sb][ss]   + lr[1][sb][ss])   * 0.5f;
      	lr[0][sb][ss+1] = (lr[0][sb][ss+1] + lr[1][sb][ss+1]) * 0.5f;
      	lr[0][sb][ss+2] = (lr[0][sb][ss+2] + lr[1][sb][ss+2]) * 0.5f;
      }
   }
}

void LayerIII_Decoder::decode()
{
	 uint32 nSlots = header->slots();
    uint32 flush_main;
    uint32 gr, ch, ss, sb, sb18;
    int32 main_data_end;
	 int32 bytes_to_discard;
    uint32 i;

	 get_side_info();

    for (i=0; i<nSlots; i++)
    	br->hputbuf(stream->get_bits(8));

    main_data_end = br->hsstell() >> 3; // of previous frame

    if (flush_main = (br->hsstell() & 7)) {
         br->hgetbits(8 - flush_main);
			main_data_end++;
	 }

	 bytes_to_discard = frame_start - main_data_end
							  - si->main_data_begin;

	 frame_start += nSlots;

    if (bytes_to_discard < 0)
			return;

	 if (main_data_end > 4096) {
			frame_start -= 4096;
			br->rewindNbytes(4096);
	 }

	 for (; bytes_to_discard > 0; bytes_to_discard--)
    		br->hgetbits(8);

	 for (gr=0;gr<max_gr;gr++) {

			for (ch=0; ch<channels; ch++) {
           part2_start = br->hsstell();

           if (header->version() == MPEG1)
				  get_scale_factors(ch, gr);
           else  // MPEG-2 LSF
              get_LSF_scale_factors(ch, gr);

			  huffman_decode(ch, gr);
			  dequantize_sample(ro[ch], ch, gr);
			}

         stereo(gr);

         if ((which_channels == downmix) && (channels > 1))
         	do_downmix();

         for (ch=first_channel; ch<=last_channel; ch++) {

         		reorder(lr[ch], ch, gr);
					antialias(ch, gr);
               hybrid(ch, gr);

					for (sb18=18;sb18<576;sb18+=36) // Frequency inversion
                   for (ss=1;ss<SSLIMIT;ss+=2)
                  	  out_1d[sb18 + ss] = -out_1d[sb18 + ss];

					if ((ch == 0) || (which_channels == right)) {
					  for (ss=0;ss<SSLIMIT;ss++) { // Polyphase synthesis
                  	sb = 0;
                 		for (sb18=0; sb18<576; sb18+=18) {
								 filter1->input_sample(out_1d[sb18+ss], sb);
                         sb++;
                     }
                    	filter1->calculate_pcm_samples(buffer);
					  }
					} else {
					  for (ss=0;ss<SSLIMIT;ss++) { // Polyphase synthesis
                  	sb = 0;
                 		for (sb18=0; sb18<576; sb18+=18) {
								 filter2->input_sample(out_1d[sb18+ss], sb);
                         sb++;
                     }
                    	filter2->calculate_pcm_samples(buffer);
					  }

               }
			}	// channels
	 }	// granule

  	 buffer->write_buffer(1);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蝌蚪porny九色| 精品一区二区在线观看| 91免费在线播放| 国产精品久久久久久妇女6080 | 欧美国产精品v| 99这里只有精品| 亚洲人成伊人成综合网小说| 欧美在线你懂的| 丝袜亚洲另类欧美| 精品少妇一区二区三区日产乱码| 久久99国产精品麻豆| 欧美国产综合色视频| 91在线小视频| 首页国产欧美日韩丝袜| 欧美精品一区二区久久久| 成人久久久精品乱码一区二区三区 | 欧美一级黄色片| 国产精品一区久久久久| 中文字幕亚洲不卡| 欧美久久久一区| 国产剧情一区二区三区| 亚洲精品网站在线观看| 日韩视频123| 91最新地址在线播放| 手机精品视频在线观看| 国产欧美精品一区二区色综合朱莉| 91视频免费看| 久久成人18免费观看| 亚洲天天做日日做天天谢日日欢| 欧美老年两性高潮| 成人性色生活片| 亚洲一区二区不卡免费| 精品国产一区二区在线观看| 色综合天天综合网天天狠天天| 日本不卡中文字幕| 国产精品久久久久影院亚瑟| 欧美猛男gaygay网站| 国产成人av资源| 五月天一区二区三区| 亚洲国产高清aⅴ视频| 欧美人与性动xxxx| 成人小视频免费观看| 天堂资源在线中文精品| 欧美国产日产图区| 欧美xxxx老人做受| 91碰在线视频| 福利视频网站一区二区三区| 天天综合网 天天综合色| 国产精品理伦片| 精品国产凹凸成av人网站| 欧美亚洲愉拍一区二区| 成人性生交大片免费看中文| 久久爱www久久做| 亚洲123区在线观看| 亚洲欧洲制服丝袜| 国产婷婷色一区二区三区四区| 欧美日韩国产综合一区二区三区| eeuss鲁片一区二区三区在线观看| 人人精品人人爱| 亚洲一区二区三区四区五区黄| 国产亚洲1区2区3区| 日韩一级视频免费观看在线| 欧美中文字幕一区| 99国产精品视频免费观看| 国产精品正在播放| 国产精品18久久久久久久久久久久| 肉色丝袜一区二区| 婷婷开心激情综合| 五月天婷婷综合| 午夜精彩视频在线观看不卡| 亚洲成人tv网| 亚洲国产精品麻豆| 亚洲综合色视频| 一区二区三区在线免费| 亚洲伦在线观看| 亚洲精品高清在线| 亚洲久草在线视频| 亚洲码国产岛国毛片在线| 最新久久zyz资源站| 亚洲欧美在线视频观看| 亚洲丝袜美腿综合| 亚洲综合网站在线观看| 亚洲综合男人的天堂| 亚洲综合激情另类小说区| 亚洲五码中文字幕| 午夜精品久久一牛影视| 日韩av一级电影| 久久av资源站| 国产成人鲁色资源国产91色综 | 老司机精品视频导航| 美国av一区二区| 精品一区二区三区日韩| 国产一本一道久久香蕉| www.亚洲国产| 欧美三级电影一区| 欧美一级日韩免费不卡| 精品国产乱子伦一区| 欧美激情艳妇裸体舞| 亚洲精品videosex极品| 亚洲成人午夜影院| 激情综合网天天干| 国产成人一级电影| 91福利精品第一导航| 欧美精品在线观看播放| 久久蜜桃av一区二区天堂| 中文字幕av不卡| 一区二区高清免费观看影视大全| 日韩国产精品久久| 国产成人在线视频播放| 欧美性做爰猛烈叫床潮| 欧美成人一区二区| 亚洲色欲色欲www在线观看| 亚洲国产成人tv| 黄色日韩网站视频| 色综合久久88色综合天天6| 日韩一区国产二区欧美三区| 中文字幕不卡的av| 五月天一区二区| 成人午夜电影久久影院| 欧美精选一区二区| 国产精品久久久久久久午夜片 | 自拍偷拍欧美精品| 天堂一区二区在线免费观看| 福利一区二区在线观看| 欧美日本视频在线| 中文字幕日韩av资源站| 美女www一区二区| 色国产精品一区在线观看| 久久综合色婷婷| 亚洲国产精品自拍| 丰满亚洲少妇av| 日韩视频不卡中文| 亚洲一区二区视频在线观看| 国产一区二区按摩在线观看| 欧美午夜一区二区三区免费大片| 国产调教视频一区| 免费三级欧美电影| 色综合天天天天做夜夜夜夜做| 欧美mv和日韩mv国产网站| 亚洲资源在线观看| 北岛玲一区二区三区四区| 久久先锋影音av鲁色资源网| 香蕉影视欧美成人| 色婷婷av一区二区三区gif| 欧美激情一区不卡| 激情综合一区二区三区| 91精品国产手机| 亚洲v中文字幕| 在线亚洲一区观看| 亚洲视频资源在线| 成人免费视频caoporn| 久久新电视剧免费观看| 久久99日本精品| 91精品国产综合久久婷婷香蕉| 亚洲日本电影在线| 粉嫩aⅴ一区二区三区四区| 精品99999| 激情图片小说一区| 欧美大胆人体bbbb| 日韩电影免费在线| 欧美一级日韩不卡播放免费| 婷婷综合在线观看| 欧美日韩在线播放三区四区| 亚洲一区中文日韩| 91国产福利在线| 夜夜精品浪潮av一区二区三区| 波多野结衣的一区二区三区| 中文幕一区二区三区久久蜜桃| 国产黄人亚洲片| 中文字幕成人在线观看| 成人app软件下载大全免费| 国产精品亲子伦对白| 成人一区二区视频| 中文字幕一区二区三区精华液 | 亚洲国产精品自拍| 欧美日本在线观看| 青青草精品视频| 精品久久久久久综合日本欧美| 久久97超碰色| 久久久久国产精品人| 成人综合在线观看| 亚洲欧美日韩人成在线播放| 色成人在线视频| 天堂一区二区在线| 精品国产一区二区三区av性色| 精品一区二区免费| 国产午夜久久久久| 色综合久久久久久久| 五月天婷婷综合| 久久久亚洲午夜电影| www.成人网.com| 亚洲成人免费av| 欧美精品一区二区三| 99久久精品免费| 午夜一区二区三区视频| 精品日韩欧美在线| 成人av网站免费观看| 夜色激情一区二区| 精品美女被调教视频大全网站| 福利一区二区在线|