⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpegsub.c

📁 mp3解码源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
					MULT0;					MULT1;					MULT1;					STORE;				}				break;			case 3:				while (j--) {					MULTS;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			}		} else if (mpegsub->w_width <= 8) {			switch (cnt0) {			case 0:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					STORE;				}				break;			case 1:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					STORE;				}				break;			case 2:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					STORE;				}				break;			case 3:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 4:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 5:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 6:				while (j--) {					MULTS;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 7:				while (j--) {					MULTS;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			}		} else {			switch (cnt0) {			case 0:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					STORE;				}				break;			case 1:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					STORE;				}				break;			case 2:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					STORE;				}				break;			case 3:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 4:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 5:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 6:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 7:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 8:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 9:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 10:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 11:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 12:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 13:				while (j--) {					MULTS;					MULT0;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 14:				while (j--) {					MULTS;					MULT0;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			case 15:				while (j--) {					MULTS;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					MULT1;					STORE;				}				break;			}		}	}	mpegsub->b_offset[channel] = (b_offset - 1) & 15;	return(mpegsub->pcm_count);}/****************************************************************************//* *	Reset the MPEGSUB module */int MPEGSUB_reset(MPEGSUB *mpegsub){	INT16 ch;	if (!mpegsub)		return(-1);	// Reset sub band buffer	memset(mpegsub->bb, 0, MPA_MAX_CHANNELS * 2 * MPA_HANNING_SIZE *	       sizeof(MPEGAUD_FRACT_TYPE));	// Reset offsets	for (ch = 0; ch < MPA_MAX_CHANNELS; ch++)		mpegsub->b_offset[ch] = 0;	return(0);}/****************************************************************************//* *	Set the scale of the output of synthesis filter *	input: scale_percent = scale in % (100 is nominal value) *	return 0 if Ok */int MPEGSUB_scale(MPEGSUB *mpegsub, INT32 scale_percent){	INT16 i;	if (mpegsub->scale_percent == scale_percent)		return(0);	if (scale_percent <= 0)		return(-1);	if (scale_percent > 10000)		return(-2);#ifdef MPEGAUD_INT	{		INT32 s, c;		s = MPEGTAB_DEW_BITS;		c = scale_percent;		while ((c <= 50) && (s < 17)) {			c <<= 1;			s++;		}		while ((c > 100) && (s > 2)) {			c >>= 1;			s--;		}		if (s == 2)			c = 100;	// Limit max scale		mpegsub->scaled_shift = s;		c <<= 14;		c /= 100;		for (i = 0; i < MPA_HANNING_SIZE; i++) {			mpegsub->scaled_dewindow[i] =				(MPEGTAB_DEW_TYPE) (((INT32)				MPT_dewindow[i] * c) >> 14);		}	}#else	{		REAL coeff;		coeff = (REAL) (scale_percent) * (MPA_SCALE * 0.01);		for (i = 0; i < MPA_HANNING_SIZE; i++) {			mpegsub->scaled_dewindow[i] = MPT_dewindow[i] * coeff;		}	}#endif	mpegsub->scale_percent = scale_percent;	return(0);}/****************************************************************************//* *	Close the MPEGSUB module */void MPEGSUB_close(MPEGSUB *mpegsub){	if (mpegsub)		//ffree(mpegsub);		free(mpegsub);}/****************************************************************************//* *	Open the MPEGSUB module */MPEGSUB *MPEGSUB_open(INT16 freq_div, INT16 quality){	MPEGSUB *mpegsub;	mpegsub = (MPEGSUB *) malloc(sizeof(MPEGSUB));	//mpegsub = (MPEGSUB *) fmalloc(sizeof(MPEGSUB));	if (!mpegsub)		return(NULL);	MPEGSUB_reset(mpegsub);	mpegsub->scale_percent = 0;	MPEGSUB_scale(mpegsub, 100);	switch (freq_div) {	case 2:		mpegsub->pcm_count = MPA_SBLIMIT >> 1;		break;	case 4:		mpegsub->pcm_count = MPA_SBLIMIT >> 2;		break;	default:		mpegsub->pcm_count = MPA_SBLIMIT;		freq_div = 1;		break;	}	switch (quality) {	case 0:		mpegsub->w_begin = 6;		mpegsub->w_width = 4;		break;	case 1:		mpegsub->w_begin = 4;		mpegsub->w_width = 8;		break;	default:		mpegsub->w_begin = 0;		mpegsub->w_width = 16;		quality = 2;		break;	}	mpegsub->freq_div = freq_div;	mpegsub->quality = quality;	return(mpegsub);}/****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -