#ifndef PCM_H_
#define PCM_H_
#include "Stdafw.h"
/*音频格式*/
typedef enum {
MP3_FMT = 0,
AMR_FMT,
PCM_FMT,
}E_PCM_FORMAT;
/*WAV音频文件头格式*/
#define ID_RIFF 0x46464952
#define ID_WAVE 0x45564157
#define ID_FMT 0x20746d66
#define ID_DATA 0x61746164
#define FORMAT_PCM 1
typedef struct wav_header {
u32 m_riff_id;
u32 m_riff_sz;
u32 m_riff_fmt;
u32 m_fmt_id;
u32 m_fmt_sz;
u16 m_audio_format;
u16 m_num_channels;
u32 m_sample_rate;
u32 m_byte_rate; /* sample_rate * num_channels * bps / 8 */
u16 m_block_align; /* num_channels * bps / 8 */
u16 m_bits_per_sample;
u32 m_data_id;
u32 m_data_sz;
}t_wav_header;
/*AMR音频文件头格式*/
typedef struct amr_header {
u8 m_amr_hdr[6];
}t_amr_header;
/*音频文件属性*/
struct t_pcm_file
{
char* m_filename; //文件名
FILE* m_fp; //文件句柄
u8 m_Crc; //文件校验
u32 m_MediaId; //媒体标志id
E_PCM_FORMAT m_Format; //文件格式
u32 m_FileTotalSize; //文件总大小
u32 m_FileSize; //当前文件大小
};
/*创建音频文件*/
int pcmfile_create(struct t_pcm_file* pp_pcm_file, const E_PCM_FORMAT vp_format);
/*设置wav头*/
int wav_header_set(FILE* pp_fp);
/*设置amr头*/
int amr_header_set(FILE* pp_fp);
#endif