自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 虚拟机编译webrtc

1、内存不小于4g2、不能使用共享文件夹,只能全部将源码复制到虚拟机里面。

2017-03-06 16:17:06 566

原创 webrtc编译过程

1  $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git2 $ export PATH=`pwd`/depot_tools:"$PATH"3 ./build/install-build-deps.sh4. build/android/envsetup.sh5fetc

2017-03-06 16:14:45 611

原创 webrtc音频相关

1、采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。2、APM模块仅支持16k、32k和48k采样率。10ms音频数据。3、NS

2017-03-06 16:04:29 1653

转载 一读一写情况下,无锁环形队列如何实现?

无锁环形队列的设计及示例,读写队列最大的应用是:一个线程收到事件或消息后直接加入到队列,而处理线程读取队列中的事件或消息,并加以处理。在这个模式中,有一个线程负责写,多个处理线程读自己的队列并处理。虽然看起来象是一写多读,其实不然,针对某一事件队列而言,只有一个线程是写一个线程是读。   环形一读一写队列中,不需要担心unsigned long溢出问题,因为溢出后自动回归,相减

2017-01-13 14:04:31 1609 1

转载 除数为2的N次方取模可以用与运算替代,效率更高

取模运算在包括JAVA在内的大多数语言中的效率都十分低下,而当除数为2的N次方时,取模运算将退化为最简单的位运算,其效率明显提升(按照Bruce Eckel给出的数据,大约可以提升5~8倍) 。看看JDK中是如何实现的: Java代码:static int indexFor(int h, int length) {       return h & (lengt

2017-01-12 16:00:54 2945

转载 static_cast 和 reinterpret_cast

>C/C++是强类型语言,不同类型之间的相互转换是比较麻烦的.但是在编程实践中,不可避免的要用到类型转换.有2中类型转换:隐式类型转换和强制类型转换.1.隐式类型转换1.1 提升精度,此种是编译器自动完成的,安全的.所以编译的时候不会有任何错误或者警告信息提示.示例: > P147int ival = 3;double dval = 3.14159;

2016-12-22 14:22:41 268

转载 RTMFP协议格式

1      协议解析1.1 基本概念session:session是两个UDP地址之间的双向管道。flow:flow是从一个实体到另一个实体之间的逻辑路径。一个session可以包括多个flow。packet:网络中实际传输的数据,一个packet可以包含多个message。数据传输时都经过了128 bit的AES加密message:audio、video和data数据。

2016-11-16 11:47:59 622

原创 openssl移植

一、安卓export NDK=/Users/zhangchun5/software/android-ndk-r12b$NDK/build/tools/make-standalone-toolchain.sh --platform=android-9 --toolchain=arm-linux-androideabi-4.9 --install-dir=`pwd`/android-toolch

2016-11-04 17:19:16 304

转载 Nat类型检测

Determining NAT Mapping Behavior This will require at most three tests. In test I, the client performs the UDP connectivity test. The server will return its alternate address and port in

2016-11-02 10:23:01 4915

转载 NAT类型

NAT的分类,比较早的有STUN(RFC3489)定义的四种类型: Full Cone: A full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port.

2016-11-01 16:10:45 1457

原创 安卓AndroidManifast

xmlversion="1.0"encoding="utf-8"?>manifestxmlns:android="http://schemas.android.com/apk/res/android"    package="com.weibo.vodp2pplayertest"    android:versionCode="1"    android

2016-09-22 16:00:36 1129

原创 移植samba到安卓

一、交叉编译环境1、安装arm-linux-gcc编译工具2、安装步骤1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下。2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩3、接下来配置系统环境变量,把交叉编译工具链的路径添

2016-05-19 18:06:06 2764

转载 sem_timedwait的用法

#include int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); Link with -pthread.  对于这个函数,主要在于abs_timeout这个参数。一开始我以为是传入需要等待的时间。像这样:struct timespec ts;ts.tv_ns

2016-05-16 14:33:48 4145

原创 live555

1、DynamicRTSPServer.cppServerMediaSession* DynamicRTSPServer::lookupServerMediaSession(char const* streamName, Boolean isFirstLookupInSession) { // First, check whether the specified "streamNam

2016-04-19 11:30:13 5532

转载 AAC音频格式简析

1.ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式。记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时,不能播;保存到本地用pc的播放器播时,我靠也不能播。当时崩溃了,后来通过查找资料才知道。一般的AAC解码器都需要把AAC的ES流打包成ADTS的格式,一般是在AAC ES流前

2016-03-21 16:14:50 534

转载 linux定时器总结

1   参考资料Ø  http://www.ibm.com/developerworks/cn/linux/1307_liuming_linuxtime1/Ø  《linux系统编程》第“10.9 定时器”章节2   概要要在linux中使用定时器,有如下三种方法:定时器方式一个进程允许使用的数量通知方

2016-03-02 16:45:47 523

转载 H264码流结构分析

1、码流总体结构:h264的功能分为两层,视频编码层(VCL)和网络提取层(NAL)。H.264 的编码视频序列包括一系列的NAL 单元,每个NAL 单元包含一个RBSP。一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload] 三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00

2015-11-10 11:10:54 541

转载 H264 NAL头解析

h264 NAL头解析 NAL全称Network Abstract Layer,即网络抽象层。在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。NAL单元是NAL的基本语法结构,它包含一个字节的头信息和一系列来自VCL的

2015-11-10 10:58:07 547

转载 线程的join 和detach状态

在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线程的默认属性

2015-06-25 17:36:51 612

转载 tcp Keepalive

TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后,会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。默认的Keepalive超时需要7,200,000 milliseconds,即2小时,探测次数为5次。它的功效和用户自己实现的心跳机制是一样的。开启Keepalive功能需要消耗额外的宽带和流量,尽管这微不足道,但在按流量

2015-06-01 11:31:39 545

原创 关键帧切割视频

#include #include #include "libavformat/avformat.h"#include "libavcodec/avcodec.h"#include "libavutil/avutil.h"#include "libavutil/rational.h"#include "libavutil/mathematics.h"#include "libswsc

2015-05-05 15:52:09 1024

转载 ffmpeg只转封装不转码的代码实现

在有些场景下,其实只需要转封装,不需要转码,大概步骤如下:1. 打开输入的formatcontext2. 打开输出文件3. 打开输出的formatcontext4. 写文件头5. 复制codec信息6. 读取输入frame7. 写输出frame8. 写文件尾9. 关闭输出文件代码如下:#include stdio.

2015-04-27 11:25:03 1288

原创 ffmpeg编译过程

1、安装ffmpeg./configure --enable-shared --enable-pthreads --disable-yasmmake && make install2、测试程序#include "libavformat/avformat.h"#include "libavcodec/avcodec.h"#include "libavutil/avutil.h

2015-04-23 10:59:54 443

原创 gcc 编译过程

一、 C语言编译过程C语言的编译过程可分为四个阶段:1、预处理(Preprocessing)对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程。伪指令包括:1)宏定义指令;      2)条件编译指令;      3)头文件包含指令;2、编译(Compilation)编译就是将源程序转换为计算机可以执行的二进制代码。

2015-04-23 10:33:33 393

转载 图像处理之老照片特效

1. 首先对图像重新计算RGB值,计算公式如下:int fr= (int)(((double)tr * 0.393) + ((double)tg * 0.769) + ((double)tb * 0.189)); int fg = (int)(((double)tr * 0.349) + ((double)tg * 0.686) + ((double)tb * 0.168)); in

2015-02-06 20:10:29 382

转载 图像滤镜处理算法:柔化、光照、放大镜、哈哈镜

1 柔化算法柔化算法的效果是让图片的每一个点与周围点的颜色更平滑,算法原理很简单,就是针对每一个像素,将其颜色值置为周围8个点加上自身的RGB的平均值。不过这样处理后的效果不是很明显,可以采用高斯模糊算法,能获取更好的效果。原图如下:采用平均值法的柔化算法处理结果如下:2 光照有时需要在照片中增加一个光源这样的效果,如何实现呢?首先我们设定一

2015-02-06 20:08:15 2406

转载 图像滤镜处理算法:灰度、黑白、底片、浮雕

下面介绍几种简单的图片处理算法,通过这几种算法,也能大致明白滤镜处理的算法原理。1 灰度图片前文阐述过关于图片的一些基本知识,彩色照片有RGB_8888、RGB_4444、RGB_565这么几种,每一个像素的颜色值由红、绿、蓝三种值混合而成,红绿蓝的取值分别由很多种,于是像素的颜色值也可以有很多种颜色值,这就是彩色图片的原理,而灰度照片则只有256种颜色,一般的处理方法是将图片颜色

2015-02-06 14:01:12 627

原创 Makefile相关

七、静态模式静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法:    ;: ;: ;            ;            ...    targets定义了一系列的目标文件,可以有通配符。是目标的一个集合。    target-parrtern是指明了targets的模式,也就是的目标集模式。    pr

2015-01-28 14:45:05 317

原创 关于gcc心得

1、如果h头文件中有实现代码,那么不需要进行gcc编译操作。2、h头文件中有实现代码(A.h)时,include它的cpp(B.cpp)如果进行gcc -c 操作时,生成的o文件中会包含A.h中的实现代码。3、如果A.h中有实现代码,如果B.cpp 包含A.h ,同时C.cpp包含A.h。如果将B.cpp和C.cpp链接到一起,将会有符合多次定义错误。原因是生成的B.o中有A.h的实现

2015-01-23 10:50:09 465

转载 静态库和动态库创建过程

libtest/include/hello.h #ifdef _HELLO_H_#define _HELLO_H_void hello();#endiflibtest/lib/hello.c#include "hello.h"#include void hello(){ printf("hello world!\n");}libtest/sr

2015-01-22 16:06:32 423

转载 g++参数介绍

[介绍] gcc and g++分别是gnu的c & c++编译器   gcc/g++在执行编译工作的时候,总共需要4步   1.预处理,生成.i的文件      预处理器cpp2.将预处理后的文件不转换成汇编语言,生成文件.s      编译器egcs3.有汇编变为目标代码(机器代码)生成.o的文件    汇编器as4.连接目标代码,生成可执行程序

2015-01-22 16:04:44 374

原创 Linux相关

1、gcc 对比 g++2、静态库 ar rc 命令3、gcc 参数 -o -c -g -D -I -l -L -i4、gdb参数 l,p,n,set args

2015-01-22 15:52:48 258

转载 c++中new的三种用法详细解析

一. 简介new有三种使用方式:plain new,nothrow new和placement new。(1)plain new顾名思义就是普通的new,就是我们惯常使用的new。在C++中是这样定义的:    void* operator new(std::size_t) throw(std::bad_alloc);    void operator delete(void

2015-01-15 14:46:01 2495

原创 移位运算

负数>>运算补1

2015-01-13 16:16:13 403

转载 H264 获取SPS与PPS(附源码)

在用Android手机进行h264硬编码的时候如果要进行视频流的实时传输与播放,就需要知道视频流的Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)。今天算是看明白如何获取SPS和PPS,在这里记录下来,希望有需要的朋友可以在这里获取到一些些的帮助。首先说一下大前提,我设置的视频录制参数为:mMediaRec

2014-12-19 16:19:45 399

转载 Merkle Hashing Tree

大家都知道,目前BT应用的发展具有一个非常显著的趋势,那就是用来交换电影、游戏、ISO等大尺寸的数据文件。然而我们也能够观察到另一个事实,那就是:下载文件所对应的索引文件(.torrent)也越来越大,越来越难以下载;这是因为在索引文件中保存了被下载文件中所有数据块的20字节SHA1校验值,而文件越大,数据块越多,则.torrent文件越长(块数=文件长度/数据块长,Bit Torrent标准协议

2014-11-13 10:36:30 1876

转载 哈希树(HashTree)

作者 罗堃(此文为原创,若需要引用请注明出处)从2000年开始,作者开始研究基于TCP/IP的短信息传输技术。这种技术目前在国际上的标准被成为SMPP(Short Message Peer to Peer Protocol)。SMPP协议是一种支持异步传输模式(Asynchronized Transmission Mode)的信息传输方式。这种异步方式主要体现在两个地方:传

2014-11-12 18:02:06 7433

转载 穿越NAT的p2p通信方法研究

内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。本文的目的在于描述和分析在实际中运用得最广泛、最可靠同时

2014-10-31 10:50:40 470

转载 Linux下同步模式、异步模式、阻塞调用、非阻塞调用

同步和异步:与消息的通知机制有关。 本质区别现实例子同步模式由处理消息者自己去等待消息是否被触发我去银行办理业务,选择排队等,排到头了就办理。异步模式由触发机制来通知处理消息者我去银行办理业务,取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理

2014-10-08 15:35:12 382

转载 Linux下的五种I/O模型

Linux下的五种I/O模型1)阻塞I/O(blocking I/O)2)非阻塞I/O (nonblocking I/O)3) I/O复用(select 和poll) (I/O multiplexing)4)信号驱动I/O (signal driven I/O (SIGIO))5)异步I/O (asynchronous I/O (the POSIX aio_fu

2014-10-08 15:26:42 542

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除