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

📄 mp3decode.h

📁 基于mips架构的ATI-XILLEON 226的mp3解码程序
💻 H
字号:
#ifndef _MP3DECODE_H_

#define _MP3DECODE_H_



#include <feedbuffer.h>



#ifdef __cplusplus

extern "C"

{

#endif





typedef struct tagMp3Info

{

	int mpeg ;		/* 1--mpegI 2--mpegII */

	int layer ;		/* 1--LayerI 2--LayerII 3--LayerIII */

	int channel ; 		/* 1--monoChannel, 2--stereoChannel, 3--threeChannel ... */

	int bitRate ;

	int sampleRate ;

	int nBitsPerSample ;

	int frameSize ; 	/* frame size in bytes */

	int totalSecs ;



	char title[32] ;

	char artist[32] ;

	char album[32] ;

	char comment[32] ;

} Mp3Info_t, *pMp3Info_t ;



typedef struct 

{

	int notIgnoreCrc ;		/* 0--Ignore, other--not Ignore  

						***DEFAULT: Ignore */

	int halfSamRateDecode ; /* 0--Full sampleRate decode, other--Half sampleRate decode 

						***DEFAULT: Full sampleRate decode */

	int decodeChannel ; 	/* 1--LeftChannel, 2--RightChannel, 3--LeftRightChannel ...

						***DEFAULT: LeftRightChannel */	/* flag by bit */

} Mp3Option_t, *pMp3Option_t ;



#define Mp3DecodeHandle unsigned long





/*====================================================*/

/*

	功能:

		打开解码库

	参数:

		buf_size: 指定使用的缓冲大小(最少8K)

	返回值:

		句柄 (>0 正确)		

	特别说明:

		

*/

Mp3DecodeHandle mp3_decode_open(BUFFER_HANDLE handle,int buf_size) ;





/*====================================================*/

/*

	功能:

		设置解码参数

	参数:

		handle:		mp3_deocde_open()返回的句柄

		p_mp3_option:	要设置的解码参数结构指针

	返回值:

		0 正确,其它 出错

	特别说明:

		

*/

int mp3_decode_set(Mp3DecodeHandle handle, Mp3Option_t *p_mp3_option) ;





/*====================================================*/

/*

	功能:

		取得Mp3解码后的相关参数

	参数:

		handle:		mp3_deocde_open()返回的句柄

		p_mp3_info:	mp3流相关信息结构指针

	返回值:

		0 正确,其它 出错

	特别说明:

		函数只有第一次成功调用mp3_decode_read()后才可能调用成功

		

*/

int mp3_decode_get(Mp3DecodeHandle handle, Mp3Info_t *p_mp3_info) ;





/*====================================================*/

/*

	功能:

		写入Mp3原始数据到缓冲区。

	参数:

		handle:		mp3_deocde_open()返回的句柄

		data:		数据

		size:		写入的数据大小

	返回值:

		返回成功写入的字节数

	特别说明:

		如果写入后缓冲已満,则size参数与返回值可能不同

		

*/

int mp3_decode_write(Mp3DecodeHandle handle, char *data, int size) ;





/*====================================================*/

/*

	功能:

		从缓冲区中读取解码后的一帧数据到指定的缓冲区

	参数:

		handle:		mp3_deocde_open()返回的句柄

		buf:		装载解码后16Bit-Pcm数据的缓冲区

		buf_size:	缓冲区大小

		out_len:	已经解出的字节数

	返回值:

		>0: 可恢复的错误,如缓冲欠载(数据不够)(这种情况下请及时填充输入缓冲区)、

				  输出缓冲区不够大。

		0: 正确

		<0: fatal错误(不可恢复),请调用mp3_decode_close()关闭解码库

	特别说明:

		

		mp3_decode_read_frame()必须在mp3_decode_write()成功调用后调用,

		为提高性能,最好在缓冲区被成功注"満"后调用。

		

*/

int mp3_decode_read_frame(Mp3DecodeHandle handle, char *buf, int buf_size, int *out_len) ;





/*====================================================*/

/*

	功能:

		从缓冲区中读取解码后的数据到指定的缓冲区

	参数:

		handle:		mp3_deocde_open()返回的句柄

		buf:		装载解码后Pcm数据的缓冲区

		buf_size:	缓冲区大小

		frames:		要解码的帧数

		out_len:	已经解出的字节数

		out_frames:	已经解出的帧数

	返回值:

		>0: 可恢复的错误,如缓冲欠载(数据不够)(这种情况下请及时填充输入缓冲区)、

				  输出缓冲区不够大。

		0: 正确

		<0: fatal错误(不可恢复),请调用mp3_decode_close()关闭解码库

	特别说明:

		

		mp3_decode_read()必须在mp3_decode_write()成功调用后调用,

		为提高性能,最好在缓冲区被成功注"満"后调用。

		

*/

int mp3_decode_read(Mp3DecodeHandle handle, char *buf, int buf_size, int frames, int *out_len, int *out_frames) ;

int mp3_decode_read2(Mp3DecodeHandle handle, char *buf, int buf_size);





/*====================================================*/

/*

	功能:

		关闭解码库

	参数:

		handle:		mp3_deocde_open()返回的句柄

	返回值:

		0 正确,其它 出错

	特别说明:

*/

int mp3_decode_close(Mp3DecodeHandle handle) ;





#ifdef __cplusplus

}

#endif

#endif

⌨️ 快捷键说明

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