自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(29)
  • 收藏
  • 关注

原创 OBS推rtmp流拥塞时丢帧策略

obs推rtmp流卡顿丢帧策略1.检测队列buffer的长度,p帧超过900ms,b帧超过700毫秒开始丢帧。2.丢帧策略新建一个circlebuf,音频不丢,视频按照优先级丢弃(i帧优先级为3,p帧优先级为2,b帧优先级为1),b帧超过700毫秒全部求其,p帧超过900毫秒全部丢弃。3.触发丢帧后新来的帧,必须大于最小优先级。(解释:由于参考关系,比如p帧依赖i帧,所以p帧丢了后,要将后面p帧全部丢除,直到下一个I帧;而B帧也类似要直到下一个p帧);buffer阀值的设置obs_data_set

2021-04-10 20:00:50 1178

转载 操作系统(十一) -- 内存的换入与换出及换出的基本算法

文章目录 前言 换入 换入概述 一个实际系统的请求调页 换出 FIFO(先入先出) MIN算法 LRU算法 LRU算法的准确实现:用时间戳 LRU算法的准确时间:用页码栈 clock算法 二次机会算法 给进程分配多少个页框 参考资料 前言前面说过为了保证内存在用户程序看起来是分段,而实际是分页的效果,引入了虚拟内存。对于用户来说,虚拟内存是一个完整的内存,用户可.

2021-01-13 17:05:18 878

转载 操作系统(十) -- 段页结合的实际内存管理模型

文章目录 前言 虚拟内存 虚拟内存的引入 虚拟内存 一个实际的段、页式内存管理 分配内存、建立段表 分配内存、建立页表 MMU地址处理 参考资料 前言前面说过用户程序喜欢分段来分配内存,但是实际的物理内存更加倾向于分页管理,因为这样可以使内存的利用率最大化。作为操作系统,既要向上负责,又要向下负责。这一篇博客主要谈谈用户程序需要的段和物理内存需要的页是如何结合到一起的。虚拟内存虚拟内存的引入首先两个条件,第一:物理内.

2021-01-13 17:01:18 146

转载 操作系统(九) -- 多级页表与快表

文章目录 单级页表的缺点 多级页表的提出 第一种尝试:页表里面只存放用到的页 第二种尝试:多级页表,页目录表+页表 多级页表的缺点 相连快速存储TLB(快表) 小结 参考资料 单级页表的缺点前面说了为了提高内存的利用率,内存是分页管理的,并且有一个页表用来存储页号与页框的对应关系。这个思想理论上是没有问题的,但是实际使用的时候就不行了,为什么?为了更好的提高内存的利用率,每一页就应该做得足够小,但是每一页都要在页表里面有一项与页框对应,也就.

2021-01-13 16:55:37 907

转载 内存的分段与分页

文章目录前言 正文 内存如何使用: 问题引入 初始逻辑地址与物理地址 运行时进行重定位。 内存的分段机制 如何在内存里面找到空闲分区。 固定分区 可变分区 可变分区的三种适配方式 可变分区造成的问题 如何根据逻辑地址找到物理地址 参考资料 前言cpu的使用基本上告一段落,接下来是内存部分。正文内存如何使用:内存使用就是放在内存中的程序能够按照正确的逻辑顺序执行首先让程序.

2021-01-13 16:51:56 432

原创 mac上编译安装nginx

下载nginx源码官网地址: http://nginx.org/en/download.html选择 Stable version安装依赖包nginx的安装依赖下面软件OpenSSL在官网下到最新稳定版。 https://www.openssl.org/source/openssl-1.1.1g.tar.gzPCRE下载地址: https://ftp.pcre.org/pub/pcre/*注意有两个大版本:8.x和10.x,nginx依赖的是8.x,所以选择 pcre-8.的最高版本。z

2020-10-26 11:41:21 264

原创 webrtc丢包率与jitter计算

RR报文格式: fraction lost cumulative number of packets lost interarrival jitter extended highest sequence number received: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7

2020-10-14 17:59:14 2209 1

原创 webrtc nack重传包判定

webrtc SequenceNumber 比较 IsNewerSequenceNumberinline bool IsNewerSequenceNumber(uint16_t sequence_number, uint16_t prev_sequence_number) { // Distinguish between elements that are exactly 0x8000 apart. // If s1>s2

2020-10-13 20:54:14 516

原创 Webrtc 码率统计 RateStatistics

RateStatistics用于webrtc的码率统计,用法说明RateStatistics::RateStatistics(int64_t window_size_ms, float scale);window_size_ms 统计窗口的大小,scale 缩放参数用于单位转换,比如byte转bit就是8000;void RateStatistics::Update(size_t count, int64_t now_ms);每次数据来时进行更新,count是收到数据的大小,now_ms当

2020-10-13 17:41:50 850

原创 webrtc rtt 计算

Definitions RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。 一般认为单向时延=传输时延t1+传播时延t2+排队时延t3 t1是数据从进入节点到传输媒体所需要的时间,通常等于数据块长度/信道带宽 t2是信号在信道中需要传播一定距离而花费的时间,等于信道长度/传播速率(光纤中电磁波的传播速率约为210^5 km/s,铜缆中2.310^5

2020-10-12 21:53:07 1348

原创 C/C++异常处理总结

1.C的异常处理c语言异常处理使用较少,给出具体事例代码:c语言异常处理的结构体 jmp_buftypedef struct{ unsigned j_sp; // 堆栈指针寄存器 unsigned j_ss; // 堆栈段 unsigned j_flag; // 标志寄存器 unsigned j_cs; // 代码段 unsigned j_ip; // 指令指针寄存器 unsigned j_bp; // 基址指针 unsigned j

2020-08-18 17:55:47 460

转载 浅谈指针的比较

转载:https://www.cnblogs.com/liyuan989/p/4246836.html浅谈指针的比较2015-01-24 23:19origins 阅读(4715) 评论(2)编辑收藏前言有人说指针是C语言的灵魂,也有人说没学好指针就等于不会C语言。虽然在现代C++中一般都是推荐尽量避免使用原生的raw指针,而是以smart pointer 和reference替代之。但是无论怎样,对于C/C++来说,指针始终是个绕不过去的坎。究其原因,是因为C/C++都...

2020-06-29 11:01:10 1482

原创 webrtc DelayManager代码研读

DelayManager代码研读DelayManager利用方直图,统计出当前的延迟并,算出现在的应提供的buffer大小。DelayManager通过调用Update更新包的延迟统计,并计算出target_level_;调用BufferLimits根据target_level_获取最大最小缓存(lower_limit, higher_limit);通过最大,最小缓存生成dsp的相关指令;absl::optional Update(uint16_t sequence_number, uint32_

2020-06-21 18:56:45 616

原创 Webrtc的unittest

Webrtc的unittest1.webrtc使用google的gtest做单元测试。2.有非常详细的单元测试。3.许多单元测试都编译成了静态的*.lib库,例如histogram_unittest就在audio_coding_unittests库中。4.最终这些库连接到可以运行的测试*.exe,如modules_unittests中就包含audio_coding_unittests,引用的方式是通过 *.ninja文件,例如在modules_unittersts.ninja中就有对“audio_c

2020-06-09 17:15:28 1036

原创 webrtc Histogram(直方图) 算法研究

webrtc Histogram(直方图) 算法研究说明:Histogram被使用在neteq的DelayManager使用,被用做计算网络延迟。关键数据结构: private: std::vector<int> buckets_; int forget_factor_; // Q15 const int base_forget_factor_; int add_count_; const absl::optional<double> start_forg

2020-06-08 17:06:26 1138

原创 windows webrtc 开发环境搭建

下载 安装depot toolsgit clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitdepot_tools依赖python2.7git代理设置: git config --global http.proxy http://127.0.0.1:1080 git config --global https.proxy https://127.0.0.1:1080或者 git config --glob

2020-06-03 17:11:45 2554

原创 Windows检测内存泄露-1

使用C Run-Time库自带的内存泄漏检测APIs1.建立debug_redefine_new.h文件#ifndef SET_DEBUG_NEW_H#define SET_DEBUG_NEW_H #ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif #define _CRTDBG_MAP_ALLOC#in

2020-05-21 21:19:12 208

转载 IO多路复用之select总结

Anker—工作学习笔记关注云计算、网络安全、软件定义网络博客园新随笔管理随笔 - 162  文章 - 2  评论 - 375IO多路复用之select总结1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客

2017-05-19 16:26:26 58

转载 c++异常捕捉详解

转载:http://blog.sina.com.cn/s/blog_a9303fd901018ost.html 一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1    #include                                 //包含头文件2    #include3    double fuc(double

2013-11-10 22:07:40 769

转载 多文件连接时的c作用域

转载:http://m.blog.csdn.net/blog/zinss26914/10285969 stack.c#include #define STACKSIZE 1000typedef struct stack { int data[STACKSIZE]; int top;} stack;stack s;int count =

2013-11-10 15:35:09 555

转载 c++函数重载,下列情况不能重载

1.如果两个函数的参数表相同但是返回类型不同会导致一个重复申明的编译错误,例如 unsigned int max( int i1, int i2 ); int max( int , int ); // 错误: 只有返回类型不同函数的返回类型不足以区分两个重载函数 2.typedef 名为现有的数据类型提供了一个替换名它并没有创建一个新类型因此如果两个函数参数表的区别

2013-11-10 12:30:05 804

转载 Q_UNUSED()应用

Q_UNUSED() 没有实质性的作用,用来避免编译器警告01//比如说02 03int testFunc(int a, int b, int c, int d)04{

2013-11-05 10:28:59 642

转载 linux让命令后台运行,从台运行到前台运行,以及nohup命令的应用

1.在下达的命令后面加上&,就可以使该命令在后台进行工作,这样做最大的好处就是不怕被ctrl+c这个中断指令所中断。 2. 那大家可能又要问了,在后台执行的程序怎么使它恢复到前台来运行呢?很简单,只用执行fg这个命令,就可以了。 3.可能有些同学又要问了,我现在已经在前台运行的命令,我能把它放到后台去运行么?当然可以了,只要执行ctrl+z就可以做到了。是不是很赞啊! 

2013-11-05 09:32:01 2359

原创 g++编译连接c库

c++调用c库时在c++中include c的头文件如:   文件main.cpp           #include"unp.h"//c的头文件          main()         {               .....         } 直接用 g++ main.cpp -lunp - o a.out 可以直接生成a.out但是先

2013-10-30 23:34:37 490

转载 Release版与Debug版程序的问题

转载:http://queniao.blog.51cto.com/10636/652722007-02-09 15:27一、Debug 和 Release 编译方式的本质区别    Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用

2013-10-16 14:50:20 384

转载 VC程序Debug版本和Release版本运行不一致问题

转载http://write.blog.csdn.net/postedit最近接了公司以前一个网络管理系统的项目,接着做。发现,一些功能Debug版本可以正常运行,而Release版本则报错。调试了几天发现了几个Debug版本与Release不一致的地方。1. 对变量的初始化不一致。例如,char字符串匹配,在Debug正常,而Release不行,增加了memset(buf, '\0',

2013-10-16 14:15:46 466

原创 QDialog对QpushButton的处理

1.QpushButton添加到QDialog不设置setDefault(true);QDialog在setVisible 时将第一个作为QDiolog子类构造的QPushButton设置成焦点控件如:QPushButton *a = new QPushButton(QDialog);QPushButton *b =new QPushButton(QDialog);a将设置

2013-10-12 16:02:22 1070

转载 C++ 的嵌套类模板的特化定义不允许写在类定义的范围内

转载:http://jeffreyloo.blog.163.com/blog/static/12176167020106171424608/C++ 的嵌套类模板的特化定义不允许写在类定义的范围内  2010-07-17 01:42:04|  分类:C/C++编程 |  标签:嵌套类  类模板  特化  |字号大中小 订阅最近在使用在使用模板特

2013-09-24 16:19:44 588

原创 eclipse 常用设置

引用:http://www.360doc.com/content/10/0407/15/1066294_21950848.shtml符号检索:符号检索是对一个工程中所有C/C++源代码中各种符号、名字引用的快速定位。目前优秀的代码编辑环境都支持符号检索,比如:VC内置的Intellisense、VC的Visual Assist X插件、SourceInsight等。目前,无论是

2013-08-27 14:52:25 110

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除