
C/C++
文章平均质量分 76
王log
懒得写描述
展开
-
新版本glib使用epoll代替poll
新版本的glib支持使用外部的事件循环代替内部的poll,这篇文章使用的glib版本是V2.70.0, 理解还很粗浅,但是demo能跑起来,还需要再详细研究一下参考的两个链接,多线程下使用及效率是怎样的都还不清楚。1、新API通过新的API g_main_context_new_with_flags 及新变量G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING可以创建一个无主的poll,然后通过glib的一套API可以实现自己的事件循环。ubuntu18下的demo:#incl原创 2021-12-10 21:23:23 · 1318 阅读 · 3 评论 -
lsquic使用《二》--echo服务
官方实现的echo的客户端及服务端demo功能是客户端发送字符服务端原样返回,但是实现比较复杂,对于熟悉流程来说不友好,因此参考这个lsquic-tutorial实现了一个简单版本的,主要用于理解流程。 lsquic的结构体变量定义后一定得memset将变量所有成员初始值设置为0(或者说NULL),不然会有意想不到的bug出现。1、client端1.1、数据输入并发送 客户端使用libev作为事件循环的驱动,不断侦听stdin输入,遇到换行符即启动调用lsquic_stream_wan原创 2021-12-09 20:54:27 · 3993 阅读 · 0 评论 -
lsquic使用《一》--概述
因为想使用下quic协议,所以开源框架中选了lsquic,C语音实现,支持客户端和服务端,然后文档也是开源框架中较为丰富的。支持QUIC V1、Draft-29、27,Q043,Q046及Q050。对应github的commit是:df67278304ce 。V3.03版本之后两个commit。1、lsquic特征与架构1.1、特征DPLPMTUD,一种在某一特定网络路径中探测单次能发送最大的UDP包大小的方法,因为QUIC是自己实现打包的故用这个方法能提升性能;ECN,显式拥塞通知;S原创 2021-11-23 20:30:09 · 8098 阅读 · 0 评论 -
ffmpeg 音频混流--命令与代码说明
ffmpeg可使用filter实现各种复杂的操作,混音只是其中一小部分功能。代码实现因为参考已经说的较为详细,我这里补充一些我认为重要的。1、命令实现ffmpeg -i dragen.opus -i Monsters.opus -filter_complex "[0:a]aresample=8000[a0];[1:a]adelay=delays=6400|6400,aresample=8000[a1];[a0][a1]amix=inputs=2" -b:a 20k -y mixer.aac -v原创 2021-05-28 21:11:55 · 4478 阅读 · 0 评论 -
libcurl post带参数请求
1、参数特殊字符转换 curl_easy_escape函数及curl_escape函数都可以将参数中的所有不符合URL规定的字符转化为其对应的%XX 形式。 curl_escape函数是旧的API,其内部调用的是curl_easy_escape函数只不过handle设置为NULL了。两个函数调用返回的字符串都要调用curl_free或free函数释放。2、设置post参数 使用CURLOPT_POSTFIELDS添加post参数 CURL *curl; CURLcode res;原创 2020-07-22 16:38:49 · 3685 阅读 · 0 评论 -
linux exec函数执行之前设置当前进程所有描述符FD_CLOEXEC
1、查看进程打开的描述符ll /proc/$PID/fd2、C语言获取当前进程打开的fd并设置FD_CLOEXEC#include <stdio.h>#include <errno.h>#include <unistd.h>#include <string.h>#include <dirent.h>#include<stdint.h>/* 将当前进程打开的所有描述符标志设置为CLOEXEC */static原创 2020-06-23 19:18:50 · 586 阅读 · 0 评论 -
libcurl Multi异步接口使用
1、multi异步接口实现文件上传demo《1》、设置easy接口#include <curl/curl.h>#include <curl/multi.h>/* mutil 句柄的最大连接数 */#define MAX_CONNECT_HANDLE_NUMS (15)/* 客制化的私有数据结构体 */typedef struct CustomPrivD...原创 2020-03-21 09:31:43 · 3626 阅读 · 0 评论 -
libcurl post二进制文件及GET下载文件
使用的版本curlcurl-7.69.1使用的easy接口1、二进制方式POST图片CURL *curl;CURLcode res;curl = curl_easy_init();if(curl) { curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curl, CURLOPT_URL...原创 2020-03-18 13:38:30 · 993 阅读 · 0 评论 -
jsoncpp构建及解析复杂数组
1、示例的json格式2、测试代码使用的版本jsonjson_0.10.7void test_video_list(){ Json::Value root; Json::Value calss_info; Json::FastWriter writer; Json::Value PointInfo; char* device = "dev...原创 2020-03-11 17:03:27 · 6231 阅读 · 1 评论 -
C++ shared_ptr自定义删除器类
1、智能指针删除器类因为用自己实现的内存池在释放内存时需要buffer的大小才可以,用函数和labda表达式不知道如何实现,所以用删除器类实现自定义的智能指针删除器。/* 智能指针删除器类 */class CustomerDeleter{public: CustomerDeleter(shared_ptr<RingMempool> MemPool, siz...原创 2019-12-28 10:06:45 · 2005 阅读 · 0 评论 -
libresamplerate及speexdsp两个音频重采样库使用
记录libsamplerate及speex库进行音频重采样的使用。主要是将 48K HZ 16bit采样率,双通道PCM音频转为8K HZ,16bit采样率单通道PCM音频。一、libsamplerate1、SRC_DATA数据结构该数据结构用于将音频数据及控制参数传递给精简版及标准的API函数。 data_in: 指向传递给转换器的音频数据buffer,交错模式存放 data...原创 2019-09-27 15:27:38 · 5336 阅读 · 5 评论 -
整理 -- ffmpeg及nginx-rtmp在rtmp中扩展hevc
1、ffmpeg4.1扩展参考:打补丁及使用说明:https://github.com/ksvc/FFmpeg/wiki/instructions推流说明: https://github.com/ksvc/FFmpeg/wiki/hevcpushhttps://blog.youkuaiyun.com/vn9PLgZvnPs1522s82g/article/details/79063377修...转载 2019-09-07 11:06:19 · 1457 阅读 · 8 评论 -
TextStatuio+CTEX编写伪代码
1、安装CTEX及TextStatuio先安装CTEX再安装TextStatuio,两个安装好之后配置TextStuiode中文界面设置 option->Normal->language zh_CN配置用XeLatex编译,这样生成的pdf文件中文不会乱码2、demo3、参考最简单傻瓜式的 Latex+Texstudio 安装教学LaTeX写伪代码demoTexs...转载 2019-08-22 09:38:12 · 735 阅读 · 0 评论 -
转---boost 无锁队列
1、摘要《1》、boost的三个无锁队列及其适用场景 sps_queue 在1.59之后版本的有进行改正,read_available是消费者调用(获取队列内元素个数),write_avaliable是生产者调用(获取剩余空间)。 参考《2》、sps_queue与queue的性能对比2、来源a、Boost.Lockfree官方文档翻译b、Boost无锁队列性能对比...转载 2019-06-17 19:47:43 · 1348 阅读 · 0 评论 -
转---理解C++11 原子类型及其操作
1、 《深入理解C++11》笔记-原子类型和原子操作2、解决线程冲突 —— C++11 中的原子操作3、C++11 并发指南六( 类型详解二 std::atomic )转载 2019-06-15 09:23:07 · 395 阅读 · 0 评论 -
tinyxml2 读取到xml文件的中文乱码处理
遇到问题:xml文件中含有中文的文件路径,经过tinyxml2解析打印后乱码。1、tinyxml2解析xml文件是默认时按照utf8格式读取的。2、解析含有中文的xml的乱码解决 由1知道tinyxml2解析默认时utf8形式的,所以只要将解析后的utf8格式的字符串转为gb2312,此时再输出就不会乱码,转换函数:#include &lt;windows.h&gt;//UTF8...原创 2019-01-29 20:10:15 · 4352 阅读 · 2 评论