自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【Linux多线程】同步与互斥的区别

同步与互斥这两个概念经常被混淆,所以在这里说一下它们的区别。一、同步与互斥的区别1. 同步同步,又称直接制约关系,是指多个线程(或进程)为了合作完成任务,必须严格按照规定的 某种先后次序来运行。例如,线程 T2 中的语句 y 要使用线程 T1 中的语句 x 的运行结果,所以只有当语句 x 执行完成之后语句 y 才可以执行。我们可以使用信号量进行同步:semaph

2017-05-25 20:47:11 480

转载 Linux 线程同步的三种方法

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。Linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。一、互斥锁(mutex)通过锁机制实现线程间的同步。初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使用前,要对它进行初始化。静态分配:pthread_mutex_t mutex = PTHR

2017-05-25 20:44:24 250

原创 大华摄像头获取yuv数据

这里我把从大华公司获取的资料代码贴出来,希望对大家有所帮助。// DecCallBack.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #include "dhnetsdk.h"#include #include "dhplay.h

2017-05-25 16:37:37 9387 17

转载 C/C++变量命名规则,个人习惯总结

C_C++变量命名规则变量命名规则是为了增强代码的可读性和容易维护性。以下为C++必须遵守的变量命名规则: 1、 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。2、 第一个字母必须是字母或者下划线开头。3、 不能使用C++关键字来命名变量,以免冲突。4、 变量名区分大小写。 变量命名规则:一、    

2017-05-22 18:50:56 712

原创 2017.5.18总结(解决问题)

最近自己所做的内容是关于g722、g723、g726、g729的压缩算法。反复循环的做,让自己有了一些反思和想法,记录下来。1.这些算法自己根本都看不懂,可是自己能够修改成功,便在于:自己能够在网上找到相对应的解决问题的方法,这才是最根本的。源码可以在网上下载的到,所遇到的算法问题也可以在网上查找的到,所以,利用网络来查找自己所需要的额内容,是程序员必备的能力。最近我发现,在使用搜索引擎时,输

2017-05-18 20:45:18 350

原创 g729编解码的总结

关于音频编解码这一块的内容,感觉就g729这个算法麻烦一点。在网上查找资料关于g729有很多内容,大致也了解了一下。g729算法算是一个类,里面细分还有很多具体的东西,在ITU官网上下载的g729包里面,有各种各样的:g729a、g729b、g729c等等,自己实在是不知道该使用哪一个,仔细阅读了文档以后,才发现,g729a是适合自己的。具体来说,每个都实现的功能不同,有的算法中提供了关于码率

2017-05-18 20:20:57 20355 10

转载 [整理]语音编码G.711, G.729

1. 语音编码分类   (1)波形编码: 以逼近声音波形为目标,其代表算法有G.711,其声音清楚度好,语音的自然度高,但是压缩效率比较差,常在32kbps以上。   (2)参数编码: 将人的声道抽象成一个发声模型,对这个模型的参数进行编码,其特点是压缩效率高,但是自然度比较差,能够以极低速率进行编码。   (3)波形参数混合编码: 结合了波形编码和参数编码的优点,代表算法有G.723

2017-05-17 19:28:03 4074

转载 Linux中的命令 make -f 是什么意思

出处:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246091d21a8e07b770703a79b273b46e5540faab66d2369543de1cc8edb1183fa8f2d2d832735761892044f934fa0951d79866a8

2017-05-16 19:59:07 13684

原创 g723编解码之自我总结

其实,很多关于编解码的音视频例子,都是通过文件来进行操作的。自己做过的(ffmpeg视频编解码、g726编解码、g723编解码)都是从网上找的例子来进行修改的。其中,最难的地方就是在于把文件读取改为缓存读取。需要编解码的音视频流,都是通过回调函数回调上来的,一般有用的是两个参数:指针和流的大小长度。这里总结一下g723的方法。g723是通过读取一个字节,而不是通过读取流的一定长度,来进

2017-05-15 19:41:40 3283 1

转载 两个指针相减的结果

例子:inta[3] ={1,2,3};    int* p;    int* q;     p= a;    cout"p的地址:"    cout"p指向的内容:"     q= &a[2];    cout"q的地址:"    cout"q指向的内容:"     cout"两个指针的减法:

2017-05-11 19:44:08 5761

原创 g726算法的一些总结

在网上有很多关于g726算法的编解码,我做的是pcm和g726之间互相转码。自己对音频的编解码了解的不多,做一下记录吧。我在网上下载的很多pcm文件,经过测试,采样都是8000HZ,这个和自己所想的倒是不同的,这歌参数要是设置不对,是不能播放pcm出来的。自己进行编译的时候,pcm进行过编解码后,生成的pcm文件质量是很好的,可是中间生成的g726文件的质量不是很好,有杂音,不过能听清

2017-05-10 21:07:35 2785

原创 vs2015 c文件编译成dll文件

自己对window下的编程不熟悉,花费了一下午时间在编译库文件上,也让自己加深了印象,希望对初学者有帮助吧。第一,自己不是很确定是否可以进行c的编译,因为很多的库的编译都是c++的文件,不过自己测试后,发现确是可以把dllmain等自带的cpp文件可以改为c文件,进行编译的,调用也是没有问题的;第二,自己编译的时候,没有写函数的导出的声明,缺少extern __declspec(dll

2017-05-10 20:50:49 4294

原创 2017.5.6(看懂代码)

最近总结了一下,感觉自己还是有进步的,自己从接触IT行业,接着培训,到现在工作,差不多一年的时间了。最近发现自己的一个问题:自己有点害怕看代码。简单的代码当然无所谓,可是当很多的SDK包下载下来,去分析的时候,感觉好恐怖。比如:webrtc的源码,下载下来都十多个G;live555的源码,太多的继承关系;想到这些,自己头都大了,去看的时候,不仅逻辑不清,而且关于很多的变量,那一大串一大

2017-05-06 11:51:56 491

转载 PCM 音频格式分析

PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。             将音频数字化,其实就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运作原理如下。首先我们考

2017-05-05 09:58:41 10038

转载 YV12 and NV12

用videoCapture和IAMStreamConfig拿到的支持的格式列表。发现支持2中图像格式,YV12和NV12。具体是怎么样的内存分布不知道。查了些文档。自己修改了几个图。看出了点端倪YV12先看看 http://www.fourcc.org/yuv.php 上比较标准的定义:YV12This is the format of choice for man

2017-05-03 16:42:20 442

原创 linux下用户的增删

增加用户:sudo useradd -m + name;删除用户:sudo userdel +name;(参数-f :强制删除用户)切换用户:su + name;

2017-05-02 18:19:02 268

转载 PCM数据格式

1. 音频简介      经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.     44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);     22050HZ 8bit  mono: 每秒钟有 22050 次采样, 采

2017-05-02 13:30:50 1031

转载 线程的分离状态

其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下,有人说是桟资源不足引起的,要调用一个pthread_attr_setdetachstate()函数,当时不明白为什么,其原理是什么,于是又搜了一下,下文是其原理简述:在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结

2017-05-02 11:02:55 467

原创 c++ 关于sigslot库的调用例子

sigslot库文件其实就是一个.h文件,其作用类似于qt中的信号与槽机制。需要注意一点:signal2 clicked;其中signal2的意思是可以进行传递两个参数,是可以设置传参个数的。其是通过模板来进行实现的。#include "sigslot.h" #include #include using namespace sigslot;  class Sw

2017-05-02 10:44:59 819

转载 c++模板类学习

1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y){  return(x>y)?x:y ; }//函数2.float

2017-05-02 10:25:52 209

原创 vim编辑器中整段代码的移动

先在~/.vimrc文件中设置一下参数,set shiftwidth=4。之后进入vim中,按下v,进行选择移动的整段代码,是连续的代码段。之后进行可以  向左(向右)移动。shift+> (向右缩进) ,shift+

2017-05-02 10:16:43 8285 2

空空如也

空空如也

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

TA关注的人

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