WebRTC 源码阅读 3——音频类(1)

WebRTC 源码阅读 3——音频类(1)

上一章已知,所有的配置信息汇总到了ConnectionContext中,里面的ChannelManager则是音、视处理的具体类,其类的结构如下:

在这里插入图片描述
本小节以音频为例,探究MediaEngineInterface

MediaEngineInterface

// MediaEngineInterface is an abstraction of a media engine which can be
// subclassed to support different media componentry backends.
// It supports voice and video operations in the same class to facilitate
// proper synchronization between both media types.

 官方注释解释得非常清晰,它用于管理音、视频引擎,及管理它们的播放设备,为了实现跨平台,将二者抽象为接口VoiceEngineInterfaceVideoEngineInterfaceCompositeMediaEngine继承自MediaEngineInterface,当中有两个unique_ptr分别指向voice_enginevideo_engine。由于本人即将开发音频相关的工作,所以阅读了VideoEngineInterface及其具体实现。

VideoEngineInterface

VideoEngineInterface是一个接口,具体的实现为WebRtcVoiceEngine,它拥有下述属性,而本小节在后面讨论AudioDeviceMoudle其余的部分会在下面的章节中继续展开。

 rtc::scoped_refptr<webrtc::AudioDeviceModule> adm_;
  rtc::scoped_refptr<webrtc::AudioEncoderFactory> encoder_factory_;
  rtc::scoped_refptr<webrtc::AudioDecoderFactory> decoder_factory_;
  rtc::scoped_refptr<webrtc::AudioMixer> audio_mixer_;

AudioDeviceModule

在这里插入图片描述
 图中展现了AudioDeviceModule在不同平台上的具体实现方式,最终的实现落在了AudioDeviceModuleImpl上,当中有AudioDeivceGeneric基类(一个典型的策略模式,用于实现跨平台音频设备的播放)和一个AudioDeviceBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值