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

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

?? quantize-pvt.c

?? MP3編碼的完整實(shí)現(xiàn)(源代碼和使用例子都有)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):



/*************************************************************************/
/*            scale_bitcount                                             */
/*************************************************************************/

/* Also calculates the number of bits necessary to code the scalefactors. */

int scale_bitcount( III_scalefac_t *scalefac, gr_info *cod_info)
{
    int i, k, sfb, max_slen1 = 0, max_slen2 = 0, /*a, b, */ ep = 2;

    static int slen1[16] = { 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8,16,16 };
    static int slen2[16] = { 1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8 };

    static int slen1_tab[16] = {0,
	18, 36, 54, 54, 36, 54, 72, 54, 72, 90, 72, 90,108,108,126
    };
    static int slen2_tab[16] = {0,
	10, 20, 30, 33, 21, 31, 41, 32, 42, 52, 43, 53, 63, 64, 74
    };
    int *tab;


    if ( cod_info->block_type == SHORT_TYPE )
    {
            tab = slen1_tab;
            /* a = 18; b = 18;  */
            for ( i = 0; i < 3; i++ )
            {
                for ( sfb = 0; sfb < 6; sfb++ )
                    if (scalefac->s[sfb][i] > max_slen1 )
                        max_slen1 = scalefac->s[sfb][i];
                for (sfb = 6; sfb < SBPSY_s; sfb++ )
                    if ( scalefac->s[sfb][i] > max_slen2 )
                        max_slen2 = scalefac->s[sfb][i];
            }
    }
    else
    { /* block_type == 1,2,or 3 */
        tab = slen2_tab;
        /* a = 11; b = 10;   */
        for ( sfb = 0; sfb < 11; sfb++ )
            if ( scalefac->l[sfb] > max_slen1 )
                max_slen1 = scalefac->l[sfb];

	if (!cod_info->preflag) {
	    for ( sfb = 11; sfb < SBPSY_l; sfb++ )
		if (scalefac->l[sfb] < pretab[sfb])
		    break;

	    if (sfb == SBPSY_l) {
		cod_info->preflag = 1;
		for ( sfb = 11; sfb < SBPSY_l; sfb++ )
		    scalefac->l[sfb] -= pretab[sfb];
	    }
	}

        for ( sfb = 11; sfb < SBPSY_l; sfb++ )
            if ( scalefac->l[sfb] > max_slen2 )
                max_slen2 = scalefac->l[sfb];
    }



    /* from Takehiro TOMINAGA <tominaga@isoternet.org> 10/99
     * loop over *all* posible values of scalefac_compress to find the
     * one which uses the smallest number of bits.  ISO would stop
     * at first valid index */
    cod_info->part2_length = LARGE_BITS;
    for ( k = 0; k < 16; k++ )
    {
        if ( (max_slen1 < slen1[k]) && (max_slen2 < slen2[k]) &&
             ((int)cod_info->part2_length > tab[k])) {
	  cod_info->part2_length=tab[k];
	  cod_info->scalefac_compress=k;
	  ep=0;  /* we found a suitable scalefac_compress */
	}
    }
    return ep;
}



/*
  table of largest scalefactors (number of bits) for MPEG2
*/
/*
static unsigned max_sfac_tab[6][4] =
{
    {4, 4, 3, 3},
    {4, 4, 3, 0},
    {3, 2, 0, 0},
    {4, 5, 5, 0},
    {3, 3, 3, 0},
    {2, 2, 0, 0}
};
*/
/*
  table of largest scalefactor values for MPEG2
*/
static unsigned max_range_sfac_tab[6][4] =
{
 { 15, 15, 7,  7},
 { 15, 15, 7,  0},
 { 7,  3,  0,  0},
 { 15, 31, 31, 0},
 { 7,  7,  7,  0},
 { 3,  3,  0,  0}
};





/*************************************************************************/
/*            scale_bitcount_lsf                                         */
/*************************************************************************/

/* Also counts the number of bits to encode the scalefacs but for MPEG 2 */ 
/* Lower sampling frequencies  (24, 22.05 and 16 kHz.)                   */
 
/*  This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS,     */
/* "Audio Decoding Layer III"                                            */

int scale_bitcount_lsf(III_scalefac_t *scalefac, gr_info *cod_info)
{
    int table_number, row_in_table, partition, nr_sfb, window, over;
    int i, sfb, max_sfac[ 4 ];
    unsigned *partition_table;

    /*
      Set partition table. Note that should try to use table one,
      but do not yet...
    */
    if ( cod_info->preflag )
	table_number = 2;
    else
	table_number = 0;

    for ( i = 0; i < 4; i++ )
	max_sfac[i] = 0;

    if ( cod_info->block_type == SHORT_TYPE )
    {
	    row_in_table = 1;
	    partition_table = &nr_of_sfb_block[table_number][row_in_table][0];
	    for ( sfb = 0, partition = 0; partition < 4; partition++ )
	    {
		nr_sfb = partition_table[ partition ] / 3;
		for ( i = 0; i < nr_sfb; i++, sfb++ )
		    for ( window = 0; window < 3; window++ )
			if ( scalefac->s[sfb][window] > max_sfac[partition] )
			    max_sfac[partition] = scalefac->s[sfb][window];
	    }
    }
    else
    {
	row_in_table = 0;
	partition_table = &nr_of_sfb_block[table_number][row_in_table][0];
	for ( sfb = 0, partition = 0; partition < 4; partition++ )
	{
	    nr_sfb = partition_table[ partition ];
	    for ( i = 0; i < nr_sfb; i++, sfb++ )
		if ( scalefac->l[sfb] > max_sfac[partition] )
		    max_sfac[partition] = scalefac->l[sfb];
	}
    }

    for ( over = 0, partition = 0; partition < 4; partition++ )
    {
	if ( max_sfac[partition] > (int)max_range_sfac_tab[table_number][partition] )
	    over++;
    }
    if ( !over )
    {
	/*
	  Since no bands have been over-amplified, we can set scalefac_compress
	  and slen[] for the formatter
	*/
	static int log2tab[] = { 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 };

	unsigned slen1, slen2, slen3, slen4;

        cod_info->sfb_partition_table = &nr_of_sfb_block[table_number][row_in_table][0];
	for ( partition = 0; partition < 4; partition++ )
	    cod_info->slen[partition] = log2tab[max_sfac[partition]];

	/* set scalefac_compress */
	slen1 = cod_info->slen[ 0 ];
	slen2 = cod_info->slen[ 1 ];
	slen3 = cod_info->slen[ 2 ];
	slen4 = cod_info->slen[ 3 ];

	switch ( table_number )
	{
	  case 0:
	    cod_info->scalefac_compress = (((slen1 * 5) + slen2) << 4)
		+ (slen3 << 2)
		+ slen4;
	    break;

	  case 1:
	    cod_info->scalefac_compress = 400
		+ (((slen1 * 5) + slen2) << 2)
		+ slen3;
	    break;

	  case 2:
	    cod_info->scalefac_compress = 500 + (slen1 * 3) + slen2;
	    break;

	  default:
	    fprintf( stderr, "intensity stereo not implemented yet\n" );
	    exit( EXIT_FAILURE );
	    break;
	}
    }
#ifdef DEBUG
    if ( over ) 
        printf( "---WARNING !! Amplification of some bands over limits\n" );
#endif
    if (!over) {
      assert( cod_info->sfb_partition_table );     
      cod_info->part2_length=0;
      for ( partition = 0; partition < 4; partition++ )
	cod_info->part2_length += cod_info->slen[partition] * cod_info->sfb_partition_table[partition];
    }
    return over;
}





/*************************************************************************/
/*            calc_xmin                                                  */
/*************************************************************************/

/*
  Calculate the allowed distortion for each scalefactor band,
  as determined by the psychoacoustic model.
  xmin(sb) = ratio(sb) * en(sb) / bw(sb)

  returns number of sfb's with energy > ATH
*/
int calc_xmin( lame_global_flags *gfp,FLOAT8 xr[576], III_psy_ratio *ratio,
	       gr_info *cod_info, III_psy_xmin *l3_xmin)
{
    int start, end, bw,l, b, ath_over=0;
	u_int	sfb;
    FLOAT8 en0, xmin, ener;

    if (gfp->ATHonly) {    
      for ( sfb = cod_info->sfb_smax; sfb < SBPSY_s; sfb++ )
	  for ( b = 0; b < 3; b++ )
	      l3_xmin->s[sfb][b]=ATH_s[sfb];
      for ( sfb = 0; sfb < cod_info->sfb_lmax; sfb++ )
	  l3_xmin->l[sfb]=ATH_l[sfb];

    }else{

      for ( sfb = cod_info->sfb_smax; sfb < SBPSY_s; sfb++ ) {
	start = scalefac_band.s[ sfb ];
        end   = scalefac_band.s[ sfb + 1 ];
	bw = end - start;
        for ( b = 0; b < 3; b++ ) {
	  for (en0 = 0.0, l = start; l < end; l++) {
	    ener = xr[l * 3 + b];
	    ener = ener * ener;
	    en0 += ener;
	  }
	  en0 /= bw;

	  xmin = ratio->en.s[sfb][b];
	  if (xmin > 0.0)
	    xmin = en0 * ratio->thm.s[sfb][b] * masking_lower / xmin;

#ifdef RH_ATH
          /* do not mix up ATH masking with GPSYCHO thresholds
	   */
	  l3_xmin->s[sfb][b] = Max(1e-20, xmin);
#else
	  l3_xmin->s[sfb][b] = Max(ATH_s[sfb], xmin);
#endif
	  if (en0 > ATH_s[sfb]) ath_over++;
	}
      }

      for ( sfb = 0; sfb < cod_info->sfb_lmax; sfb++ ){
	start = scalefac_band.l[ sfb ];
	end   = scalefac_band.l[ sfb+1 ];
	bw = end - start;

        for (en0 = 0.0, l = start; l < end; l++ ) {
	  ener = xr[l] * xr[l];
	  en0 += ener;
	}
	en0 /= bw;

	xmin = ratio->en.l[sfb];
	if (xmin > 0.0)
	  xmin = en0 * ratio->thm.l[sfb] * masking_lower / xmin;


#ifdef RH_ATH
        /* do not mix up ATH masking with GPSYCHO thresholds
	 */
	l3_xmin->l[sfb]=Max(1e-20, xmin);
#else
	l3_xmin->l[sfb]=Max(ATH_l[sfb], xmin);
#endif
	if (en0 > ATH_l[sfb]) ath_over++;
      }
    }
    return ath_over;
}



/*************************************************************************/
/*            loop_break                                                 */
/*************************************************************************/

/*  Function: Returns zero if there is a scalefac which has not been
    amplified. Otherwise it returns one. 
*/

int loop_break( III_scalefac_t *scalefac, gr_info *cod_info)
{
    int i;
	u_int sfb;

    for ( sfb = 0; sfb < cod_info->sfb_lmax; sfb++ )
        if ( scalefac->l[sfb] == 0 )
	    return 0;

    for ( sfb = cod_info->sfb_smax; sfb < SBPSY_s; sfb++ )
      for ( i = 0; i < 3; i++ ) 
            if ( scalefac->s[sfb][i] == 0 )
		return 0;

    return 1;
}













/*
 ----------------------------------------------------------------------
  if someone wants to try to find a faster step search function,
  here is some code which gives a lower bound for the step size:
  
  for (max_xrspow = 0, i = 0; i < 576; ++i)
  {
    max_xrspow = Max(max_xrspow, xrspow[i]);
  }
  lowerbound = 210+log10(max_xrspow/IXMAX_VAL)/(0.1875*LOG2);
 
 
                                                 Robert.Hegemann@gmx.de
 ----------------------------------------------------------------------
*/


typedef enum {
    BINSEARCH_NONE,
    BINSEARCH_UP, 
    BINSEARCH_DOWN
} binsearchDirection_t;

/*-------------------------------------------------------------------------*/
int 
bin_search_StepSize2 (lame_global_flags *gfp,int desired_rate, int start, int *ix, 
                      FLOAT8 xrspow[576], gr_info *cod_info)
/*-------------------------------------------------------------------------*/
{
    static int CurrentStep = 4;
    int nBits;
    int flag_GoneOver = 0;
    int StepSize = start;
    binsearchDirection_t Direction = BINSEARCH_NONE;

    do
    {
	cod_info->global_gain = StepSize;
	nBits = count_bits(gfp,ix, xrspow, cod_info);  

	if (CurrentStep == 1 )
        {
	    break; /* nothing to adjust anymore */
	}
	if (flag_GoneOver)
	{
	    CurrentStep /= 2;
	}
	if (nBits > desired_rate)  /* increase Quantize_StepSize */
	{
	    if (Direction == BINSEARCH_DOWN && !flag_GoneOver)
	    {
		flag_GoneOver = 1;
		CurrentStep /= 2; /* late adjust */
	    }
	    Direction = BINSEARCH_UP;
	    StepSize += CurrentStep;
	    if (StepSize > 255) break;
	}
	else if (nBits < desired_rate)
	{
	    if (Direction == BINSEARCH_UP && !flag_GoneOver)
	    {
		flag_GoneOver = 1;
		CurrentStep /= 2; /* late adjust */
	    }
	    Direction = BINSEARCH_DOWN;
	    StepSize -= CurrentStep;
	    if (StepSize < 0) break;
	}
	else break; /* nBits == desired_rate;; most unlikely to happen.*/
    } while (1); /* For-ever, break is adjusted. */

    CurrentStep = abs(start - StepSize);
    
    if (CurrentStep >= 4) {
	CurrentStep = 4;
    } else {
	CurrentStep = 2;
    }

    return nBits;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re6这里只有精品视频在线观看| 国产欧美一区二区在线| 精品久久久久久久久久久久包黑料| 久久在线免费观看| 日本中文在线一区| 91网站在线播放| 精品成人私密视频| 日韩va欧美va亚洲va久久| 99久久99久久精品免费观看| 欧美精品一区二区精品网| 夜夜嗨av一区二区三区| 99视频一区二区三区| 日韩视频免费观看高清完整版| 亚洲精品视频在线观看网站| 国产电影精品久久禁18| 精品欧美久久久| 美女在线视频一区| 欧美群妇大交群的观看方式| 亚洲一本大道在线| 在线观看免费亚洲| 亚洲国产日韩精品| 97国产精品videossex| 国产欧美日韩在线观看| 国产露脸91国语对白| 精品日韩在线一区| 美女脱光内衣内裤视频久久网站| 69久久夜色精品国产69蝌蚪网| 亚洲国产一区二区视频| 欧美日韩成人高清| 日韩精品成人一区二区三区| 欧美老肥妇做.爰bbww视频| 亚洲在线观看免费视频| 欧美性一二三区| 亚洲第一久久影院| 欧美妇女性影城| 五月激情综合色| 欧美一区二区三区的| 久久精品国内一区二区三区| 久久久午夜精品| 国产成+人+日韩+欧美+亚洲| 亚洲国产成人午夜在线一区| 丁香一区二区三区| 自拍偷自拍亚洲精品播放| 欧美中文字幕一二三区视频| 午夜精品在线视频一区| 精品福利在线导航| 福利91精品一区二区三区| 17c精品麻豆一区二区免费| 一本久久综合亚洲鲁鲁五月天| 亚洲国产成人tv| 欧美一级二级在线观看| 国产精品2024| 亚洲人成精品久久久久久| 欧美日韩在线三级| 美女久久久精品| 欧美国产精品劲爆| 欧美午夜影院一区| 蜜桃视频在线观看一区二区| 久久蜜桃av一区二区天堂| 91在线porny国产在线看| 日韩精品国产精品| 欧美国产综合一区二区| 欧美日韩另类国产亚洲欧美一级| 久久99久久99小草精品免视看| 中文字幕一区日韩精品欧美| 欧美夫妻性生活| 成人夜色视频网站在线观看| 亚洲国产cao| 国产欧美日韩三级| 欧美精品粉嫩高潮一区二区| 国产91清纯白嫩初高中在线观看 | 久久久国产午夜精品| 日本黄色一区二区| 黄色日韩网站视频| 洋洋av久久久久久久一区| 精品电影一区二区| 欧美午夜不卡在线观看免费| 国产精品一区免费视频| 亚洲午夜一区二区三区| 国产精品水嫩水嫩| 欧美mv日韩mv国产网站app| 欧洲精品一区二区| 国产成人av一区二区三区在线| 亚洲大尺度视频在线观看| 国产精品青草综合久久久久99| 欧美一区午夜视频在线观看| 一本色道亚洲精品aⅴ| 国产福利视频一区二区三区| 美女在线视频一区| 五月天亚洲婷婷| 玉足女爽爽91| 中文字幕人成不卡一区| 久久婷婷国产综合精品青草| 制服丝袜一区二区三区| 91久久久免费一区二区| 波多野结衣中文字幕一区二区三区| 日本特黄久久久高潮| 亚瑟在线精品视频| 有码一区二区三区| 亚洲视频 欧洲视频| 国产片一区二区三区| 久久综合给合久久狠狠狠97色69| 欧美一区二区在线视频| 欧美精品国产精品| 欧美日韩aaaaa| 欧美日韩精品一区二区天天拍小说 | 国产网站一区二区| 久久一留热品黄| 欧美精品一区二区三区视频 | 久久久久久久久久看片| 91精品国产乱| 欧美一区三区二区| 日韩美女在线视频| 日韩精品一区国产麻豆| 欧美一区二区福利视频| 欧美一区二区三区免费大片| 日韩一级完整毛片| 精品乱人伦小说| 久久久噜噜噜久久人人看| 国产日韩亚洲欧美综合| 国产精品青草久久| 亚洲精品国产精品乱码不99| 亚洲精品视频免费看| 亚洲成在线观看| 日韩黄色免费网站| 久久精品国产免费| 国产精品99久久久久久有的能看| 国产98色在线|日韩| 91在线你懂得| 欧美日韩精品一区二区三区四区 | 国产精品三级久久久久三级| 国产精品久久久久毛片软件| 亚洲欧洲中文日韩久久av乱码| 亚洲高清免费观看| 精品一区二区日韩| 99久久久免费精品国产一区二区| 欧美亚洲一区二区在线| 欧美一区二区三区成人| 国产三区在线成人av| 一区二区视频在线| 秋霞午夜av一区二区三区| 国产一区在线观看麻豆| 99久久综合精品| 91精品中文字幕一区二区三区| 精品999久久久| 亚洲欧美经典视频| 麻豆一区二区99久久久久| www.欧美色图| 欧美群妇大交群的观看方式| 国产日韩影视精品| 亚洲成人综合视频| 国产**成人网毛片九色 | 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久久久久免费丝袜| 一区二区三区中文字幕精品精品| 日本美女视频一区二区| av一本久道久久综合久久鬼色| 欧美日韩高清影院| 欧美国产日韩精品免费观看| 日韩精品免费专区| 99re热这里只有精品免费视频| 日韩一级精品视频在线观看| 亚洲欧美激情插| 国产激情一区二区三区四区| 欧美亚洲国产一区二区三区va| 国产清纯美女被跳蛋高潮一区二区久久w | 69堂精品视频| 亚洲欧洲精品一区二区三区| 久久精品国产999大香线蕉| 91网上在线视频| 久久久久久97三级| 全部av―极品视觉盛宴亚洲| 日本丰满少妇一区二区三区| 国产午夜精品久久| 久久爱另类一区二区小说| 欧美少妇一区二区| 中文字幕一区二区三| 国产精品一色哟哟哟| 日韩一区二区三区在线| 午夜国产不卡在线观看视频| 色妹子一区二区| 国产精品国产三级国产a| 国产91在线看| 久久你懂得1024| 国产做a爰片久久毛片| 日韩美女在线视频| 久久国产剧场电影| 日韩一区二区视频在线观看| 天堂va蜜桃一区二区三区漫画版| 91视频xxxx| 亚洲乱码国产乱码精品精小说| 国产91富婆露脸刺激对白| 久久久噜噜噜久久人人看| 国产一区二区三区日韩 | 国产成人亚洲综合a∨婷婷 | 亚洲综合在线免费观看| 91麻豆国产精品久久| 亚洲欧美日韩一区二区 | av电影在线不卡| 国产精品二区一区二区aⅴ污介绍|