- 博客(32)
- 资源 (147)
- 收藏
- 关注
原创 【算法】 二分查找
二分查找看着是个最简单的算法没想到细节很头疼细节是魔鬼啊leecode标准二分查找内存占用很大??注意, lo 可以== hileft > right (这种情况发生于当left, mid, right指向同一个数时,这个数还不是目标值,则整个查找结束。)注意循环条件: left <= right中间位置计算: mid = left + ((right -left) >> 1)左边界更新:left = mid + 1右边界更新: right = m
2020-06-30 11:23:06 2785
原创 【算法】【sort 2.2.1】归并排序
分治法代表递归sort + mergelabuladong排序过程[Running] g++ test_sort_guibing_2.2..1.cpp -std=c++14 -o test_sort_guibing_2.2..1.exe && ./test_sort_guibing_2.2..1.exe 81 72 67 89 80 65 77 83 82 68 70 88--resize--12--b--sort;lo 0 hi 11sort;lo 0 hi..
2020-06-28 22:47:14 362
原创 【算法】【sort 2.1.3】希尔排序
shell sort是一种优化的 插入排序基于插入排序,每个不断缩小的区间得到后,都要做插入排序效率不稳定,但是一般比 插入排序好插入排序主要是做相邻的交换这东东有三层for执行过程:[Running] g++ test_sort_xier_2.3.cpp -std=c++14 -o test_sort_xier_2.3.exe && ./test_sort_xier_2.3.exe 100 99 8 7 200 3 1 4337 max h 7 43 99
2020-06-28 13:10:29 841
原创 【粗读webrtc】 jitterbuffer 2 音视频抖动缓冲区
webrtc音视频抖动缓冲区伪代码webrtc音视频抖动缓冲区伪代码rtp包几个时间值: 接收时间 ,发送时间,网络传输时间,网络延迟时间(网络排队)rtp包的接收时间 = sendtime + transferTimertp包的接收时间 = sendtime + transferTime + netdelayTime抖动缓冲区目的就是为了消除网络延迟对音视频的平滑播放造成的影响,如果没有抖动缓冲区,就可能播放的视频时快时慢,播放的音频断断续续。计算抖动的第一步就是计算网络的延迟,第二部根据.
2020-06-28 01:56:36 1407
原创 【粗读webrtc】jitterbuffer 3 :VCMInterFrameDelay 帧间延迟
代码量不大核心VCMInterFrameDelay计算framedelay 帧间延迟 公式: *delay = static_cast<int64_t>(currentWallClock - _prevWallClock - _dTS);帧时间戳的补偿值 dTS 计算: // Compute the compensated timestamp difference and convert it to ms and round // it to closest inte..
2020-06-28 01:27:42 783
原创 【MBP】macos 中使用 wintogo 安装 win10到NVME,然后虚拟机引导启动
设备挂载到win10 虚拟机的方法win to gogithub开源的cs工程5.42 版本win10 专业版企业版会蓝屏因为我没有usb 转typec所以我只能用mac 虚拟机 虚拟一个windows可大了,24G,我只好删除了好多东东NVME + typec1 tb ns550 wb绿联 typecmac 虚拟机没断网安装会有这个提示:虚拟机 引导外部设备,只有65Mwintogo 安装后,usb设备启动 1TB WB 硬盘的系统然后没有..
2020-06-27 23:23:21 2700
原创 【粗读webrtc】RTCP扩展反馈报文 接收 触发 nack重传
RTCP扩展反馈报文webrtc的rtp重传代码分析rtp也有nack机制,webrtc基于rtp实现了重传在一定程度上保证可靠性。rfc4585,看到了这么一段 : RTCP扩展反馈报文,有一种nack报文当FMT=1并且PT=205时,代表此报文是个NACK报文NameValueBrief DescriptionRTPFB205Transport layer FB messagePSFB206Pyload-specific FB message.
2020-06-27 11:00:38 732
原创 【粗读webrtc】视频帧接收到渲染 : VCMReceiver
VCMReceiverO:\WEBRWTCSTORE\webrtc-checkout\src\modules\video_coding\receiver.ccVCMReceiver 提供NACKLIST对外apistd::vector<uint16_t> VCMReceiver::NackList(bool* request_key_frame) { return jitter_buffer_.GetNackList(request_key_frame);}...
2020-06-27 07:50:58 548 1
原创 【macbook】vscode 配置支持c++11
快吐血了c++98 就是改不过来重新建立一个目录执行code runner,说没配置加了根据文件类型来的配置 竟然不跑安装code runner 插件安装后,会有一个三角在右边,点一下就可以编译运行加 task.json 都不行自己简历一个 .vscode 目录新建 task.json改g++ 都不行//I used this to solve my problem. Open your terminal//bashecho "alias g++='g++ ..
2020-06-26 18:53:23 5759 3
原创 【粗读webrtc】 jitterbuffer1: VCMJitterBuffer
VCMJitterBufferVCMJitterBuffer 是JB的核心类了把2019年的版本,webrtc已经不用这个机制了收到视频数据解析出rtp包后,会调用InsertPacket 插入JB中//向frame中插入一个包,frame是GetFrame() 返回的,如果GetFrame 返回值小于等于0,//那么,这个frame是无效的,那么InsertPacket 返回后,这个(frame指针??)必须丢弃。 // Inserts a packet into a frame ret
2020-06-26 15:12:54 695
原创 【粗读webrtc】RtpPacket
涉及到rtp 协议,完全说清楚,应该比较麻烦。封装的包数据:CopyOnWriteBuffer // Buffer. rtc::CopyOnWriteBuffer Buffer() const { return buffer_; }获取内存数据 const uint8_t* data() const { return buffer_.cdata(); }扩展:获取扩展 bool GetExtension(FirstValue, Values...) const;..
2020-06-26 12:25:57 402
原创 【粗读webrtc】 RtpPacketToSend
rtp_rtcp_format 模块O:\WEBRWTCSTORE\webrtc-checkout\src\modules\rtp_rtcp\source\rtp_packet_to_send.hRtpPacketToSend继承 RtpPacket业务数据包:封装在rtpsend包里,业务自定义 std::vector<uint8_t> application_data_;业务包访问: // Additional data bound to the RT..
2020-06-26 12:05:05 402
原创 【粗读webrtc】NACK 重传 :RtpPacketHistory NackList
webrtc支持RTPFB和PLI FB两种重传方式建立连接时,写入SDPO:\WEBRWTCSTORE\webrtc-checkout\src\media\engine\webrtc_video_engine.ccvoid AddDefaultFeedbackParams(VideoCodec* codec) { // Don't add any feedback params for RED and ULPFEC. if (codec->name == kRedCodecNam.
2020-06-26 11:48:10 474
原创 【粗读webrtc】创建mediaengine
本人也写过自己mediaengine现在看下webrtc是怎么做的O:\WEBRWTCSTORE\webrtc-checkout\src\media\engine\webrtc_media_engine.hMediaEngineInterfacemediaengine 是一个 MediaEngineInterface// MediaEngineInterface is an abstraction of a media engine which can be// subclassed..
2020-06-25 21:22:42 485
原创 【粗读webrtc】UnhandledPacketsBuffer
media 里面有个 UnhandledPacketsBuffer#include <stdint.h>#include <functional>#include <tuple>#include <utility>#include <vector>#include "rtc_base/copy_on_write_buffer.h"namespace cricket {class UnhandledPacketsBuff..
2020-06-25 21:14:55 234
原创 【整理】webrtc 线程模型
webrtc 线程模型整理陈子兴 [WebRTC架构分析]WebRTC 的线程模型前言WebRTC 作为一个实时音视频通信系统,包含了信令控制、音视频传输、音视频采集、音视频编码、音视频解码、音视频渲染等所有功能。由于其功能多样性,注定了系统结构的复杂性,再加上音视频需要做很多编码前后的处理,算法非常复杂,逻辑结构也复杂。为了在复杂网络环境下,保证音视频通信的流畅性,WebRTC 还做了很多流控、带宽预测、拥塞控制算法。为此,为了降低系统的复杂性,提高系统的运行效率,WebRTC 设计了一套多线程框
2020-06-25 09:36:15 1162
原创 webrtc架构整理
webrc架构 整理对外的api 是 peerconnection类内部是会话管理层引擎层(ve ae 传输)系统/硬件 相关 适配层webrtc里有一些名词架构图webrtc架构为2层:应用层、核心层最核心的是绿色的部分,是WebRTC提供的核心功能。紫色部分是浏览器提供的js API层。[即浏览器对WebRTC核心层的C++做了封装]WebRTC库属于核心层(绿色部分)。核心层比较复杂:分为4层:1 C++ API: 提供给外边的API接口(主要是对等连接P
2020-06-25 09:16:35 495
原创 【grpc】内存分配封装
grpc cpp的内存相关封装内存分配封装了好几种malloc方法,可选?static gpr_allocation_functions g_alloc_functions = {malloc, zalloc_with_calloc, realloc, free};使用前set一个方法进来void gpr_set_allocation_functions(gpr_allo
2020-06-20 10:23:23 539
原创 【grpc resolver】 socket 工具类
grpc 1.22.0最近实现了基于c core的resolver 插件grpc 是跨平台的 c core实现字节序转换grpc_htons 本地的整型转为网络字节序列相关跨平台实现//grpc_htons 转换输入的端口号 存储到地址的 sin_port中 ((grpc_sockaddr_in*)addr)->sin_port = grpc_htons(static_cast<uint16_t>(port)); ..
2020-06-20 10:01:09 329
原创 ns_turn_khash.h
ns_turn_khash.h/* The MIT License Copyright (c) 2008, by Attractive Chaos <attractivechaos@aol.co.uk> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (th.
2020-06-10 13:41:18 259
原创 windows10 vs2019 远程ubuntu 生成并运行ACoturn
上一篇 cmake已经ok了,很多库都安装了现在构建coturnninja +clang与gcc 不同的,生成的位置不是cmake-build这样的vs 生成的是out这样的,具体路径/root/.vs/coturn/aa25c316-6fa3-4ba1-87b0-c90eed75c387/out/build/event2-config.h/root/.vs/coturn/aa25c316-6fa3-4ba1-87b0-c90eed75c387/out/build/Linux-C..
2020-06-09 23:46:48 660
原创 visual studio 2019 远程ubuntu18.04 使用clang 构建 coturn
clion 远程linux 是可行的,这个我已经在ubuntu上试过了clion会通过ssh ftp什么的协议,在远程linux上创建一个临时目录当然,这个目录是可以让你来配置的,也可用默认的然后可以debug 远程,远程跑,本地代码断点配置自动同步,可以把本地修改实时自动更新过去windows 上可用visual studio ,vs 我感觉实际使用上比clion要好用一些。clion也可以配置为vs的功能,但是速度上,查找上,还是vs强大。vs2019 打开cmake拉取我再..
2020-06-09 12:58:19 830
原创 [zz] WebRTC 之ICE 流程
turn stun ice 协议 ,包括了好几个rfc知道协议的内容/流程,才能看懂 服务端代码这个时候,这种科普的文章方便入门在Chrome中使用WebRTC ICE服务进行端口扫描在Chrome中使用WebRTC ICE服务进行端口扫描什么是ICE Server?如前所述,扫描技术使用WebRTC ICE服务。ICE服务是WebRTC RTCPeerConnection用于自我发现、NAT遍历和中继的STUN或TURN服务,通过将服务器列表传递到RTCPeerConnectio..
2020-06-09 01:23:55 987
原创 【ICE】coturn 使用CMake方式引入spdlog预编译库
coturn目录结构预先构建spdlog官方仓库root@zhangbin-i7660u:/home/zhangbin/ICE/debug_coturn/coturn/thirdparty# git clone https://github.com/gabime/spdlog.git正克隆到 'spdlog'...remote: Enumerating objects: 71, done.remote: Counting objects: 100% (71/71), done..
2020-06-07 13:07:00 1179
原创 【libevent2】clion构建cmake工程: coturn 集成libevent2
coturn和libevent2 工程一起 cmake 化,cmakelist.txt方cortun目录下,libevent2在src/libevent2-2.1-stable下add subdirecotry后,libevent2 会自动生成,libevent2 会自动在coturn的编译目录下生成event2-config.h![在这里插入图片描述](https://img-blog.csdnimg.cn/20200606184322322.png?x-oss-process=image/..
2020-06-06 21:33:10 675
原创 【ICE 】 coturn :开源TURN and STUN Server 实现
coturnwebrtc 使用coturn作为ICE 服务器通过ICE 可以基于DTLS 作音视频传输原生p2p 技术原子rfc5766 turn serverThis project evolved from rfc5766-turn-server project (https://code.google.com/p/rfc5766-turn-server/). There are many new advanced TURN specs which are going far beyond
2020-06-06 17:23:30 1144
原创 windows打印GetLastError
DWORD winErr = GetLastError();std::string Error(DWORD dwErr){ char buff[512]; DWORD systemLocale = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL); FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM/* | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_ALLO...
2020-06-05 17:16:04 735
原创 【UML】一个升级程序的类图看升级程序等功能
优秀的研发人员首先是一个设计师cpp的开发离不开面向对象java这种高级语言更是抽象封装的提现本文以自己遇到的一个升级程序为例,说说UML 图解设计模式UML 里用到的几种关系-<> 抽象类带空心箭头的虚线 表示 【实现继承】,A继承B 暨 A 实现了B带空心箭头的实线 标识 【泛化继承】,带实心箭头的实线 【组合】(A是B其中的一部分)带空心箭头的实线 【聚合】 (A参与到B其中)一根实线 【关联】带箭头的虚线 【依赖】一条直线 【关联关系(asso..
2020-06-03 17:22:41 372
原创 【libevent2】最小堆和libevent2的实现
libevent2 的最小堆最小堆一颗完全二叉树每个根节点都比自己的叶子小左、右(如果有) 叶子之间没有大小关系具体对外api 有 插入、删除(根据啥来删除呢?位置索引?)、获取最优(就是根节点)、主要操作:上浮、下沉、获取左叶子、获取右叶子、比较大小关键插入是在最后插入,然后上浮删除是与最后一个对调,然后下沉每次操作后,这棵树还是一颗最小堆上浮、下沉这俩操作最难,为什么呢,因为要遍历、要交换、要比较。labuladong说过:因为⼆叉树是最容易培养框架思维的..
2020-06-03 12:59:10 362
原创 [zz] P2P通信原理与实现
P2P通信原理与实现转载这位大神前言当今互联网到处存在着一些中间件(Middle Boxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信. 这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的建立. 目前部署的中间件多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求. 大多数中间件实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化
2020-06-02 00:46:49 534
原创 【zz】WebRTC TURN协议
P2P通信标准协议之TURN转载这位知乎大神简单点说,NAT的作用就是借一个公网地址给CLIENT, 然而这个公网地址并不好使, 于是turn server 就是再借一个好使的公网地址给CLIENT,这样谁都可以发起与CLIENT的通讯。 STUN的作用就是让CLIENT探测到自己的NAT是什么类型,CLIENT_A与CLIENT_B之间需要打洞,先各自通过STUN探测到自己的NAT是什么类型, 然后通过turn 建立通讯, 交换信息后,发现可以打洞,就喊一二三大家一起发力打洞,打洞成功,CLIE
2020-06-01 23:15:40 393
原创 windows 宽窄字符串转换
static std::string str2UTF8(std::string &str) { int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wchar_t * pwBuf = new wchar_t[nwLen + 1]; ZeroMemory(pwBuf, nwLen * 2 + 2); ::MultiByteToWideChar(CP_ACP, 0, str.c_str(...
2020-06-01 16:37:23 1503
DX910-SW-99002-r3p2-01rel1.tgz
2015-09-01
usb转串口适用于win8/8.1/10
2015-08-02
nexus5-cm11 提取的boot.img
2015-03-30
nexusd5 android5.0 型号LRX210 ROOT所需文件打包
2014-11-23
Creating Android Applications: Develop and Design 源码
2014-04-16
moto MB865 ROOT 工具包
2014-03-28
UPnP-arch-DeviceArchitecture-v1.1.pdf
2014-03-14
live.2013.10.18windows
2013-10-19
Whole Tomato Visual Assist X 2023.1 v10.9.2476.0 (19 Jan 2023)
2023-05-28
vs2022 visual assist x10.9.2451.0 by piaopyun/oledlg
2022-09-23
VS2022 VISUAL ASSIST X 小番茄 v10.9.2435.0 VA_X_Setup2440_0.exe
2022-02-25
[FLV 解析工具]FLV_UI_Parse.exe
2021-10-08
【右键菜单直接修改工具】shmnviewRightMenuModiy.zip
2021-10-08
openssl-OpenSSL_1_1_1-stable.7z
2020-07-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人