- 博客(147)
- 资源 (12)
- 收藏
- 关注
原创 Windows下的QT程序如何感知DPI变化
在qt5.12.2的QtWebEngine模块的QtWebEngineProcess子模块中的下图文件提供了让Windows下的QT程序感知DPI变化的完整代码代码如下:#include <qlibrary.h>#include <qsysinfo.h>#include <qt_windows.h>#include <Tlhelp32.h>class User32DLL {public: User32DLL() : s
2020-08-14 15:17:09
2175
2
原创 _cdecl、_stdcall、_fastcall函数调用约定区别
1. 函数调用过程在C语言中,假设我们有这样的一个函数:int function(int a,int b);调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参
2020-08-12 19:01:59
711
转载 【转】Windows中虚拟内存、物理内存、页面文件、工作集概念
虚拟内存(VirtualMemory)是Windows管理所有可用内存的方式。对于32位Windows系统,每个进程所用到的虚拟内存地址从0到2^32-1,总容量4GB,其中2GB是与操作系统以及其他所有进程所共享,另外2GB分派给进程独占(这就是常说的32位Windows中一个进程最多能用2G内存的由来)。 4GB虚拟地址空间(VirtualAddressSpace,VAS)中,2GB的进程独占VAS是进程隔离的,换句话说,每个进程都可以从RAM或者硬盘上映射到属于自己的2GBVAS。所以虽然32位W.
2020-06-27 22:13:02
2911
原创 Win10右键菜单添加在此处打开CMD命令窗口(亲测有效)
引言Win10系统默认 “Shift+右键” 只能打开powershell,不能打开cmd,只能打开powershell。如果想在该文件夹目录下打开cmd,并且路径指向该目录,可以如下操作,非常快捷,一分钟搞定,亲测有效,特此记录途径在磁盘任意位置建立一个文本文档,打开后复制粘贴如下内容Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cmd_h
2020-06-20 10:47:58
10829
12
转载 【转】Windows-Git之右键没有Git Bash Here的解决办法
操作步骤1、Win+R 打开运行输入regedit 回车打开注册表2、找到[HKEY_CLASSES_ROOT\Directory\Background]。3、在[Background]下如果没有[shell],则右键-新建项[shell]。4、在[shell]下右键-新建项[Git Bash Here],其值为“Git Bash Here",此为右键菜单显示名称。此时在任意位置鼠标右击就能看到Git Bash Here但是没有关联程序,现在还没有实际作用5、 在[Git Bash Here]下右
2020-06-20 08:53:12
1673
原创 WebRTC源码分析-呼叫建立过程之五(创建Offer,CreateOffer,下篇)
介绍MediaSessionDescriptionFactory::CreateOffer过程 && 相关的结构体
2020-06-19 08:42:19
1477
3
原创 WebRTC源码分析——写时复制缓存CopyOnWriteBuffer
1. 引言先立个flag:写完sdp交换过程,回头来补充2. 什么是写时复制3. CopyOnWriteBuffer实现4. 总结
2020-06-12 17:22:28
1552
原创 Windows上抽取头文件脚本命令
引言有时候会遇到抽取第三方开源库所有头文件的需求,比如抽取WebRTC/Potocbuf的所有头文件Windowsecho off:: 定义源目录set sourcePath=%1::定义目标路径set resulePath=%2xcopy %sourcePath%\*.h %resulePath%\ /s /e /c /y /h /rpause可以将上述脚本放到一个copyh.bat文件中,并且将该文件放到系统的Path路径下,这样就可以随意使用该bat文件来抽取源目录下的所
2020-05-20 20:35:29
663
原创 WebRTC源码分析——DataChannel及其相关类
1. 引言2. DataChannelController3. DataChannelTransportInterface4. DataChannel
2020-05-14 22:03:04
5156
4
原创 WebRTC源码分析——记一次Offer && Answer SDP备用
1. 引言这两个sdp是进行1v1会话时获取的,这个会话中有:双向传递音视频 + 单向传递1路白板视频(抓取桌面) + 双向数据通道。此处记录下来,用于后续分析2. Offer SDPv=0o=- 6577481781483453854 2 IN IP4 127.0.0.1s=-t=0 0a=group:BUNDLE 0 1 2 3a=msid-semantic: WMS audio_label video_labelm=audio 9 UDP/TLS/RTP/SAVPF 111 103
2020-05-10 17:57:00
1230
原创 WebRTC源码分析-呼叫建立过程之四(下)(创建数据通道DataChannel)
1. 引言创建完PeerConnectionFactory 和 PeerConnection这两个API层的操盘对象之后,紧接着需要初始化本地的媒体,也即创建本地的音频轨、视频轨、数据通道,并将这些本地的媒体轨道添加到PeerConnection对象中。如图中红色标注所示。本文将详细描述上述数据通道的创建细节。2. 数据通道的创建3. 数据通道对象4. 总结...
2020-05-07 10:49:45
5177
2
原创 WebRTC源码分析——RtpTransceiver类
1. 引言RtpTransceiver类实现了api层的RtpTransceiverInterface接口,2. RtpTransceiver3. 总结
2020-04-29 23:21:11
1588
1
原创 WebRTC源码分析——引用计数系统
1. 引言WebRTC中自己实现了一套引用计数系统,在其基础库模块rtc_base/refcount中提供了相关实现,如下图所示:主要由四个类RefCountInterface、RefCounter、RefCountedObject、scoped_refptr一起构建起WebRTC中的引用计数系统。2. RefCountInterfaceRefCountInterface是一个抽象接口类...
2020-04-21 00:14:21
3141
9
原创 WebRTC源码分析——随机值(数、字符串)生成系统
1 引言WebRTC的rtc_base/helpers.h 和 rtc_base/helpers.cc提供了生成随机值的各种方法:生成多样长度的随机字符串、生成UUID、生成32位/64位的整数随机ID、生成随机的Double浮点型值,生成大于0的32位整数随机ID值等等。本文将对这个随机值生成模块进行详细的介绍,由于时间关系,暂且先放置到这儿占位,以便其他文章引用,有时间就来完成文本的详细描...
2020-04-19 12:13:20
1883
原创 WebRTC源码分析——Call模块
目录1. 引言2. Call对象的创建2.1 创建CallFactory对象2.2 创建Call对象2.2.1 PeerConnection.CreateCall_w2.2.2 CallFactory.CreateCallCall::Create3 Call功能详述4 总结1. 引言Call模块是WebRTC会话中不可缺少的一个模块,一个Call对象可以包含多个发送/接收流,且这些流对应同一个...
2020-04-18 22:16:56
3130
4
原创 WebRTC源码分析——RtcEventLog事件日志模块
1. 引言从RtcEventLog的名称粗略看来是WebRTC中的事件日志系统,具体是做什么,如何做的,当前还未看全源码,所以不便下结论。比较确定的是RtcEventLog和WebRTC中RTC_LOG宏所输出的日志是不相干的两个系统。2. RtcEventLog对象的创建3. RtcEventLog对象的作用4. 总结...
2020-04-17 09:42:29
1410
7
原创 WebRTC源码分析——视频流水线建立
由于文章在有道云笔记中写的,粘贴复制到简书很多图片没法一次性上传上,偷懒,想看图片的可以看下面笔记的链接:文档:WebRTC视频流水线建立.note1. 引言常见的音视频会话中,一端将本地的音视频数据传输给对端将至少经历3个步骤:采集->编码->传输,将数据从采集模块到发送模块的流动称为音视频数据的流水线。接下来几篇文章中将以视频数据为本来讨WebRTC是如何建立...
2020-01-17 21:21:28
1616
2
原创 Windows平台下WebRTC源码下载及编译
由于文章在有道云笔记中写的,粘贴复制到csdn很多图片没法一次性上传上,因此就不在博客上粘贴了,此处粘贴下我的有道云笔记的链接:文档:Windows平台下Webrtc编译.note...
2020-01-17 21:16:21
976
6
原创 保存webrtc::VideoFrame到YUV文件
void SaveVideoFrameToFile(const webrtc::VideoFrame& frame, std::string file) { rtc::scoped_refptr<webrtc::VideoFrameBuffer> vfb = frame.video_frame_buffer(); static FILE *fp = fo...
2020-01-02 15:58:10
2171
原创 存HBITMAP到位图bmp文件
BOOL SaveBitmapToFile(HBITMAP hBitmap, CString szfilename) { HDC hDC; //当前分辨率下每象素所占字节数 int iBits; //位图中每象素所占字节数 WORD wBitCount; //定义调色板大小, 位图中像素字节大...
2020-01-02 15:53:04
522
原创 WebRTC源码分析——呼叫建立过程之三(创建PeerConnection)
0 前言当端与服务器建立连接之后,可以通过与服务器的信令交互获知对等端点的存在。当需要与对方端点建立P2P连接时,第一步是先创建PeerConnectionFactory对象,然后再通过PeerConnectionFactory工厂来创建PeerConnection对象。如图中红色字体所示。在example/peerconnection_client工程中,发起方调用如下代码来创建PeerC...
2019-11-25 23:32:53
9387
11
原创 WebRTC源码分析-PeerConnectionFactory简述
前言本文简单的描述下PeerConnectionFactory类持有的数据成员,以及除了创建PeerConnection外还提供哪些能力,但不对这些方法进一步跟踪源码,留待以后。PeerConnectionFactory的数据成员 bool wraps_current_thread_; // 信令线程是否Wrap而来 rtc::Thread* network_thread_; ...
2019-11-22 17:13:00
1505
原创 WebRTC源码分析-线程基础之跨线程同步MethodCall
前言MethodCall类位于WebRTC的api/proxy.h中,如其名而知该类的作用是进行某个方法调用。实际上,是用来实现某个指定方法在指定线程上同步执行并返回结果的效果。其实该文件中并没有真正的MethodCall类,而是MethodCall0,MethodCall1,…,MethodCall5,还有ConstMethodCall0,ConstMethodCall1。这些数字代表什么意思...
2019-11-21 21:49:13
1680
3
原创 WebRTC源码分析-呼叫建立过程之一(综述)
前言基于WebRTC源码下example/peerconnect_client,example/peerconnect_server工程打算写一个典型的呼叫建立过程的源码分析系列文章,本文是一个序章。example/peerconnect_client与,example/peerconnect_server实现了一个Demo性质的P2P音视频会话程序,其中有3个主要的类:MainWnd类进行界面...
2019-11-20 18:08:02
6255
3
STUN-RFC3489中英文合集.zip
2019-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人