libjingle_peerconnection

最近在学习libjingle_peeconnection的代码

不知道应该如何写起,就先从类和各种数据结构列起吧

PeerConnectionFactory:

在创建PeerConnectionFactory的实例的时候会创建两个thread ( signaling_thread_  和 worker_thread_  类型为rtc::Thread),目前还不知道有和作用,两者的关系

class PeerConnectionFactory : public PeerConnectionFactoryInterface,
public rtc::MessageHandler {
public:
virtual void SetOptions(const Options& options) {
options_ = options;
}

virtual rtc::scoped_refptr<PeerConnectionInterface>
CreatePeerConnection(
const PeerConnectionInterface::RTCConfiguration& configuration,
const MediaConstraintsInterface* constraints,
PortAllocatorFactoryInterface* allocator_factory,
DTLSIdentityServiceInterface* dtls_identity_service,
PeerConnectionObserver* observer);

bool Initialize();

virtual rtc::scoped_refptr<MediaStreamInterface>
CreateLocalMediaStream(const std::string& label);

virtual rtc::scoped_refptr<AudioSourceInterface> CreateAudioSource(
const MediaConstraintsInterface* constraints);

virtual rtc::scoped_refptr<VideoSourceInterface> CreateVideoSource(
cricket::VideoCapturer* capturer,
const MediaConstraintsInterface* constraints);

virtual rtc::scoped_refptr<VideoTrackInterface>
CreateVideoTrack(const std::string& id,
VideoSourceInterface* video_source);

virtual rtc::scoped_refptr<AudioTrackInterface>
CreateAudioTrack(const std::string& id,
AudioSourceInterface* audio_source);

virtual bool StartAecDump(rtc::PlatformFile file);

virtual cricket::ChannelManager* channel_manager();
virtual rtc::Thread* signaling_thread();
virtual rtc::Thread* worker_thread();
const Options& options() const { return options_; }

protected:
PeerConnectionFactory();
PeerConnectionFactory(
rtc::Thread* worker_thread,
rtc::Thread* signaling_thread,
AudioDeviceModule* default_adm,
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
cricket::WebRtcVideoDecoderFactory* video_decoder_factory);
virtual ~PeerConnectionFactory();

private:
bool Initialize_s();
void Terminate_s();
rtc::scoped_refptr<AudioSourceInterface> CreateAudioSource_s(
const MediaConstraintsInterface* constraints);
rtc::scoped_refptr<VideoSourceInterface> CreateVideoSource_s(
cricket::VideoCapturer* capturer,
const MediaConstraintsInterface* constraints);

rtc::scoped_refptr<PeerConnectionInterface> CreatePeerConnection_s(
const PeerConnectionInterface::RTCConfiguration& configuration,
const MediaConstraintsInterface* constraints,
PortAllocatorFactoryInterface* allocator_factory,
DTLSIdentityServiceInterface* dtls_identity_service,
PeerConnectionObserver* observer);

bool StartAecDump_s(rtc::PlatformFile file);

// Implements rtc::MessageHandler.
void OnMessage(rtc::Message* msg);

bool owns_ptrs_;
rtc::Thread* signaling_thread_;
rtc::Thread* worker_thread_;
Options options_;
rtc::scoped_refptr<PortAllocatorFactoryInterface> allocator_factory_;
// External Audio device used for audio playback.
rtc::scoped_refptr<AudioDeviceModule> default_adm_;
rtc::scoped_ptr<cricket::ChannelManager> channel_manager_;
// External Video encoder factory. This can be NULL if the client has not
// injected any. In that case, video engine will use the internal SW encoder.
rtc::scoped_ptr<cricket::WebRtcVideoEncoderFactory>
video_encoder_factory_;
// External Video decoder factory. This can be NULL if the client has not
// injected any. In that case, video engine will use the internal SW decoder.
rtc::scoped_ptr<cricket::WebRtcVideoDecoderFactory>
video_decoder_factory_;
};

时间: 2024-11-25 19:51:47

libjingle_peerconnection的相关文章

WebRTC iOS平台的基本实现

前面介绍了如何下载编译WebRTC,现在介绍如何利用WebRTC在iOS客户端上简单实现音视频通话. 对下载编译还有问题的,请先查看:WebRTC(iOS)下载编译. 不需要下载源码只需要库文件的也可以用CocoaPods下载编译好的库:pod 'libjingle_peerconnection' 开始编写之前,我们首先要搭建一个服务器,此服务器主要用于信令交互.我们这里采用github上的开源项目:SkyRTC项目. 完整Demo下载:FLWebRTCDemo. 开始iOS客户端的实现: 1.

WebRTC 视频对话

今天聊一下WebRTC.很多开发者,可能会觉得有些陌生,或者直接感觉繁杂.因为WebRTC在iOS上的应用,只是编译都让人很是头痛.这些话,到此为止,以防让了解者失去信心.我们只传播正能量,再多的困难都是可以解决的.本博客会不断更新增加内容,不要怕长.首先看一下定义.WebRTC,名称源自网页实时通信(WebReal-TimeCommunication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购GlobalIPSolutions公司而获得的

webrtc教程

cdsn博客不支持word文件,所以这里显示不完全.可到本人资源中下载word文档: v0.3:http://download.csdn.net/detail/kl222/6961491 v0.1:http://download.csdn.net/detail/kl222/6677635  下载完后评论,可以返还你的积分.此文档还在完善中,欢迎大家交流,共同完善.    Webrtc  教程 版本0.3(2014年2月) 康林 ([email protected]) 本文博客地址:http://

WebRTC之Android客户端

一.WebRTC的Android客户端搭建 1.libjingle_peerconnection_so.so 2.libjingle_peerconnection.jar 3.客户端源码一份(可以在github上下载) 二.相关概念介绍 1.P2P:点对点通讯: 2.STUN:提供反射地址使双方可以进行P2P通讯: 3.TURN:在反射地址方式失败情况下的补充方案,即使用中继器,使双方百分之百能够通讯: 4.ICE:综合STUN与TURN两种方案,找出一种最合理最廉价的可行路径: 5.SIP/S

webrtc初识

最近由于项目的需求,开始接触了webrtc这个东西.没想到这东西的门槛还是蛮高的,接下来分享一下我所踩过的坑,希望对以后初次接触这个东西的人有所帮助. webrtc官网 第一步当然是看官方主页了(www.webrtc.org), 先把主页的内容大致扫了一遍,大概对这个东西的有了一点点认识,接下来就是按照development页面的步骤开始了.按照官方的说法安装依赖的tools,Java环境 etc...这中间当然包括了FQ的必要步骤 代码下载: 当你配置完环境后,要运行命令gclient syn

peerconnection例子渲染本地视频

调试peerconnection例子,在WebRtcSession::CreateChannels函数中加上断点,呼叫端和被呼叫端创建通道的流程并不一样.呼叫端是从PeerConnection::SetLocalDescription往下执行创建的,而被呼叫端则是收到对端发来的消息后调用PeerConnection::SetRemoteDescription往下执行创建的.根据WebRtcSession::CreateChannels函数创建VoiceChannel和VideoChannel的流

2015GitWebRTC编译实录12

2015.07.20 libjingle_peerconnection 编译通过[1382/1600 ] CXX obj/talk/app /webrtc/libjingle_peerconnection.mediaconstraintsinterface.o[1451/1600 ] CXX obj/talk/app /webrtc/libjingle_peerconnection.jsepicecandidate.o[1452/1600 ] CXX obj/talk/app /webrtc/l