本文介绍WebRTC音频模块组成和结构,详细介绍音频引擎的配置和启动,相信看完本文后,很多人可以利用WebRTC完成一个音频通话程序开发。
一、对外接口
音频部分的对外主要接口如下,各个接口之间的关系如图1所示。
1)VoiceEngine:负责引擎的所有接口查询,存储共享数据信息ShareData。
2)VoEBase:负责音频处理的基本操作。
3)VoEAudioProcessing:音频信号处理接口,设置各个音频处理项的参数。
4)VoECodec:音频编解码接口,提供支持的编解码器查询,音频编解码设置。
5)VoEHardware:音频硬件设备接口,负责音频硬件设备的设置。
其它的接口还有VoENetEqStats,VoENetwork,VoERTP_RTCP,VoEVideoSync,VoEVolumeControl,VoEFile,VoECallReport,VoEDtmf,VoEMeidaProcess和VoEEncryption。
WebRTC使用继承实现接口转换和查询,接口之间的数据共享是通过ShareData完成,首先VoiceEngineImpl继承各个对外接口的实现,所以可以从VoiceEngineImpl很容易获取其他对外接口。而VoiceEngineImpl本身也继承ShareData,当从VoiceEngineImpl获取其他对外接口的同时,隐式的传递了ShareData指针,因此各个接口可以很方便的获取到ShareData的数据信息。因此虽然类与类之间的关系看起来比较混乱,但是使用上比较方便。
利用VoiceEngine获取对外接口:VoEInterfaceXX* pInterf = VoEInterfaceXX:GetInterface(pVoiceEngi