- 博客(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
194
原创 WebRTC 源码阅读 2——初始化
WebRTC 源码阅读 2——初始化初始化集中于PeerConnectionFactoryInterfacePeerConnectionFactoryInterface 一个抽象工厂,用于管理与业务相关的一切抽象类的创建,正如它原本的注释所说:PeerConnectionFactoryInterface is the factory interface used for creating PeerConnection, MeadiaStream,MediaStreamTrack objects。包括
2021-08-05 17:14:14
253
原创 WEBRTC源码阅读 1
WEBRTC源码解读 1 初识流程重要的定义ICE流程 相关的流程许多博客上都能找到。简单来说,一个WebRtc连接有两端,每个端有各自的媒体流、媒体轨和网络信息,WebRtc主要解决两个问题:两端的隐藏在NAT后面,所以需要做NAT穿透,用到的协议有STUN或TURN。两端需要进行媒体流信息协议的匹配,具体来说,可能一个媒体流对应一个媒体轨,也可能一个媒体流融合了多个媒体轨等复杂情况,所以两端应当需要“协商”决定。 所以,WebRtc引入了SDP作为信令,其中包含了网络信息和媒体信息,每端先
2021-07-29 15:28:41
155
原创 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
198
原创 归并排序模版+例题
归并排序 归并排序是排序算法中最为经典的类型,采用了分治策略。时间复杂度为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
475
原创 二分法模版+例题
二分法 二分法实际上非常灵活,虽然原理非常简单,但细节上十分要命,剑指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
485
原创 ACWING算法基础课学习(一)
数组模仿单链表与邻接矩阵1.定义数组不仅仅具体存储的数据是有用的,有时候它的下标同样能够提供非常有用的信息,这一点常常被我们忽略。对于一个链表结构,最基本的元素有节点与next指针,对于每个节点可以用不同的idxiidx_iidxi唯一标识,它所拥有的数据可以使用e[idx]表示,而它的指针则可以用ne[idx]来表示,指向对应的idxjidx_jidxj:e[i]=dataine[i]=j e[i] = data_i\\ne[i] = je[i]=dataine[i]=j首先我们开辟能完
2020-09-23 01:32:17
2874
原创 SLAM基础——卡尔曼滤波(二)
Kalman滤波实现鼠标跟踪 首先根据opencv库定义好kalmanTrack的使用类xk=Ak−1xk−1+Bvk+wkyk=Ckxk+nkx_{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+nkx0∼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
328
原创 SLAM基础——卡尔曼滤波(一)
虽然如今的SLAM / VIO已经不太可能再使用卡尔曼滤波作整体的紧耦合优化,但其分析问题的思想却深深影响着现如今基于优化的方法,同时读完《State Estimation for Robotics》后发现之前早期的理解很不到位,导致在之前做扫地机器人时Kalman模块对精度并没有什么影响。所以写下这篇文章加以总结。文章将先从理论推导说起,然后实现基于卡尔曼滤波的鼠标跟踪(c++)。贺博之前实现了python的版本。 首先回顾一下机器人状态估计的经典公式:xk=Ak−1xk−1+Bvk+wky
2020-07-09 11:53:03
935
原创 《深度探索c++对象模型》与《Effective c++》读书笔记
Copy Constructor与条款4:确定对象被使用前已先被初始化当class object 以"相同class的object"作为初值,其内部通过default memberwise initialization
2020-06-29 18:11:53
228
原创 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
413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人