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相关推荐

  1. addon游戏_MOD Simple Shader addon

    MOD Simple Shader is a lightweight shader pack which is the perfect solution for anyone who have got ...

  2. 安装您的Sbo Add-on插件

    Sbo Add-on插件开发完成了,就需要注册到Sbo主程序中,从而实现随着Sbo主程序启动而启动,退出而退出,达到Add-on插件程序同Sbo主程序之间的一致运行. 1.运行AddOnRegData ...

  3. 【WebRTC---入门篇】(七)MediaStream

    MediaStream方法 MediaStream.addTrack(  ) 功能:向流媒体中加入不同的轨 MediaStream.removeTrack(  ) 功能:从流媒体中移除不同的轨 Med ...

  4. 拓展KubeVela模块,看addon如何助力开放生态

    在上期云原生专栏文章中(没有addon的生态,是个不够开放的生态),我们初步探索了 KubeVela 中的 addon,了解到 KubeVela 中为什么需要 addon,并在最后以一个简单的小例子说 ...

  5. Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点

    作者 梁豪,腾讯TEG工程师,云原生开源爱好者,SuperEdge 开发者,现负责TKEX-TEG容器平台运维相关工作. 王冬,腾讯云TKE后台研发工程师,专注容器云原生领域,SuperEdge 核心 ...

  6. Android编译自定义sdk,向Android SDK中添加自定义的库 (Addon)

    一般情况下, Android中的第三方应用程序SDK都由开发者直接打包发布,在使用SDK的时候,将所需要的文件(jar.native共享库)加入到项目中 ,这是最通用的方式.不过对于每个应用程序而言, ...

  7. cPanel里的 Addon Domain/Subdomains/Parked domain 区别

    cPanel里的 Addon Domain/Subdomains/Parked domain 区别 转自:http://htt.freevar.com/blog/index.php/2-uncateg ...

  8. 国外虚拟主机域名绑定方法,及Addon Domain/Subdomains/Parked domain详解

    在godaddy上申请的域名 ,使用megabyet.net的虚拟主机,碰到域名绑定的问题,用国内虚拟主机绑定的方法,行不通.差了google总算明白了,以下是我godaddy和megabyet.ne ...

  9. Nodejs Native AddOn的编写

    本文地址 http://blog.csdn.net/wangjia184/article/details/18940165 如果要在nodejs中调用动态链接库中的导出方法,或者从动态链接库中回调no ...

最新文章

  1. ubuntu 18.04 添加快快捷方式
  2. TCP三次握手四次断开(图解)
  3. CUDA、MPI和SU混编,MakeFile文件的编写
  4. Prototype库终于有了文档了
  5. php 常见的视频格式转换
  6. iOS问题记录 - Xcode 14安装低版本iOS模拟器
  7. Windows 电源计划设置关闭显示器不起作用的解决方法
  8. 【转载】通过搜狗站长平台手动向搜狗搜索提交死链
  9. JS清除网页历史记录,屏蔽后退按钮
  10. dd linux 格式化u盘启动盘_linux dd命令刻录启动U盘详解
  11. Vagrant 介绍
  12. (2021牛客多校一)A.Alice and Bob(博弈)
  13. hihoCoder184——满减优惠
  14. 2019,收获,静静等待
  15. PHPMyWind编辑器支持pdf自动上传
  16. 如何开启Vista Aero效果
  17. vscode 解决c语言printf打印中文乱码
  18. C#串口连接的读取和发送详解
  19. 第5章-CSS盒子模型
  20. PostgreSQL 优化器逻辑推理能力 源码解析

热门文章

  1. MongoDB学习文档
  2. 物流无人机开题中期综述
  3. 远距距离、大文件传输的选择
  4. java 全局变量 命名规则_Java 基础 运算符 命名规则 变量 循环
  5. GPFS报错 “stale file handle”
  6. 基于skimage的数字图像处理——频域滤波(傅里叶变换)
  7. 直播系统后台管理了解
  8. Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <null>failed.
  9. show sga解析
  10. php函数scandir_php-scandir()报错