上篇(webRTC中音频相关的netEQ(一):概述)是netEQ的概述,知道了它主要是用于解决网络延时抖动丢包等问题提高语音质量的,也知道了它有两大单元MCU和DSP组成.MCU 主要是把从网络收到的语音RTP包放进packet buffer内,同时也会根据计算出来的网络延时和抖动缓冲延时以及DSP单元反馈过来的信息决定给DSP发什么控制命令(命令主要有正常播放.加速.减速.丢包补偿.融合等),也会把语音包从packet buffer里取出来给DSP单元处理.DSP主要是对取出来的语音包解码并…
上篇(webRTC中音频相关的netEQ(四):控制命令决策)讲了MCU模块是怎么根据网络延时.抖动缓冲延时和反馈报告等来决定给DSP模块发什么控制命令的.DSP模块根据收到的命令进行相关处理,处理简要流程图如下. 从上图看出如果有语音包从packet buffer里取出来先要做解码得到PCM数据,没有就不用做解码了.编解码也是数字信号处理算法的一种,是个相当大的topic,不是本文所关注的,本文关注的是对解码后的PCM数据做数字信号处理,如加减速.如果命令是非Normal命令,就要根据命令做D…
上篇(webRTC中音频相关的netEQ(二):数据结构)讲了netEQ里主要的数据结构,为理解netEQ的机制打好了基础.本篇主要讲MCU中从网络上收到的RTP包是怎么放进packet buffer和从packet  buffer里取出来,以及网络延时值(optBufLevel)和抖动缓冲延时值(buffLevelFilt)的计算.先看RTP语音包是怎么放进packet  buffer的. 前面说过把从网络收到的RTP包放进packet  buffer时有个slot概念,每个slot里放一个包…
上篇(webRTC中音频相关的netEQ(三):存取包和延时计算)讲了语音包的存取以及网络延时和抖动缓冲延时的计算,MCU也收到了DSP模块发来的反馈报告.本文讲MCU模块如何根据网络延时.抖动缓冲延时和反馈报告等决定发给DSP模块的控制命令, 好让DSP模块先对取出的语音包做解码处理(如果有的话)以及根据这些命令做信号处理. MCU模块给DSP模块发的控制命令主要有正常播放(normal).加速播放(accelerate).减速播放(preemptive expand).丢包补偿(PLC,代码…
上篇文章(语音通信中终端上的时延(latency)及减小方法)说从本篇开始会切入webRTC中的netEQ主题,netEQ是webRTC中音频技术方面的两大核心技术之一(另一核心技术是音频的前后处理,包括AEC.ANS.AGC等,俗称3A算法).webRTC是Google收购GIPS重新包装后开源出来的,目前已是有巨大影响力的实时音视频通信解决方案.国内的互联网公司,要做实时音视频通信产品,绝大多数都是基于webRTC来做的,有的是直接用webRTC的解决方案,有的是用webRTC里的核心技术,…
c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个顶点 graph_mtx.h #ifndef __graph_mtx__ #define __graph_mtx__ #include <stdio.h> #include <malloc.h> #include <assert.h> #include <memory…
通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) 在上一篇文章中,我们讲解了WebRTC的概述.历史.安全性和开发者工具.接下来我们通过WebRTC的三个API来具体的讲解构建WebRTC的流程,这篇文章会对MediaStream进行讲解. MediaStream (别名 getUserMedia) MediaStream API 代表媒体数据流的同步.举个例子,从相机获取的视频流的同步和跟踪. 理解MediaStream最简…
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第六章 Realm及相关对象(二) 1.AuthenticationToken 由上篇可知,AuthenticationToken出现在UserRealm的方法doGetAuthenticationInfo()中.这个方法是用来验证的,token是验证时所用的参数. protected AuthenticationInfo doGetAuthenticationI…
版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/24441825 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码   (一维码.二维码)的解析工具,提供了二维码的生成与解析的方法,如今我简介一下使用Jav…
list是py内置的一种数据类型,list就是列表的意思,list就是一种有序的数据集合,可以随时增加和删除list的元素. 生活中,比如我们要列出全班同学的名字,就可以用list来表示 >>> classmate = ['大逗比', '小豆比'] >>> classmate ['大逗比', '小豆比'] 这个时候,classnamte就是一个list list的访问可以用: list[0]  list[1] 或者: list[-1]  list[-2] list的操作…