C/C++
我还在迷路
这个作者很懒,什么都没留下…
展开
-
ffmpeg解码的软解及硬解(cuda和qsv)使用方法
对ffmpeg不是很熟悉,在使用的过程中遇到了很多坑,总结下,避免以后再遇到类似情况版本兼容问题: 本次使用的ffmpeg版本是4.2,解码的调用方式为: int32_t iRet = -1; // 最后一个包解码完成后,需要取完解码器中剩余的缓存帧; // 调用avcodec_send_packet时塞空包进去,; // 解码器就会知道所有包解码完成...原创 2020-05-08 14:16:07 · 13645 阅读 · 8 评论 -
FFmpeg 4.1源码Windows vs2015编译及过程中部分错误解决
在VS2015环境下,基于FFmpeg 4.1版本的源码进行编译编译过程参照 :Windows平台下编译FFmpeg以及官方指导文档 :官方编译指导文档其中CSDN上的博客大致上是官方文档的一个中文翻译在搭建环境的过程中遇到的一些问题,Google了半天终于算是解决了。。。注意项:1、如果是编译32位,也就是x86,需要使用的是“VS2015 x86 本机工具命令提示符...原创 2019-08-23 20:58:57 · 946 阅读 · 0 评论 -
OBS音频数据混音、编码、推流数据流程
声明:文章内容仅代表个人观点,不保证描述的准确性,仅供参考!音频的数据流程走向,有些描述不正确的,需要自己看代码再理解理解了,先上个流程图吧,凑合着看 文字描述1、<audio-io.c> input_and_output (struct audio_output *audio, uint64_t audio_time, uint64_t prev_time) ...原创 2018-10-15 15:22:04 · 7821 阅读 · 7 评论 -
windows 编译libxml2 64位及32位都可以使用
1、libxml2的源码版本为libxml2-2.9.0,libxml2需要使用到iconv.lib,所以先把iconv.lib编译出来iconv.lib源码版本为1.13.12、新建一个VC空工程(libIconv)(1)libIconv工程下新建一个文件夹Iconv(2)将下载的库中lib文件夹下的所有文件拷贝到这个文件夹下(3)将烤入到Iconv文原创 2015-06-04 15:56:32 · 5909 阅读 · 1 评论 -
Windows IOCP 完成端口(CompletionPort)详解
手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿转载 2015-07-29 09:33:33 · 1101 阅读 · 2 评论 -
epoll的LT和ET使用EPOLLONESHOT
epoll的总结之四LT和ET使用EPOLLONESHOT在前面说过,epoll有两种触发的方式即LT(水平触发)和ET(边缘触发)两种,在前者,只要存在着事件就会不断的触发,直到处理完成,而后者只触发一次相同事件或者说只在从非触发到触发两个状态转换的时候儿才触发。这会出现下面一种情况,如果是多线程在处理,一个SOCKET事件到来,数据开始解析,这时候这个SOCKET又来了同样一个这样的事转载 2015-07-16 14:10:27 · 16095 阅读 · 3 评论 -
linux 内存泄露,数组越界检测工具valgrind
Linux c/c++上常用内存泄露检测工具有valgrind, Rational purify。Valgrind免费。Valgrind可以在 32位或 64位 PowerPC/Linux内核上工作。Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, Callgrind,Massif。下面分别介绍个工具的作用:Memchec转载 2015-07-15 16:33:11 · 4703 阅读 · 0 评论 -
C++ 线程池,任务池实现实例
commondef.h复制代码 代码如下://单位秒,监测空闲列表时间间隔,在空闲队列中超过TASK_DESTROY_INTERVAL时间的任务将被自动销毁const int CHECK_IDLE_TASK_INTERVAL = 300;//单位秒,任务自动销毁时间间隔const int TASK_DESTROY_INTERVAL = 60;//监控线程池是否为空时间间转载 2015-07-15 16:36:00 · 3758 阅读 · 0 评论 -
C++设计模式:单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做转载 2015-07-29 10:16:09 · 542 阅读 · 0 评论 -
容器中使用erase的正确姿势(List Iterator Not Incrementable)
使用容器中的erase遇到"List Iterator Not Incrementable"问题,正确食用erase的姿势,以list为例举个例子:1.list sList;list::iterator sP;sList.push_back(1);sList.push_back(3);sList.push_back(5);sList.push_back(7);f原创 2015-06-01 11:12:53 · 688 阅读 · 0 评论 -
libxml2 主要函数用法
许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能。下面的列表列出了libxml的主要函数及其用法说明。1. 全局函数说明头文件引用xml2config --cflags库文件引用xml2config --libs主要头文件parse.htree.hxpath.转载 2015-04-21 10:21:16 · 673 阅读 · 0 评论 -
socket编程 及select poll epoll示例
1、关于字节排序 网际协议采用大端字节序,来传输多字节整数。 系统提供了转换的宏定义,如果主机与网际协议相同,则宏定义为空。2、客户端 socket -> connect(阻塞,三次握手)-> rcv3、服务器端 socket -> bind -> listen -> accept(阻塞,三次握手)-> send4、函数介绍 a..socket转载 2015-04-09 17:42:42 · 986 阅读 · 0 评论 -
libxml2剖析(1):功能特性
1、概述 本文整理自官方页面http://xmlsoft.org/。 Libxml2是一个用来解析XML文档的函数库。它用C语言写成,并且能为多种语言所调用,例如C语言, C++, C#, Python, Kylix/Delphi, PHP, Ruby, Pascal, Tcl等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种转载 2015-04-16 17:04:38 · 740 阅读 · 0 评论 -
libxml2剖析(2):编译
1、Linux/Unix下的编译 内容整理自http://xmlsoft.org/FAQ.html中一些部分。 跟大多数UNIX库一样,libxml2的编译遵循以下“标准”:[plain] view plaincopygunzip -c xxx.tar.gz | tar xvf - (或者tar xzvf libxml2-xxxx.tar.gz)转载 2015-04-16 17:03:59 · 1212 阅读 · 0 评论 -
libxml2剖析(3):使用教程
本文整理自官方使用教程http://xmlsoft.org/tutorial/index.html。 示例文档story.xml如下:[html] view plaincopyxml version="1.0"?> story> storyinfo> author>John Fleckauthor> datewritten>June转载 2015-04-16 17:00:30 · 1659 阅读 · 0 评论