📄 mp3decode.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 + -