代码改变世界

vlc源码分析(一) RTSP会话流程

2017-04-19 22:14 by jiayayao, 7261 阅读, 0 推荐, 收藏, 编辑
摘要:可以先了解一下RTSP/RTP/RTCP的概念与区别:RTP与RTCP协议介绍(转载)。 在调试vlc-android时,熟悉了RTSP的会话流程。C表示RTSP客户端,S表示RTSP服务端: 第一步:查询服务器端可用方法 1.C->S:OPTIONrequest //询问S有哪些方法可用 1.S- 阅读全文

《STL源码剖析》要点摘抄

2017-03-14 22:45 by jiayayao, 640 阅读, 0 推荐, 收藏, 编辑
摘要:1. STL的空间配置器 SGI STL设计了双层级配置器,第一级配置器直接使用malloc()、free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,视为“足够大”,便调用第一级配置器;当配置区块小于128bytes时,视为“过小”,为降低额外负担,便采用复杂的mem 阅读全文

C++11之std::future和std::promise

2017-03-10 20:41 by jiayayao, 9027 阅读, 2 推荐, 收藏, 编辑
摘要:为什么C++11引入std::future和std::promise?C++11创建了线程以后,我们不能直接从thread.join()得到结果,必须定义一个变量,在线程执行时,对这个变量赋值,然后执行join(),过程相对繁琐。 thread库提供了future用来访问异步操作的结果。std::p 阅读全文

为什么C++11引入了std::ref?

2017-03-09 20:50 by jiayayao, 29838 阅读, 5 推荐, 收藏, 编辑
摘要:C++本身有引用(&),为什么C++11又引入了std::ref? 主要是考虑函数式编程(如std::bind)在使用时,是对参数直接拷贝,而不是引用。如下例子: 上述代码在执行std::bind后,在函数f()中n1的值仍然是1,n2和n3改成了修改的值。说明std::bind使用的是参数的拷贝而 阅读全文

使用Android的OpenGL编写视频播放器

2017-03-07 20:35 by jiayayao, 6548 阅读, 0 推荐, 收藏, 编辑
摘要:Android自身有MediaPlayer播放器,为什么还要使用OpenGL?因为使用OpenGL可以实现更多的效果,比如对视频翻转一定角度,加任意特效,多视频合并播放等,类似“激萌”的APP应该就是这样做的;相比之下,直接调用MediaPlayer的功能就少太多了。 OpenGL ES剔除了Ope 阅读全文

FFMpeg笔记(二) 使用FFmpeg对视频进行编解码的一般流程

2017-03-05 18:18 by jiayayao, 3350 阅读, 0 推荐, 收藏, 编辑
摘要:1. 编码: 1.对编码资源的初始化 2.编码 2. 解码: 1.对解码资源的初始化 2.解码 阅读全文

FFMpeg笔记(一) 使用FFmpeg将任意格式图片转换成任意格式图片

2017-03-05 14:31 by jiayayao, 7019 阅读, 0 推荐, 收藏, 编辑
摘要:注意转换的宽高不能搞错,否则非但不能转换正确,还有可能crash。附调试用的保存图片函数DumpImage,可以使用该函数查看原始数据是否正确或者格式转换是否成功: char *pBmpFile = "DumpTest.bmp"; DumpBmp(pBmpFile, (uint8_t*)&buffe 阅读全文

测试Protobuffer的定义格式对其时间和空间的影响

2017-03-03 18:15 by jiayayao, 572 阅读, 0 推荐, 收藏, 编辑
摘要:测试Protobuffer格式的A命令转换为std::string的的字节个数,分别测试了工程中用到的几种命令: a)AddLayer:108 b)AddSource:209 c)MoveLayer:44 d)DeleteLayer:48 e)ClearScreen:36 但是实际应用时是以B命令接 阅读全文

如何求出数组中最小(或者最大)的k个数(least k问题)

2017-02-13 22:40 by jiayayao, 2587 阅读, 0 推荐, 收藏, 编辑
摘要:输入n个整数,如何求出其中最小的k个数? 解法1. 当然最直观的思路是将数组排序,然后就可以找出其中最小的k个数了,时间复杂度以快速排序为例,是O(nlogn); 解法2. 借助划分(Partition)的思路,一次划分可以把枢轴使得枢轴左边的元素都比枢轴小,枢轴右边的元素都比枢轴大(可以参考快速排 阅读全文

C++模板元编程

2017-02-10 22:09 by jiayayao, 3183 阅读, 0 推荐, 收藏, 编辑
摘要:原理:模板元程序由编译器在编译期解释执行,利用模板特化机制实现编译期条件选择结构,利用递归模板实现编译期循环结构。模板元编程(metaprogramming)意思是,编程系统将会执行我们所写的代码,来生成新的代码,而这些新代码才真正实现了我们所期望的功能。元编程最大的特点在于:某些用户自定义的计算可 阅读全文