【owt】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX
9. MediaStream 和erizo::MediaStream 类的继承关系
erizo::MediaStream
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaStream.h
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h
erizo::MediaSource
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h
/*** A MediaSource is any class that produces audio or video data.*/
class MediaSource: public virtual Monitor {protected:// SSRCs coming from the sourceuint32_t audio_source_ssrc_;std::vector<uint32_t> video_source_ssrc_list_;MediaSink* video_sink_;MediaSink* audio_sink_;MediaSink* event_sink_;// can it accept feedbackFeedbackSink* source_fb_sink_;public:void setAudioSink(MediaSink* audio_sink) {boost::mutex::scoped_lock lock(monitor_mutex_);this->audio_sink_ = audio_sink;}void setVideoSink(MediaSink* video_sink) {boost::mutex::scoped_lock lock(monitor_mutex_);this->video_sink_ = video_sink;}void setEventSink(MediaSink* event_sink) {boost::mutex::scoped_lock lock(monitor_mutex_);this->event_sink_ = event_sink;}FeedbackSink* getFeedbackSink() {boost::mutex::scoped_lock lock(monitor_mutex_);return source_fb_sink_;}virtual int sendPLI() = 0;uint32_t getVideoSourceSSRC() {boost::mutex::scoped_lock lock(monitor_mutex_);if (video_source_ssrc_list_.empty()) {return 0;}return video_source_ssrc_list_[0];}void setVideoSourceSSRC(uint32_t ssrc) {boost::mutex::scoped_lock lock(monitor_mutex_);if (video_source_ssrc_list_.empty()) {video_source_ssrc_list_.push_back(ssrc);return;}video_source_ssrc_list_[0] = ssrc;}std::vector<uint32_t> getVideoSourceSSRCList() {boost::mutex::scoped_lock lock(monitor_mutex_);return video_source_ssrc_list_; // return by copy to avoid concurrent access}void setVideoSourceSSRCList(const std::vector<uint32_t>& new_ssrc_list) {boost::mutex::scoped_lock lock(monitor_mutex_);video_source_ssrc_list_ = new_ssrc_list;}uint32_t getAudioSourceSSRC() {boost::mutex::scoped_lock lock(monitor_mutex_);return audio_source_ssrc_;}void setAudioSourceSSRC(uint32_t ssrc) {boost::mutex::scoped_lock lock(monitor_mutex_);audio_source_ssrc_ = ssrc;}bool isVideoSourceSSRC(uint32_t ssrc) {auto found_ssrc = std::find_if(video_source_ssrc_list_.begin(), video_source_ssrc_list_.end(),[ssrc](uint32_t known_ssrc) {return known_ssrc == ssrc;});return (found_ssrc != video_source_ssrc_list_.end());}bool isAudioSourceSSRC(uint32_t ssrc) {return audio_source_ssrc_ == ssrc;}MediaSource() : audio_source_ssrc_{0}, video_source_ssrc_list_{std::vector<uint32_t>(1, 0)},video_sink_{nullptr}, audio_sink_{nullptr}, event_sink_{nullptr}, source_fb_sink_{nullptr} {}virtual ~MediaSource() {}virtual void close() = 0;
};
erizo::MediaSink
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h
/** A MediaSink*/
class MediaSink: public virtual Monitor {protected:// SSRCs received by the SINKuint32_t audio_sink_ssrc_;uint32_t video_sink_ssrc_;// Is it able to provide FeedbackFeedbackSource* sink_fb_source_;public:int deliverAudioData(std::shared_ptr<DataPacket> data_packet) {return this->deliverAudioData_(data_packet);}int deliverVideoData(std::shared_ptr<DataPacket> data_packet) {return this->deliverVideoData_(data_packet);}uint32_t getVideoSinkSSRC() {boost::mutex::scoped_lock lock(monitor_mutex_);return video_sink_ssrc_;}void setVideoSinkSSRC(uint32_t ssrc) {boost::mutex::scoped_lock lock(monitor_mutex_);video_sink_ssrc_ = ssrc;}uint32_t getAudioSinkSSRC() {boost::mutex::scoped_lock lock(monitor_mutex_);return audio_sink_ssrc_;}void setAudioSinkSSRC(uint32_t ssrc) {boost::mutex::scoped_lock lock(monitor_mutex_);audio_sink_ssrc_ = ssrc;}bool isVideoSinkSSRC(uint32_t ssrc) {return ssrc == video_sink_ssrc_;}bool isAudioSinkSSRC(uint32_t ssrc) {return ssrc == audio_sink_ssrc_;}FeedbackSource* getFeedbackSource() {boost::mutex::scoped_lock lock(monitor_mutex_);return sink_fb_source_;}int deliverEvent(MediaEventPtr event) {return this->deliverEvent_(event);}MediaSink() : audio_sink_ssrc_{0}, video_sink_ssrc_{0}, sink_fb_source_{nullptr} {}virtual ~MediaSink() {}virtual void close() = 0;private:virtual int deliverAudioData_(std::shared_ptr<DataPacket> data_packet) = 0;virtual int deliverVideoData_(std::shared_ptr<DataPacket> data_packet) = 0;virtual int deliverEvent_(MediaEventPtr event) = 0;
};
erizo::FeedbackSink
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h
class FeedbackSink {public:virtual ~FeedbackSink() {}int deliverFeedback(std::shared_ptr<DataPacket> data_packet) {return this->deliverFeedback_(data_packet);}private:virtual int deliverFeedback_(std::shared_ptr<DataPacket> data_packet) = 0;
};
erizo::FeedbackSource
source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h
class FeedbackSource {protected:FeedbackSink* fb_sink_;public:FeedbackSource(): fb_sink_{nullptr} {}virtual ~FeedbackSource() {}void setFeedbackSink(FeedbackSink* sink) {fb_sink_ = sink;}
};
addon.MediaStream
source/agent/webrtc/rtcConn/MediaStream.h
class MediaStream : public MediaFilter, public erizo::MediaStreamStatsListener, public erizo::MediaStreamEventListener {public:
...
}
addon.MediaFilter
source/core/owt_base/MediaWrapper.h
/** Wrapper class of both erizo::MediaSink and erizo::MediaSource*/
class MediaFilter : public Nan::ObjectWrap {public:erizo::MediaSink* msink;erizo::MediaSource* msource;
};
addon.MediaSource
source/core/owt_base/MediaWrapper.h
/** Wrapper class of erizo::MediaSource*/
class MediaSource : public Nan::ObjectWrap {public:erizo::MediaSource* msource;
};
addon.MediaSink
source/core/owt_base/MediaWrapper.h
class MediaSink : public Nan::ObjectWrap {public:erizo::MediaSink* msink;
};
【owt】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX相关推荐
- addon游戏_MOD Simple Shader addon
MOD Simple Shader is a lightweight shader pack which is the perfect solution for anyone who have got ...
- 安装您的Sbo Add-on插件
Sbo Add-on插件开发完成了,就需要注册到Sbo主程序中,从而实现随着Sbo主程序启动而启动,退出而退出,达到Add-on插件程序同Sbo主程序之间的一致运行. 1.运行AddOnRegData ...
- 【WebRTC---入门篇】(七)MediaStream
MediaStream方法 MediaStream.addTrack( ) 功能:向流媒体中加入不同的轨 MediaStream.removeTrack( ) 功能:从流媒体中移除不同的轨 Med ...
- 拓展KubeVela模块,看addon如何助力开放生态
在上期云原生专栏文章中(没有addon的生态,是个不够开放的生态),我们初步探索了 KubeVela 中的 addon,了解到 KubeVela 中为什么需要 addon,并在最后以一个简单的小例子说 ...
- Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点
作者 梁豪,腾讯TEG工程师,云原生开源爱好者,SuperEdge 开发者,现负责TKEX-TEG容器平台运维相关工作. 王冬,腾讯云TKE后台研发工程师,专注容器云原生领域,SuperEdge 核心 ...
- Android编译自定义sdk,向Android SDK中添加自定义的库 (Addon)
一般情况下, Android中的第三方应用程序SDK都由开发者直接打包发布,在使用SDK的时候,将所需要的文件(jar.native共享库)加入到项目中 ,这是最通用的方式.不过对于每个应用程序而言, ...
- cPanel里的 Addon Domain/Subdomains/Parked domain 区别
cPanel里的 Addon Domain/Subdomains/Parked domain 区别 转自:http://htt.freevar.com/blog/index.php/2-uncateg ...
- 国外虚拟主机域名绑定方法,及Addon Domain/Subdomains/Parked domain详解
在godaddy上申请的域名 ,使用megabyet.net的虚拟主机,碰到域名绑定的问题,用国内虚拟主机绑定的方法,行不通.差了google总算明白了,以下是我godaddy和megabyet.ne ...
- Nodejs Native AddOn的编写
本文地址 http://blog.csdn.net/wangjia184/article/details/18940165 如果要在nodejs中调用动态链接库中的导出方法,或者从动态链接库中回调no ...
最新文章
- ubuntu 18.04 添加快快捷方式
- TCP三次握手四次断开(图解)
- CUDA、MPI和SU混编,MakeFile文件的编写
- Prototype库终于有了文档了
- php 常见的视频格式转换
- iOS问题记录 - Xcode 14安装低版本iOS模拟器
- Windows 电源计划设置关闭显示器不起作用的解决方法
- 【转载】通过搜狗站长平台手动向搜狗搜索提交死链
- JS清除网页历史记录,屏蔽后退按钮
- dd linux 格式化u盘启动盘_linux dd命令刻录启动U盘详解
- Vagrant 介绍
- (2021牛客多校一)A.Alice and Bob(博弈)
- hihoCoder184——满减优惠
- 2019,收获,静静等待
- PHPMyWind编辑器支持pdf自动上传
- 如何开启Vista Aero效果
- vscode 解决c语言printf打印中文乱码
- C#串口连接的读取和发送详解
- 第5章-CSS盒子模型
- PostgreSQL 优化器逻辑推理能力 源码解析
热门文章
- MongoDB学习文档
- 物流无人机开题中期综述
- 远距距离、大文件传输的选择
- java 全局变量 命名规则_Java 基础 运算符 命名规则 变量 循环
- GPFS报错 “stale file handle”
- 基于skimage的数字图像处理——频域滤波(傅里叶变换)
- 直播系统后台管理了解
- Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <null>failed.
- show sga解析
- php函数scandir_php-scandir()报错