- 博客(11)
- 收藏
- 关注
原创 WebRTC 源码阅读 3——音频类(1)
WebRTC 源码阅读 3——音频类(1) 上一章已知,所有的配置信息汇总到了ConnectionContext中,里面的ChannelManager则是音、视处理的具体类,其类的结构如下: 本小节以音频为例,探究MediaEngineInterface。 MediaEngineInterface // MediaEngineInterface is an abstraction of a media engine which can be // subclassed to support differe
2021-08-09 19:34:45
141
原创 WebRTC 源码阅读 2——初始化
WebRTC 源码阅读 2——初始化 初始化集中于PeerConnectionFactoryInterface PeerConnectionFactoryInterface 一个抽象工厂,用于管理与业务相关的一切抽象类的创建,正如它原本的注释所说: PeerConnectionFactoryInterface is the factory interface used for creating PeerConnection, MeadiaStream,MediaStreamTrack objects。包括
2021-08-05 17:14:14
194
原创 WEBRTC源码阅读 1
WEBRTC源码解读 1 初识流程重要的定义ICE 流程 相关的流程许多博客上都能找到。简单来说,一个WebRtc连接有两端,每个端有各自的媒体流、媒体轨和网络信息,WebRtc主要解决两个问题: 两端的隐藏在NAT后面,所以需要做NAT穿透,用到的协议有STUN或TURN。 两端需要进行媒体流信息协议的匹配,具体来说,可能一个媒体流对应一个媒体轨,也可能一个媒体流融合了多个媒体轨等复杂情况,所以两端应当需要“协商”决定。 所以,WebRtc引入了SDP作为信令,其中包含了网络信息和媒体信息,每端先
2021-07-29 15:28:41
117
原创 ACWING学习(三)——快速幂
快速幂 前提: 任何一个数k都可以由二进制表示,即 k=alogk2logk+...+a121+a020 k = a_{logk}2^{logk} + ...+a_12^1 + a_02^0 k=alogk2logk+...+a121+a020 其中alogkalog(k)−1....a1a0a_{logk}a_{log(k)-1}....a_1a_0alogkalog(k)−1....a1a0就对应了k的二进制!! 一个数的幂可以由二分法拆成: xk=xa020+a121+...+alo
2020-10-10 15:03:55
157
原创 归并排序模版+例题
归并排序 归并排序是排序算法中最为经典的类型,采用了分治策略。时间复杂度为O(lnog(n))O(lnog(n))O(lnog(n)),若采用递归空间复杂度为O(log(n))O(log(n))O(log(n)),采用迭代则为O(1)O(1)O(1)。其主要步骤为: 确定合并区间(相邻) 有序数组合并 其中数组的合并较为简单:(采用清华大学邓公的方法,这儿写容器的版本) void merge(vector<int>& A,int lo ,int mid ,int hi) { //
2020-10-09 15:53:31
437
原创 二分法模版+例题
二分法 二分法实际上非常灵活,虽然原理非常简单,但细节上十分要命,剑指offer上相关题就有两道。不如直接记下相关模版: 注意这儿的模版是左闭右闭的,即[lo,hi][lo,hi][lo,hi],朝向哪边收就保留当前的mid! 找到最左侧的值: vector<int> nums{1,2,3,3,3,4,5,6,7}; int k = 3; int lo = 0 , hi = nums.size()-1; while(lo < hi) { int mid = lo + hi >
2020-10-09 14:49:35
432
原创 ACWING算法基础课学习(一)
数组模仿单链表与邻接矩阵 1.定义 数组不仅仅具体存储的数据是有用的,有时候它的下标同样能够提供非常有用的信息,这一点常常被我们忽略。对于一个链表结构,最基本的元素有节点与next指针,对于每个节点可以用不同的idxiidx_iidxi唯一标识,它所拥有的数据可以使用e[idx]表示,而它的指针则可以用ne[idx]来表示,指向对应的idxjidx_jidxj: e[i]=dataine[i]=j e[i] = data_i\\ne[i] = j e[i]=dataine[i]=j 首先我们开辟能完
2020-09-23 01:32:17
2686
原创 SLAM基础——卡尔曼滤波(二)
Kalman滤波实现鼠标跟踪 首先根据opencv库定义好kalmanTrack的使用类 xk=Ak−1xk−1+Bvk+wkyk=Ckxk+nk x_{k} = A_{k-1}x_{k-1} + Bv_{k} +w_{k}\\ y_{k} = C_{k} x_k + n_{k}\\ xk=Ak−1xk−1+Bvk+wkyk=Ckxk+nk x0∼N(x0ˇ,P0ˇ)wk∼N(0,Qk)nk∼N(0,Rk) x_0 \sim\mathcal N(\check{x_0},\check{P
2020-07-11 10:09:03
286
原创 SLAM基础——卡尔曼滤波(一)
虽然如今的SLAM / VIO已经不太可能再使用卡尔曼滤波作整体的紧耦合优化,但其分析问题的思想却深深影响着现如今基于优化的方法,同时读完《State Estimation for Robotics》后发现之前早期的理解很不到位,导致在之前做扫地机器人时Kalman模块对精度并没有什么影响。所以写下这篇文章加以总结。文章将先从理论推导说起,然后实现基于卡尔曼滤波的鼠标跟踪(c++)。贺博之前实现了python的版本。 首先回顾一下机器人状态估计的经典公式: xk=Ak−1xk−1+Bvk+wky
2020-07-09 11:53:03
880
原创 《深度探索c++对象模型》与《Effective c++》读书笔记
Copy Constructor与条款4:确定对象被使用前已先被初始化 当class object 以"相同class的object"作为初值,其内部通过default memberwise initialization
2020-06-29 18:11:53
172
原创 SLAM基础——滑动窗口中的三角测量
前言:简单的三角化 理想情况下,两张图像中关联的同一个三维特征点 P\ P P 满足下述方程: {s2x2=Ps1R21x1+t21=Ps2x2=s1R1x1+t1 \left\{ \begin{aligned} s_2x_2 = P \\ s_1R_{21}x_1 + t_{21}=P\\ \end{aligned} \right.\\ s_2x_2 = s_1R_1x_1 + t_1\\ {s2x2=Ps1R21x1+t21=Ps2x2=s1R1x1+
2020-05-21 15:24:16
349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人