自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (5)
  • 收藏
  • 关注

转载 webpack的最简单应用,只使用js与css的打包

文章转载自:http://www.cnblogs.com/huangqiming/p/5961506.html1、要确保node的版本是否是最新稳定版2、接着需要packjson.js文件,全部enter掉就好了,默认值就行了1npm init3、进行全局安装webpac

2017-08-29 14:53:40 895

转载 React创建组件的三种方式及其区别

文章转载自:http://www.cnblogs.com/wonyun/p/5930333.htmlReact推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归;具体的三种方式:函数式定义的无状态组件es5原生方式React.createClass定义的组件es6形式的extends React.Component定义的组件虽然有三种方式可

2017-08-29 14:51:10 559

转载 Sigslot介绍

最近在看webrtc开源代码,最底层封装的消息机制,是基于其has_slots,搜索了一下其资料发现是一个很好用的C++库,先对其简单介绍一下。插槽机制插槽系统常用的有三种:boost的signals,sigslot,sigc++ 基本功能有: 1.connect 2.disconnect 3.emit

2017-06-28 14:25:12 608

转载 由poj 1067引发的——取石子游戏【各类取石子总结】

上次做poj 1067的取石子游戏,只用到了whthoff博弈,未涉及到取石子的异或方法,今天重新搜索,整理了一遍。搜罗各种资料,加上自己整理,终于成篇啦!……噼里啪啦 取石子问题有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理

2017-06-21 15:13:14 349

原创 线性循环链表

templatestruct LNode{ T data; struct LNode *next;};templateclass CircularLinkList{private: LNode* m_pList; int m_ListLength;private: bool InitList(); bool GetNode(int position, LNode**

2017-06-20 15:38:33 299

原创 C++实现线性链表

templatestruct LNode{ T data; struct LNode *next;};templateclass LinkList{private: LNode* m_pList; int m_ListLength;private: bool InitList(); bool GetNode(int position, LNode** node);

2017-06-19 15:12:18 573

转载 strcpy memcpy strcmp strcat strlen实现源码

strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因

2017-06-19 11:02:31 421

原创 Stack 的C++实现

templateclass Stack{public: Stack(int s = 10); ~Stack();public: T top(); void push(T t); T pop(); bool empty(); int size();private: int count; int capacity; T* array;};templateStac

2017-06-19 10:41:31 423

转载 WebRTC中RTP/RTCP协议实现分析

http://www.jianshu.com/p/c84be6f3ddf3

2017-04-27 15:50:14 770

转载 WEBRTC视频网络传输到解码输出

http://blog.csdn.net/doitsjz/article/details/53794174

2017-04-27 15:49:34 735

转载 webrtc研究-视频接收端处理

http://blog.csdn.net/liuhongxiangm/article/details/53581064

2017-04-27 15:48:06 444

转载 gettimeofday和clock_gettime的不同

clock_gettime比gettimeofday更加精确#include#include#define MILLION 1000000int main(void){ struct timespec tpstart; struct timespec tpend; long timedif; clock_gettime(C

2017-04-19 15:50:17 2398 3

转载 Linux 中的计时——gettimeofday函数

使用C语言进行计时,在用户空间中可以使用C语言函数gettimeofday 得到时间,它的调用格式是: #include int gettimeofday(struct timeval *tv, struct timezone *tz); int settimeofday(const struct timeval *tv , const struct tim

2017-04-19 14:26:03 1017

原创 【WebRTC】视频采集

视频采集模块在WebRTC框架中负责从视频源中采集视频数据,发送到本地显示模块和编码模块进行处理。视频源除了常见的摄像头,也可以是桌面抓屏或者窗口抓屏,或者一个视频文件。视频采集模块是平台相关的,MacOS和IOS平台一般使用AVFoundation框架, Linux平台一般使用V4L2库,Windows平台则使用MediaFoundation库。1. 视频采集模块的实现WebRTC的视频

2017-03-29 09:36:55 2256 2

原创 webrtc中的JSEP

JSEP(JavaScript Session Establishment Protocol,JavaScript会话建立协议),是一个信令控制协议。从JSEP完成的功能来看,JSEP相当于一个软化的信令控制协议,只能完成媒体链接的功能,在比较简单的web应用中完全可以胜任,在比较复杂的应用中需要和其他的模块或者信令相结合才能完成完整的应用。像用户查找,位置服务这些功能还需要一个完整的信令控制

2017-02-20 17:37:59 4865

原创 禁止拷贝和赋值构造函数

如果想让类不能使用拷贝构造函数和赋值操作符,只要将该类的拷贝构造函数和赋值操作符函数定义为private即可,并且只是声明,不用实现.#include #include #define RTC_DISALLOW_ASSIGN(TypeName) \ void operator=(const TypeName&) = delete#define RTC_DISALLOW_COPY_

2016-12-27 17:23:33 2338

原创 libjingle的重要概念之一:Signals

libjingle使用sigslot library实现对象之间的通信。sigslot是一个开源的回调框架,它可以使得类之间的回调使用的简单化。sigsolt源码下载地址:http://sigslot.sourceforge.net/sigsolt的优点:(1)不用担心空回调,当回调对象析构时会自动disconnect(2)支持多线程,线程安全,有锁

2016-12-27 16:46:31 466

转载 临界区和互斥锁的区别

临界区和互斥锁的区别1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用

2016-12-21 09:42:00 3250

翻译 webrtc编译--安装 depot_tools

2016-11-16 13:38:03 1600

原创 C++/C宏定义中## 连接符与# 符的含义

#是字符串化的意思,出现在宏定义中的#是把跟在后面的参数转成一个字符串##是连接符号,把参数连接在一起#include using namespace std;#define OUTPUT(A) cout << #A << " = " << (A) << endl#define FUN(name) prefix_##nameint main(){ int a =

2016-10-10 10:53:12 1233

原创 单源最短路径

单源最短路径问题,即在图中求出给定顶点到其他任一顶点的最短路径。1.最短路径的最优子结构性质该性质描述为:如果P(i, j) = {Vi ...... Vk ... Vs ... Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k, s)必定是从k到s的最短路径。证明:假设P(i, j) = {Vi ...... Vk ... Vs ... Vj}是从顶点i到

2016-08-23 11:38:46 427

原创 并查集详解

并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一

2016-08-17 16:26:47 265

原创 ffmpeg 安装时ERROR: libx264 not found 异常的解决

安装 ffmpeg 时出现错误ERROR: libx264 not found解决方法:安装 x264 时 增加选项 --enable-shared#./configure --enable-shared #make#make install 再次执行 ffmpeg 安装就不报错了

2016-08-12 14:02:40 13226 2

原创 Linux多线程──主线程和子线程分别循环一定次数

条件变量条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个回合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待铁定的条件发生。名称: pthread_cond_wait/pthread_cond_timedwait目标: 条件变量等待头文件:#include

2016-07-02 16:04:26 2518

原创 【WebRTC】NAT机制和传输机制

1.NAT机制WebRTC对内网上的主机建立连接需要NAT,即网络地址转换。WebRTC直接采用了Libjingle中关于传输部分的组件。Libjingle是Google公司开发的实现P2P传输的C++开源库,Google Talk就是基于这个库开发的。通过Libjingle可以建立一个直通的网络连接,可以无需关心中间的NAT,防火墙,中继服务器和代理, 会话建立的细节,直接进行数

2015-11-10 09:08:33 3452

转载 解密回声消除技术--转

一、回声消除原理从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancellation,AEC)和线路回声消除(Line Echo Cancellation, LEC)。声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的(比较好理解);线路回音是由于

2015-11-06 10:39:33 1111

原创 【WebRTC】视频采集 / 编码 / 发送

2015-10-15 11:30:47 2289

原创 【WebRTC】Open Video Capture Device

2015-10-14 17:04:11 859

原创 PCM转WAV

WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种。WAV文件的文件头:偏移地址大小字节数据块类型内容00H~03H44字符资源交换文件标志(RIFF)04H~07H

2015-10-13 15:38:56 1850

原创 使用GCC和pkg-config编译

gcc -Wall -g Test.c -o Test `pkg-config --cflags --libs gstreamer-0.10`GCC编译器是Linux下标准C的编译器上述编译命令传递了几个编译选项-Wall 开启了所有编译警告-g 开启了调试功能,因此您可以使用编译好的程序进行调试,无论使用GDB或您选择的调试器pkg-config程序是干什么用的?简单的说

2015-10-09 15:00:59 3092

原创 RTP协议

概述:RTP(Real-time Transport Protocol 实时传输协议)是一种网络传输协议,1996年,IETF的多媒体传输工作小组在RFC1889中公布。RTP协议详细说明了在互联网上传递音视频的标准数据包格式。它一开始被设计成一个多播协议,但是后来被用在很多单播应用中。配合RTCP协议,RTP协议常用于流媒体系统。因为RTP自身具有Time Stamp,所以在ffmpeg

2015-10-08 16:36:51 498

原创 linux互斥锁pthread_mutex_t 的使用

1. 互斥锁的创建在linux中有两种方法创建互斥锁:静态方式和动态方式静态方式:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;动态方式:采用pthread_mutex_init()函数来初始化互斥锁2. 函数原型int pthread_mutex_init(pthread_mutex_t *restrict m

2015-09-30 11:55:04 842

原创 音频属性详解

1.采样频率采样频率是指每秒采样多少次,采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。2.采样位数即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。每个采样数据记录的是振幅, 采样精度取决于采样位数的大小:- 1 字节(也就

2015-09-28 22:15:12 5352

原创 【WebRTC】音频Codec选取

2015-09-18 10:02:45 1697

原创 P2P网络中UDP穿越NAT的原理

P2P网络中,UDP穿越NAT方式主要有:中转方式(Relay)、反向连接(Connection Reversal)、UDP打洞(UDP Hole Punching)。1.1中转方式        中转方式是最简单也是比较可靠的NAT穿越方法,它将P2P通信简单地转换为客户端/服务器通信模式。        假如有A和B两个客户端和一个公共服务器S,客户端位于各自的私有网络中,各自的N

2015-09-17 11:02:48 2373

原创 NAT的原理与类型

1. NAT的原理与类型NAT是IETF标准,它通过将局域网内的主机IP地址映射为Internet上有效的公网IP地址,从而实现了网络地址的复用。使用NAT技术,局域网内的多台PC可以共享单个、全局路由的IP地址,减少了所需的IP地址的数量。NAT主要可以分为两类:基本NAT和NAPT ( Network Address Port Translation )。基本NAT一般是用于NAT

2015-09-16 18:02:11 7209 1

原创 【WebRTC】Audio解码后播放流程

AudioDeviceLinuxPulse::PlayThreadProcess() AudioDeviceBuffer::RequestPlayoutData() VoEBaseImpl::NeedMorePlayData() OutputMixer::MixActiveChannels() AudioConferenceMixerImpl::Process()

2015-09-14 10:27:35 2272

原创 【WebRTC】NetEQ概述

WebRTC由语音引擎,视频引擎和网络传输三大模块组成,其中语音引擎是WebRTC中最具价值的技术之一。WebRTC语音引擎由一系列音频和网络处理模块组成,包括了从音频采集到网络传输等处理流程的完整解决方案。语音引擎工作流程图语音引擎的一般工作流程如下:1.发起端进行声音采集2.采集到的声音信号进行回声消除,噪音抑制,自动增益控制处理3.语音压缩编码4.

2015-09-09 15:35:33 10684 2

原创 【算法】【动态规划】Coin Exchange

算法描述:Korean coins consist of 6 levels of 1 won, 5 won, 10 won, 50 won, 100 won, and 500 won. If you make 256 won change, you need 5 coins: two coins of 100 won, one coin of 50 won, one coin of 5 w

2015-08-28 10:42:09 1287

原创 【算法】【动态规划】Subset Sum

问题描述: When you divide numbers from 1 to N into two subsets, you can make each subset sum equal. For example, if N is 3, elements of the entire set are {1, 2, & 3}. In case each set sum is equal,

2015-08-27 15:58:00 2957 1

深入浅出Android

深入浅出 Android android 入门指南

2012-07-15

linux Android基础知识总结.pdf

linux Android基础知识总结 1.Android编译系统分析 2.文件系统分析 3.制作交叉工具链 4.软件编译常识 5.设置模块流程分析 6.linux系统启动流程分析 7.linux下svn使用指南 8.LFS相关 9.linux内核的初步理解

2012-07-15

Android SDK 中文开发文档

Android SDK 中文开发文档, 适合android入门

2012-07-15

空空如也

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

TA关注的人

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