/****************************************************************************** * @file mixer.h * @author Orson * @version V1.0.0 * @date 29-April-2014 * @brief audio mixer ****************************************************************************** * @attention * *

© COPYRIGHT 2013 MVSilicon

*/ #ifndef __MIXER_H__ #define __MIXER_H__ #ifdef __cplusplus extern "C" { #endif//__cplusplus #define MIXER_FORMAT_MONO 1 //单声道音源,每个采样点2个字节 #define MIXER_FORMAT_STERO 2 //双声道音源,每个采样点4个字节 //Mixer模块初始化 //PcmFifoAddr: 必须在PMEM中 void MixerInit(void* PcmFifoAddr, uint16_t PcmFifoSize); //设置Mixer模块内部是否做采样率转换,只对输入通道0有效 //SrcEnable = FALSE:不对输入的PCM数据做采样率转换 //SrcEnable = TRUE: Mixer模块内部将输入的PCM数据采样率统一转换为44.1KHZ void MixerSrcEnable(bool SrcEnable); //使能某个输入通道 void MixerEnable(uint8_t SourceID); //禁止某个输入通道 void MixerDisable(uint8_t SourceID); //动态改变某个通道的音量 //SourceID: 0--3 //LeftVolume: 0--8191, 4095: 0dB, 8191: +6dB //RightVolume: 0--8191, 4095: 0dB, 8191: +6dB void MixerConfigVolume(uint8_t SourceID, uint16_t LeftVolume, uint16_t RightVolume); //MUTE某个输入通道 void MixerMute(uint8_t SourceID); //UNMUTE某个输入通道 void MixerUnmute(uint8_t SourceID); //动态改变某个通道的采样率与格式 //SourceID: 0--3 //SampleRate: 采样率,输入源0支持9种采样率,其他输入源只支持44.1KHZ采样率 //PcmFormat: 1--单声道,2--双声道 void MixerConfigFormat(uint8_t SourceID, uint16_t SampleRate, uint8_t PcmFormat); //检查某通道是否可以设置新的数据 bool MixerIsDone(uint8_t SourceID); //SourceID: 0--3 //PcmBuf: PCM缓冲区首地址 //SampleCnt: 采样点数 void MixerSetData(uint8_t SourceID, void* PcmBuf, uint16_t SampleCnt); //获取某输入源在Mixer内剩余的采样点数,折算为在该输入源采样率下的点数 //SourceID: 0--3 uint16_t MixerGetRemainSamples(uint8_t SourceID); //设置fadein/fadeout速度 //SourceID: 0--3 //FadeinTime: 0--2000,音量从0渐变到4095的时间,单位: ms //FadeoutTime: 0--2000,音量从4095渐变到0的时间,单位: ms void MixerSetFadeSpeed(uint8_t SourceID, uint16_t FadeinTime, uint16_t FadeoutTime); #ifdef __cplusplus } #endif//__cplusplus #endif