- 博客(22)
- 资源 (6)
- 收藏
- 关注
原创 声音合成
最近了解到一款声音合成软件,通过组合数字信号处理算法制作声音,感觉非常伟大!可以制作大自然的声音,如雨,打雷,刮风等。如果技术成熟,运用到软件开发中可以方便嵌入声音,而无需资源包。下面是教程,后续分析该软件运行原理,并准备开发一下,搞个sdk给大家用。http://obiwannabe.co.uk/tutorials/html/tutorials_main.html
2015-12-31 17:33:15 2863 1
原创 时间戳杂谈(二)
时间戳由时间基准和时间戳值组成。时间基准:对时间单位(s)划分的标准。例如,1/25表示每秒分为25个单位,每个单位时间间隔包含1个单位。3001/90000表示每秒分为90000单位,每个单位时间间隔包含3001个单位。时间戳值:基于时间基准的时间表示,也即多少个单位时间间隔。1)时间戳的作用是用于精确标记音视频流的相对位置和持续时间。2)基于时间基准使用时间戳,
2014-07-28 18:05:21 4055 1
原创 解复用实现原理
解复用是多媒体开发中核心的功能。解复用功能是从音视频信号源中分流出不同的音频和视频流;另外解复用一般属于一种主动操作,即从音视频信号源中取出。数据流结构为Source->Demux->Stream主要实现模式有:1)直接模式:直接从信号源获取相应的音频或者视频数据。这种方式适合顺序读取和拥有帧位置元数据等信号源。使用这种模式,实际是从Demux中直接获取数据,当然也可以从Str
2014-07-28 16:18:48 9506
原创 数据流同步控制策略
数据流同步控制策略 数据处理过程实际就是数据流控制过程,在数据流控制过程中,如何确保模块之间的同步显得尤为重要。数据流同步控制策略主要有以下两种方式,如图1所示。1)数据同步:如图上部分所示。多采用FIFO队列实现,一般会使用信号量或者事件来同步,另外还会通过定时辅助优点:消耗系统资源较少,属于比较自然的协调方式。缺点:如果划分模块耗时不
2014-03-07 18:12:59 4571 1
原创 VLC播放引擎架构
VLC虽然是用c代码实现的,但是在代码编写上遵循了面向对象原则,易修改和扩展。不过实话实说,结构之间的关联太过于频繁,理解上还是不太容易。如果能够改成c++那是最好不过了。 对于媒体播放器,肯定离不开解复用,解码,音频和视频输出这四个模块,不管是DirectShow,还是VLC,或者自己要开发一个播放器,都是如此。媒体播放器的差异主要存在于模块之间的通信方式,界面消息处理上。Di
2014-03-04 15:03:10 5284
原创 时间戳杂谈
参考时钟与时间戳处理1、参考时钟 用于作为系统的唯一参考,一般以系统启动时间开始计时,具体数值影响不大,主要是做一个比较和参考作用。参考时钟设计时主要保证稳定性,尽量不产生时钟偏移。2、时间戳时间戳有两种,1)同步时间戳 之所以称为同步,其作用是同步多个流之间的操作,如果只有一个流,显然这个时间戳是没有意义的。一般通常用于音频和视频的同步播放。
2014-02-20 16:28:55 3184
原创 WebRTC源码分析四:视频模块结构
本文在上篇的基础上介绍WebRTC视频部分的模块结构,以进一步了解其实现框架。一、对外接口 对外接口有ViEBase,ViECapture,ViECodec,ViEEncryption,ViEFile,ViEImageProcess,ViENetwork,ViERender和ViERTP_RTCP。主要接口有:1)ViEBase:负责创建和管理视频会话链路;2)ViEC
2014-02-19 16:12:06 10689 1
原创 WebRTC源码分析三:视频处理流程
文本介绍视频的处理流程。图1中显示了两路视频会话视频信号流过程。以一路视频会话为例,主要分为以下几个线程:1)视频源产生线程:Camera生产视频画面,封装成视频帧,以一定帧率投递到下一个模块。;2)采集线程:由Capturer负责采集视频帧,并对视频帧进行一定处理,如调整画面亮度。并送入各个发送链路的编码模块编码并发送出去;3)接收线程:Rtp/Rtcp负责接收RTP/R
2014-02-19 11:32:17 12861 5
原创 WebRTC源码分析二:音频模块结构
本文介绍WebRTC音频模块组成和结构,详细介绍音频引擎的配置和启动,相信看完本文后,很多人可以利用webRTC完成一个音频通话程序开发。一、对外接口 音频部分的对外主要接口如下,各个接口之间的关系如图1所示。1)VoiceEngine:负责引擎的所有接口查询,存储共享数据信息ShareData。2)VoEBase:负责音频处理的基本操作。3)VoEAudioProc
2014-02-17 17:44:30 18680 4
原创 WinHTK开发与使用三:连续语音识别
WinHTK开发与使用三:连续语音识别 本文接上文,介绍连续语音识别系统设计过程,演示视频见下载资源中。二、连续语音识别系统设计 上面讨论了一个简单的十个孤立数字识别系统的设计过程,可以看出比较简单,效果也非常好。下面将设计一连续语音识别系统,相比较于孤立词识别而言,它有很多不同的地方,且过程也比较繁琐复杂,识别效果并不是非常好(当然这是有很多原因的)。为了便于实现
2014-02-16 11:31:45 7601 1
原创 WinHTK开发与使用二:孤立词识别
WinHTK开发与使用二:孤立词识别 本文在WinHTK软件设计的基础之上,介绍设计语音识别系统过程。具体包括孤立词语音和连续语音识别系统设计,这里先介绍孤立词的识别。语音识别系统设计过程主要包括四个步骤[32]:数据准备,模型训练,识别测试,效果分析,如图1所示。 图1 基于WinHTK语音识别系统设计过程一、孤立词识别本设计的内容是介绍一个识别0到9共
2014-02-15 22:05:20 3613 3
原创 WinHTK开发与使用一:软件设计
WinHTK开发与使用一:软件设计 接触语音识别的同行都会了解HTK,HTK工具包的功能很强大;但是对于习惯界面操作的很多人而言,它有一些先天不足。当然对于一开始就习惯类Unix等命令行界面开发者而言,这些都不是问题,所以本系列文章只针对熟悉可见即可及操作的对于语音识别感兴趣的初学者。因导致HTK不方便使用的原因主要以下几点:(1) 不方便安装,随便上网上一搜,涉及HTK
2014-02-15 17:59:49 3560 14
原创 WebRTC源码分析一:音频处理流程
本文概要介绍webRTC的音频处理流程,见下图:webRTC将音频会话抽象为一个通道Channel,譬如A与B进行音频通话,则A需要建立一个Channel与B进行音频数据传输。上图中有三个Channel,每个Channel包含编解码和RTP/RTCP发送功能。以一个Channel而言,应用程序中将包含三个活动线程,录音线程,音频接收线程和播放线程。1)录音线程:负责麦克风音
2014-02-14 15:18:25 13684 6
原创 命令行解析代码
开发设计过程中,往往要对命令行进行解析,下面实现了命令行解析功能,具体见代码(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 5238
原创 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 9111 12
转载 状态机之C++解析
状态机之C++解析 2008-11-18 作者:CppExplore 来源:cppblog.com 一、状态机描述状态机理论最初的发展在数字电路设计领域。在数字电路方面,根据输出是否与输入信号有关,状态机可以划分为Mealy型和Moore型状态机;根据输出是否与输入信号同步,状态机可以划分为异步和同步状态机。而在软
2012-04-27 17:06:14 2409
原创 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 2294 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 1474
原创 svn配置
利用apache httpd服务来访问svn repository比较方便,下面介绍一下配置过程步骤1:下载subversion,并安装步骤2:创建一个代码库目录,E:/svnlib/repository步骤3:配置apache httpd服务利用htpasswd程序生成一个密码对,用于访问svn代码库;修改httpd.conf文件,添加以下内容LoadMo
2012-04-25 14:16:42 736
原创 多进程及多线程之间同步与通信
同步与互斥:简单的控制通信:交互的信息更多Windows和Linux下用于同步与通信的机制大体一致,下面简单做一个归纳。1.多线程的同步方式 Windows Linux 备注原子操作
2012-04-23 14:09:53 4897
原创 c++内存池实现
利用C/C++开发大型应用程序中,内存的管理与分配是一个需要认真考虑的部分。本文描述了内存池设计原理并给出内存池的实现代码,代码支持Windows和Linux,多线程安全。内存池设计过程中需要考虑好内存的分配与释放问题,其实也就是空间和时间的矛盾。有的内存池设计得很巧妙,内存分配与需求相当,但是会浪费过多的时间去查找分配与释放,这就得不偿失;实际使用中,我们更多的是关心内存分配的速
2012-04-19 17:12:25 19067 18
原创 windows下守护进程实现
这里的守护进程指的是无控制终端的进程。Linux下运行进程只需要后面添加&就可以实现。有的时候需要设计一个可以同时在Windows和Linux下运行的守护进程为了避免过多的修改代码。可以添加如下伪指令来实现:#ifndef WIN32#pragma comment(linker,"subsystem:windows entry:mainCRTStartup")#endif设
2012-02-25 17:35:36 7637 2
OverSim仿真软件
2014-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人