C/C++
文章平均质量分 68
__cc__
这个作者很懒,什么都没留下…
展开
-
windows下守护进程实现
这里的守护进程指的是无控制终端的进程。Linux下运行进程只需要后面添加&就可以实现。有的时候需要设计一个可以同时在Windows和Linux下运行的守护进程为了避免过多的修改代码。可以添加如下伪指令来实现:#ifndef WIN32#pragma comment(linker,"subsystem:windows entry:mainCRTStartup")#endif设原创 2012-02-25 17:35:36 · 7630 阅读 · 2 评论 -
WebRTC源码分析四:视频模块结构
本文在上篇的基础上介绍WebRTC视频部分的模块结构,以进一步了解其实现框架。一、对外接口 对外接口有ViEBase,ViECapture,ViECodec,ViEEncryption,ViEFile,ViEImageProcess,ViENetwork,ViERender和ViERTP_RTCP。主要接口有:1)ViEBase:负责创建和管理视频会话链路;2)ViEC原创 2014-02-19 16:12:06 · 10677 阅读 · 1 评论 -
时间戳杂谈
参考时钟与时间戳处理1、参考时钟 用于作为系统的唯一参考,一般以系统启动时间开始计时,具体数值影响不大,主要是做一个比较和参考作用。参考时钟设计时主要保证稳定性,尽量不产生时钟偏移。2、时间戳时间戳有两种,1)同步时间戳 之所以称为同步,其作用是同步多个流之间的操作,如果只有一个流,显然这个时间戳是没有意义的。一般通常用于音频和视频的同步播放。原创 2014-02-20 16:28:55 · 3166 阅读 · 0 评论 -
WebRTC源码分析三:视频处理流程
文本介绍视频的处理流程。图1中显示了两路视频会话视频信号流过程。以一路视频会话为例,主要分为以下几个线程:1)视频源产生线程:Camera生产视频画面,封装成视频帧,以一定帧率投递到下一个模块。;2)采集线程:由Capturer负责采集视频帧,并对视频帧进行一定处理,如调整画面亮度。并送入各个发送链路的编码模块编码并发送出去;3)接收线程:Rtp/Rtcp负责接收RTP/R原创 2014-02-19 11:32:17 · 12848 阅读 · 5 评论 -
WebRTC源码分析二:音频模块结构
本文介绍WebRTC音频模块组成和结构,详细介绍音频引擎的配置和启动,相信看完本文后,很多人可以利用webRTC完成一个音频通话程序开发。一、对外接口 音频部分的对外主要接口如下,各个接口之间的关系如图1所示。1)VoiceEngine:负责引擎的所有接口查询,存储共享数据信息ShareData。2)VoEBase:负责音频处理的基本操作。3)VoEAudioProc原创 2014-02-17 17:44:30 · 18661 阅读 · 4 评论 -
WebRTC源码分析一:音频处理流程
本文概要介绍webRTC的音频处理流程,见下图:webRTC将音频会话抽象为一个通道Channel,譬如A与B进行音频通话,则A需要建立一个Channel与B进行音频数据传输。上图中有三个Channel,每个Channel包含编解码和RTP/RTCP发送功能。以一个Channel而言,应用程序中将包含三个活动线程,录音线程,音频接收线程和播放线程。1)录音线程:负责麦克风音原创 2014-02-14 15:18:25 · 13657 阅读 · 6 评论 -
WinHTK开发与使用二:孤立词识别
WinHTK开发与使用二:孤立词识别 本文在WinHTK软件设计的基础之上,介绍设计语音识别系统过程。具体包括孤立词语音和连续语音识别系统设计,这里先介绍孤立词的识别。语音识别系统设计过程主要包括四个步骤[32]:数据准备,模型训练,识别测试,效果分析,如图1所示。 图1 基于WinHTK语音识别系统设计过程一、孤立词识别本设计的内容是介绍一个识别0到9共原创 2014-02-15 22:05:20 · 3607 阅读 · 3 评论 -
WinHTK开发与使用三:连续语音识别
WinHTK开发与使用三:连续语音识别 本文接上文,介绍连续语音识别系统设计过程,演示视频见下载资源中。二、连续语音识别系统设计 上面讨论了一个简单的十个孤立数字识别系统的设计过程,可以看出比较简单,效果也非常好。下面将设计一连续语音识别系统,相比较于孤立词识别而言,它有很多不同的地方,且过程也比较繁琐复杂,识别效果并不是非常好(当然这是有很多原因的)。为了便于实现原创 2014-02-16 11:31:45 · 7588 阅读 · 1 评论 -
WinHTK开发与使用一:软件设计
WinHTK开发与使用一:软件设计 接触语音识别的同行都会了解HTK,HTK工具包的功能很强大;但是对于习惯界面操作的很多人而言,它有一些先天不足。当然对于一开始就习惯类Unix等命令行界面开发者而言,这些都不是问题,所以本系列文章只针对熟悉可见即可及操作的对于语音识别感兴趣的初学者。因导致HTK不方便使用的原因主要以下几点:(1) 不方便安装,随便上网上一搜,涉及HTK原创 2014-02-15 17:59:49 · 3554 阅读 · 14 评论 -
命令行解析代码
开发设计过程中,往往要对命令行进行解析,下面实现了命令行解析功能,具体见代码(QuickHash在之前文章中):命令选项类,封装-p等命令选项#ifndef COMMAND_OPTION_H#define COMMAND_OPTION_H#include /**@file CommandOption.h * * @author xiaoxing.zhou * @date 201原创 2014-02-11 10:15:59 · 5230 阅读 · 0 评论 -
多进程及多线程之间同步与通信
同步与互斥:简单的控制通信:交互的信息更多Windows和Linux下用于同步与通信的机制大体一致,下面简单做一个归纳。1.多线程的同步方式 Windows Linux 备注原子操作原创 2012-04-23 14:09:53 · 4881 阅读 · 0 评论 -
c++内存池实现
利用C/C++开发大型应用程序中,内存的管理与分配是一个需要认真考虑的部分。本文描述了内存池设计原理并给出内存池的实现代码,代码支持Windows和Linux,多线程安全。内存池设计过程中需要考虑好内存的分配与释放问题,其实也就是空间和时间的矛盾。有的内存池设计得很巧妙,内存分配与需求相当,但是会浪费过多的时间去查找分配与释放,这就得不偿失;实际使用中,我们更多的是关心内存分配的速原创 2012-04-19 17:12:25 · 19040 阅读 · 18 评论 -
C++状态机实现V1.0
实现状态机框架,可以继承此框架的基类实现自定义功能,需要QuickHash头文件,源码如下,请尊重原创!欢迎批评指正!FSM.h#ifndef FSM_H#define FSM_H#include #include "QuickHash.h"#include "FSMState.h"#include "TypeTag.h"/**@file FSM.h * 实现状态机原创 2012-04-27 18:14:57 · 9105 阅读 · 12 评论 -
状态机之C++解析
状态机之C++解析 2008-11-18 作者:CppExplore 来源:cppblog.com 一、状态机描述状态机理论最初的发展在数字电路设计领域。在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为Mealy型和Moore型状态机;根据输出是否与输入信号同步,状态机可以划分为异步和同步状态机。而在软转载 2012-04-27 17:06:14 · 2399 阅读 · 0 评论 -
C++ Hash表设计V2.0
在第一个版本上修改完善的,可以任意使用,但请尊重原创:#ifndef QUICK_HASH_H#define QUICK_HASH_H#include #include /**@file QuickHash.h * 实现Hash功能的模板类 * @author xiaoxing.zhou * @date 2012-4-26 * @version v2.0 *//**@原创 2012-04-26 10:14:21 · 2286 阅读 · 3 评论 -
C++ Hash表设计V1.0
前面发了几篇博客,一个评语都没有,这次废话不多说,直接上代码。有讨论的话再给出代码介绍。请尊重原创!!!#ifndef QUICK_HASH_H#define QUICK_HASH_H#include #include /**@file QuickHash.h * 实现Hash功能的模板类 * @author xiaoxing.zhou * @date 2012-4-25原创 2012-04-25 17:55:15 · 1466 阅读 · 0 评论 -
VLC播放引擎架构
VLC虽然是用c代码实现的,但是在代码编写上遵循了面向对象原则,易修改和扩展。不过实话实说,结构之间的关联太过于频繁,理解上还是不太容易。如果能够改成c++那是最好不过了。 对于媒体播放器,肯定离不开解复用,解码,音频和视频输出这四个模块,不管是DirectShow,还是VLC,或者自己要开发一个播放器,都是如此。媒体播放器的差异主要存在于模块之间的通信方式,界面消息处理上。Di原创 2014-03-04 15:03:10 · 5269 阅读 · 0 评论