webrtc 源码结构

api
WebRTC 接口层。包括 DataChannel, MediaStream, SDP相关的接口。各浏览器都是通过该接口层调用的 WebRTC。
call
存放的是 WebRTC “呼叫(Call)” 相关逻辑层的代码。
audio
存放音频网络逻辑层相关的代码。音频数据逻辑上的发送,接收等代码。
video
存放视频逻辑层及视频引擎层的相关的代码。视频数据逻辑上的发送,接收等代码。
视频引擎层就是指如何控制视频采集,处理和编解码操作的逻辑。
sdk
存放了 Android 和 IOS 层代码。如视频的采集,渲染代码都在这里。
pc
存放一些业务逻辑层的代码。如 channel, session等。
common_audio
存放一些音频的基本算法。包括环形队列,博利叶算法,滤波器等。
common_video
存放了视频算法相关的常用工具,如libyuv, sps/pps分析器,I420缓冲器等。
modules
这个目录是 WebRTC 代码中最重要的一个目录。里面包括了音视频的采集,处理,编解码器,混音等。
modules 目录下还包括以下几个子目录:
audio_coding : 音频编解码相关代码。
audio_conference_mixer : 会议混音相关代码。
audio_device : 音频采集与音频播放相关代码。
audio_mixer : 混音相关代码,这部分是后加的。
audio_processing : 音频前后处理的相关代码。
bitrate_controller : 码率控制相关代码。
congestion_controller : 流控相关的代码。
desktop_capture : 桌面采集相关的代码。
media_file : 播放媒体文件相关的代码。
pacing : 码率探测相关的代码。
remote_bitrate_estimator : 远端码率估算相关的代码。
rtp_rtcp : rtp/rtcp协议相关代码。
video_capture : 视频采集相关的代码。
video_coding : 视频编解码相关的代码。
video_processing : 视频前后处理相关的代码。
media
存放媒体相关的代码。
p2p
p2p相关的代码。
rtc_base
存放了一些基础代码。如线程,事件,socket等相关的代码。
rtc_tools
存放了一些工具代码。如视频帧比较,I420转RGB,视频帧分析。
stats
存放各种数据统计相关的类。
libjingle
网络库。
system_wrapper
与操作系统相关的代码,如 CPU特性,原子操作,读写锁,时钟等。

转载于:https://www.cnblogs.com/elesos/p/9854684.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql查询流程解析及重要知识总结

时光荏苒啊!在过两个月我就工作满三年了,大学毕业的情景还历历在目,而我已经默默的向油腻中年大叔进发了。作为一名苦逼的后端工程师,我搞过一段时间python,现在靠java糊口,但后来才发现,始终不…

界面无小事(八):RecyclerView增删item

界面无小事(一): RecyclerViewCardView了解一下 界面无小事(二): 让RecyclerView展示更多不同视图 界面无小事(三):用RecyclerView Toolbar做个文件选择器 界面无小事(四):来写个滚动选择器吧! 界面无小事(五):自定义TextView 界面无小事(六):来做个好看得侧拉菜单! 界面无小事…

Failed to install Tomcat7 service 解决

见: http://blog.csdn.net/desow/article/details/21446197 tomcat 安装时出现 Failed to install Tomcat7 service 今天在安装tomcat时提示 Failed to install Tomcat7 service了,花了大半天的时间找到了原因,下面分享给大家,希望…

保守官僚 诺基亚就这样迷失在智能机时代?

7月19日,诺基亚发布了二季度财报,净亏损达到了17亿美元,其中智能手机份额和销售量进一步下滑,这个智能手机的领导者,正在因智能手机而急速坠落。诺记亚领先业界近十年就把握住了智能手机的趋势,并推出了首款…

django集成ansibe实现自动化

动态生成主机列表和相关参数 def create_admin_domain(admin_node):workpath BASE_DIR /tools/ansible/scripthosts_file BASE_DIR /tools/ansible/host/ createhostfile()yml_file BASE_DIR /tools/ansible/yml/ create_admin_domain.ymldomain_path admin_node.doma…

extend 对象继承

function extend(o, n, override) {for (var p in n) {if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p) || override))o[p] n[p];} }// 默认参数 var options {pageIndex: 1,pageTotal: 2 };// 新设置参数 var userOptions {pageIndex: 3,pageSize: 10 }extend(o…

【spring容器启动】之bean的实例化和初始化(文末附:spring循环依赖原理)

本次我们通过源码介绍ApplicationContext容器初始化流程,主要介绍容器内bean的实例化和初始化过程。ApplicationContext是Spring推出的先进Ioc容器,它继承了旧版本Ioc容器BeanFactory,并进一步扩展了容器的功能,增加了bean的自动识…

如何将自己的Java项目部署到外网

见:http://jingyan.baidu.com/article/90bc8fc864699af653640cf7.html 做b/s模式的web开发不同于c/s模式的客户端开发,c/s模式我们只要做好生成可执行文件发送给其他人,其他人就可以用了。但是c/s模式不同,在同一局域网下&#xf…

[Swift]LeetCode916.单词子集 | Word Subsets

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

揭秘腾讯研究院输出策略:产品和人才的孵化器

直到现在,腾讯研究院创始人郑全战仍坚持面试招入研究院的每一个人,并做详细记录。天赋上的灵性、性格中的包容是他看重的,当然首先人要踏实。大约6年前,郑全战加入腾讯,负责筹建中国互联网公司中的第一个研究院&#x…

java后端必会【基础知识点】

(一)java集合类(done) 在java集合类中最常用的是Collection和Map的接口实现类。Collection又分为List和Set两类接口,List的实现类有ArrayList、LinkedList、Vector、Stack,Set接口的实现类有HashSet、Tree…

无法连接虚拟设备ide1:0,主机上没有相对应的设备... 解决

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 运行虚拟机出现报错: 无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都…

缴满15年能领多少钱 养老金计算公式网上疯传

社保人员称我省计算方式与各设区市平均工资挂钩,与网上不同 最近,关于“延迟退休”引起各方高度关注,成为广大居民十分关心的话题。是否延迟退休尚无定论,但在网上有不少关于养老金的计算。那网上流传的计算方法是否科学&#xff…

48_并发编程-线程-资源共享/锁

一、数据共享多个线程内部有自己的数据栈,数据不共享;全局变量在多个线程之间是共享的。1 # 线程数据共享不安全加锁2 3 import time4 from threading import Thread, Lock5 6 7 num 1008 9 def func(t_lock): 10 global num 11 t_lock.acquire…

移动硬盘提示无法访问设备硬件出现致命错误,导致请求失败的资料寻回方案

J盘打不开设备硬件出现致命错误,导致请求失败,是因为这个I盘的文件系统内部结构损坏导致的。要恢复里面的数据就必须要注意,这个盘不能格式化,否则数据会进一步损坏。具体的恢复方法看正文 工具/软件:星空数据恢复软件 步骤1&…

VMware10上新建虚拟机步骤图解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 第一种 : 自定义方式: 安装虚拟机的过程步骤,基本上过程的每一步都有截图,跟着过程就可以很容易的创…

怎么理解 IaaS、SaaS 和 PaaS 的区别?

原文链接:怎么理解 IaaS、SaaS 和 PaaS 的区别? 一、定义层面的区别 SaaS、PaaS、IaaS简单的说都属于云计算服务,也就是云计算服务。我们对于云计算的概念,维基百科有以下定义: Cloud computing is a new form of In…

三星“打法”:先模仿对手 再吃掉对手

台湾地区电子业者将三星视为“台湾公敌”,事实上,它几乎是全球电子业者的敌人。 这家韩国电子业巨头十年之间夺取了日本企业在这一领域中纵横30年的荣光,更是建立起了令人叹为观止的垂直整合帝国。 韩国政府的大力支持、日元升值韩元贬值等均…

SharpZipLib 压缩ZIP导出

1      var uploadSectionDir Path.Combine("Upload", "QQ", DateTime.Now.ToString("yyyyMMdd"));2 string uploadDir Path.Combine(HttpRuntime.AppDomainAppPath, uploadSectionDir);3 if (!Directory.Exi…

java动态调用c++库

前言 最近在做一个通过java程序调用c动态语言库,在网上百度,谷歌找了诸多例子,还是屡试不爽。经过一番折腾还是披荆斩棘,创出一条道路。希望分享给正在迷茫的朋友们... 使用的环境 spring boot gradle JNI介绍 JNI全拼是Java Nat…