<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[abc1231987的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/abc1231987</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; abc1231987]]></copyright><item><title><![CDATA[libuv 基本概念]]></title><link>https://blog.csdn.net/abc1231987/article/details/121693636</link><guid>https://blog.csdn.net/abc1231987/article/details/121693636</guid><author>abc1231987</author><pubDate>Fri, 03 Dec 2021 10:58:38 +0800</pubDate><description><![CDATA[libuv是一个跨平台库，是围绕着事件驱动的异步I/O模型来设计的。

本库不止提供了对不同I/O polling机制的抽象，handles和streams机制也提供了一个更高层的对于sockets和其他实体的抽象。本库还提供了跨平台的文件I/O操作及线程功能。

最底层的socket相关操作有epoll/kqueue和event ports，这些事基于unix like系统的，在这些系统特定的API之上抽象出了一层uv_io_t结构用于提供统一的unix-like平台上的...]]></description><category></category></item><item><title><![CDATA[libuv 的Processes]]></title><link>https://blog.csdn.net/abc1231987/article/details/121682939</link><guid>https://blog.csdn.net/abc1231987/article/details/121682939</guid><author>abc1231987</author><pubDate>Thu, 02 Dec 2021 18:00:52 +0800</pubDate><description><![CDATA[libuv提供了相当多的子进程管理函数，并且是跨平台的，还允许使用stream，或者说pipe完成进程间通信。

在UNIX中有一个共识，就是进程只做一件事，并把它做好。因此，进程通常通过创建子进程来完成不同的任务（例如，在shell中使用pipe）。 一个多进程的，通过消息通信的模型，总比多线程的，共享内存的模型要容易理解得多。

当前一个比较常见的反对事件驱动编程的原因在于，其不能很好地利用现代多核计算机的优势。一个多线程的程序，内核可以将线程调度到不同的...]]></description><category></category></item><item><title><![CDATA[libuv 基础]]></title><link>https://blog.csdn.net/abc1231987/article/details/121680453</link><guid>https://blog.csdn.net/abc1231987/article/details/121680453</guid><author>abc1231987</author><pubDate>Thu, 02 Dec 2021 17:06:29 +0800</pubDate><description><![CDATA[libuv强制使用异步和事件驱动的编程风格。它的核心工作是提供一个event-loop，还有基于I/O和其它事件通知的回调函数。libuv还提供了一些核心工具，例如定时器，非阻塞的网络支持，异步文件系统访问，子进程等。

Event loops

在事件驱动编程中，程序会关注每一个事件，并且对每一个事件的发生做出反应。libuv会负责将来自操作系统的事件收集起来，或者监视其他来源的事件。这样，用户就可以注册回调函数，回调函数会在事件发生的时候被调用。event...]]></description><category></category></item><item><title><![CDATA[uwebsoket的编译]]></title><link>https://blog.csdn.net/abc1231987/article/details/121606200</link><guid>https://blog.csdn.net/abc1231987/article/details/121606200</guid><author>abc1231987</author><pubDate>Mon, 29 Nov 2021 11:47:48 +0800</pubDate><description><![CDATA[1）添加OpenSSL libuv 的头文件依赖性 ，下载openssl的版本（win64 openssl v1.1.1l)。







2）添加库的依赖项目







3）输入为



libuv.lib psapi.lib userenv.lib iphlpapi.lib capi.lib dasync.lib li apps.lib libcrypto.lib
libcrypto_static.lib libssl.lib libssl_static.lib libtestutil.lib..]]></description><category></category></item><item><title><![CDATA[webrtc 协议博客参考]]></title><link>https://blog.csdn.net/abc1231987/article/details/121574387</link><guid>https://blog.csdn.net/abc1231987/article/details/121574387</guid><author>abc1231987</author><pubDate>Sat, 27 Nov 2021 11:17:43 +0800</pubDate><description><![CDATA[WebRTC 1.0: Real-Time Communication Between Browsers
]]></description><category></category></item><item><title><![CDATA[webrtc 中的scoped_refptr]]></title><link>https://blog.csdn.net/abc1231987/article/details/121573419</link><guid>https://blog.csdn.net/abc1231987/article/details/121573419</guid><author>abc1231987</author><pubDate>Sat, 27 Nov 2021 10:43:30 +0800</pubDate><description><![CDATA[C++中在堆中申请的内存都需要程序员自己手动删除，这是C++容易造成内存泄漏的根本原因。使用过Java的朋友都清楚，Java有完善的内存回收机制，无需程序员调用释放内存的操作。C++里是否能够实现类似Java的自动回收内存的机制呢？答案是肯定的，而Webrtc中的scoped_refptr就是实现类似的功能。

首先我们从这个类的名字入手去理解它的含义。名字由三个单词组成，分别为scope，ref，ptr。

先看ptr，C++程序员都知道这是pointer指针的意思，但是类名中包含指针的语...]]></description><category></category></item><item><title><![CDATA[c++ 11 lambda表达式]]></title><link>https://blog.csdn.net/abc1231987/article/details/121556759</link><guid>https://blog.csdn.net/abc1231987/article/details/121556759</guid><author>abc1231987</author><pubDate>Fri, 26 Nov 2021 14:00:31 +0800</pubDate><description><![CDATA[lambda表达式的语法形式：

[ capture ] ( params ) opt -&gt; ret { body; };

[capture](parameters) mutable -&gt;return-type{statement}

其中carpture是捕获列表，params是参数，opt是选项，ret则是返回值的类型，body则是函数的具体实现。

1.捕获列表描述了lambda表达式可以访问上下文中的哪些变量。

[] :表示不捕获任何变量

[=]：表...]]></description><category></category></item><item><title><![CDATA[VS 全部注释和取消注释]]></title><link>https://blog.csdn.net/abc1231987/article/details/121440015</link><guid>https://blog.csdn.net/abc1231987/article/details/121440015</guid><author>abc1231987</author><pubDate>Sat, 20 Nov 2021 15:16:55 +0800</pubDate><description><![CDATA[注释： 先CTRL+K，然后CTRL+C

取消注释： 先CTRL+K，然后CTRL+U
]]></description><category></category></item><item><title><![CDATA[zlib 库的编译]]></title><link>https://blog.csdn.net/abc1231987/article/details/121435274</link><guid>https://blog.csdn.net/abc1231987/article/details/121435274</guid><author>abc1231987</author><pubDate>Sat, 20 Nov 2021 09:45:34 +0800</pubDate><description><![CDATA[1）用管理员方式打开zlib 目录，执行bld_ml64.bat

2） 执行如下命令生成库

nmake -f win64/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"

zlib1.2.11的VS2019动态库静态库命令行编译_心飞的博客-CSDN博客

记 windows命令行编译64位zlib - 知乎

VS编译 x64版本zlib库 - 乌合之众 - .]]></description><category></category></item><item><title><![CDATA[zlib 的编译]]></title><link>https://blog.csdn.net/abc1231987/article/details/121435107</link><guid>https://blog.csdn.net/abc1231987/article/details/121435107</guid><author>abc1231987</author><pubDate>Sat, 20 Nov 2021 09:30:10 +0800</pubDate><description><![CDATA[1）用管理员方式打开zlib 目录，执行bld_ml64.bat

2） 执行如下命令生成库

nmake -f win64/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"



zlib1.2.11的VS2019动态库静态库命令行编译_心飞的博客-CSDN博客

记 windows命令行编译64位zlib - 知乎

VS编译 x64版本zlib库 - 乌...]]></description><category></category></item><item><title><![CDATA[Openssl 版本编译]]></title><link>https://blog.csdn.net/abc1231987/article/details/121434773</link><guid>https://blog.csdn.net/abc1231987/article/details/121434773</guid><author>abc1231987</author><pubDate>Sat, 20 Nov 2021 08:52:31 +0800</pubDate><description><![CDATA[一、准备
1、安装 perl

http://strawberryperl.com/download/5.28.1.1/strawberry-perl-5.28.1.1-64bit.msi

2、下载 openssl 1.0.2u

https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz

二、编译
1、打开 vs2019 命令行工具

切记：

不要使用 x86 和 x64 的交叉命令行工具，

要编译 x86 版本的 openssl，]]></description><category></category></item><item><title><![CDATA[c资料共享]]></title><link>https://blog.csdn.net/abc1231987/article/details/121402005</link><guid>https://blog.csdn.net/abc1231987/article/details/121402005</guid><author>abc1231987</author><pubDate>Thu, 18 Nov 2021 15:26:29 +0800</pubDate><description><![CDATA[GitHub - jobbole/awesome-cpp-cn: C++ 资源大全中文版，标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。由「开源前哨」和「CPP开发者」微信公号团队维护更新。
]]></description><category></category></item><item><title><![CDATA[windows VS2017 编译最新的libuv 库]]></title><link>https://blog.csdn.net/abc1231987/article/details/121335872</link><guid>https://blog.csdn.net/abc1231987/article/details/121335872</guid><author>abc1231987</author><pubDate>Mon, 15 Nov 2021 15:39:43 +0800</pubDate><description><![CDATA[下载libuv：https://github.com/libuv/libuv（注意下载 libuv-1.35.0.tar.gz 版本，含有vcbuild.bat 文件，往后的版本没有）
	下载gyp（https://github.com/turbulenz/gyp）解压后放在libuv/build下
	gyp安装需要python环境，下载Python2.x（https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi）安...]]></description><category></category></item><item><title><![CDATA[epoll 的边缘触发与水平触发]]></title><link>https://blog.csdn.net/abc1231987/article/details/121324330</link><guid>https://blog.csdn.net/abc1231987/article/details/121324330</guid><author>abc1231987</author><pubDate>Sun, 14 Nov 2021 21:58:28 +0800</pubDate><description><![CDATA[水平触发

对于读操作：只要缓冲内容不为空，LT模式返回读就绪。
	对于写操作：只要缓冲区还不满，LT模式会返回写就绪。

#include 
#include 
#include 

int main()
{
     
    int epfd, nfds;
    char buf[256];
    struct epoll_event event, events[5];
    epfd = epoll_create(1);
    event.data.fd = STDIN_FILENO;
  ]]></description><category></category></item><item><title><![CDATA[webrtc 交互过程]]></title><link>https://blog.csdn.net/abc1231987/article/details/121283999</link><guid>https://blog.csdn.net/abc1231987/article/details/121283999</guid><author>abc1231987</author><pubDate>Fri, 12 Nov 2021 11:09:57 +0800</pubDate><description><![CDATA[图一： ICE建立连接的过程

 用户A 向用户B发起WEBRTC呼叫时，A首先创建自己的会话描述信息(SDP),之后通过信令服务器发送给B。同时B同样创建自己的会话信息，应答发给A。这个过程由ICE控制。现在A和B都拥有了自己的会话描述信息，接下来就可以传输媒体数据了。
...]]></description><category></category></item><item><title><![CDATA[c++11 新特性]]></title><link>https://blog.csdn.net/abc1231987/article/details/121280773</link><guid>https://blog.csdn.net/abc1231987/article/details/121280773</guid><author>abc1231987</author><pubDate>Fri, 12 Nov 2021 10:31:18 +0800</pubDate><description><![CDATA[1） C++11标准更好地管理和使用动态内存，防止内存泄漏和悬垂指针，定义了两个智能指针类型，分别是shared_ptr和unique_ptr。shared_ptr可以让多个智能指针指向同一个对象，而unique_ptr只容许一个指针独自指向一个对象。

Shared_ptr是用于管理动态内存的指针，它拥有垃圾回收机制。可与其他对象共享管理，这种指针具有取得指针所有权并共享该所有权的能力。当最后一个指针释放所有权时，也就是引用计数为0时，指针的所有者将删除该指针。Shared_...]]></description><category></category></item><item><title><![CDATA[webrtc 二次开发参考]]></title><link>https://blog.csdn.net/abc1231987/article/details/121193992</link><guid>https://blog.csdn.net/abc1231987/article/details/121193992</guid><author>abc1231987</author><pubDate>Sun, 07 Nov 2021 17:12:22 +0800</pubDate><description><![CDATA[webrtc demo编译笔记 - 尚码园

webrtc 编译 · 音视频/C++/k8s/Docker等等 学习笔记 · 看云
]]></description><category></category></item><item><title><![CDATA[windows 提取webrtc的所有头文件]]></title><link>https://blog.csdn.net/abc1231987/article/details/121190962</link><guid>https://blog.csdn.net/abc1231987/article/details/121190962</guid><author>abc1231987</author><pubDate>Sun, 07 Nov 2021 14:14:29 +0800</pubDate><description><![CDATA[windows下：

进入webrtc目录（即src上级目录） ，写上此脚本



echo off  
:: 定义源目录
set sourcePath=.\src
::定义目标路径
set resulePath=.\include 
xcopy %sourcePath%\*.h %resulePath%\ /s /e /c /y /h /r 
pause

此方式还会保留之前的目录结构

linux下：

注:脚本应当在WebRTC的webrtc目录的上一级目录运行 这样才能对应头文件中的相对路...]]></description><category></category></item><item><title><![CDATA[webrtc Windows 程序处理流程]]></title><link>https://blog.csdn.net/abc1231987/article/details/121113718</link><guid>https://blog.csdn.net/abc1231987/article/details/121113718</guid><author>abc1231987</author><pubDate>Wed, 03 Nov 2021 08:53:07 +0800</pubDate><description><![CDATA[wndows程序程序是由消息驱动的，它的核心是注册窗口类API RegisterClass 中指定的 WinProc 函数。WinProc是Windows消息处理中心，所有的消息都要交由它来处理。然后对一个最简单的 Windows程序做了剖析，通过 6 大步可以创建出一个最简单的 Windows程序。

    1）设置入口点，WinMain。

    2）创建 WinProc 函数。

    3）注册窗口类。

    4）创建窗口。

    5）显示窗口。
...]]></description><category></category></item><item><title><![CDATA[webrtc 视频数据流程概览]]></title><link>https://blog.csdn.net/abc1231987/article/details/121074639</link><guid>https://blog.csdn.net/abc1231987/article/details/121074639</guid><author>abc1231987</author><pubDate>Mon, 01 Nov 2021 16:07:39 +0800</pubDate><description><![CDATA[视频数据由VideoCapture 采集后交给VideoSource，VideoSource 通过VideoBroadcaster成员，把数据发送给每个VideoSink(VideoEncoder和LoacalPreview）。VideoEncoder把视频数据编码之后交给网络层进行发送，LoacalPreview把视频数据渲染到屏幕上。

    从网络层收到视频数据后，先交给VideoEncoderLoacalPreview进行解码，解码之后交给VideoBroadcaster...]]></description><category></category></item></channel></rss>