摘要: AVX全称Advanced Vcetor Extension,是对SSE的后续扩展,主要分为AVX、AVX2、AVX512三种。在目前常见的机器上,大多只支持到AVX系列,因此其他SIMD扩展指令我们就先不学习了。 1. AVX系列 1.1 AVX AVX使用了16个YMM寄存器,主要针对的是浮点数 阅读全文
posted @ 2018-04-01 21:32 lgxZJ 阅读(2270) 评论(0) 推荐(0) 编辑
摘要: DirectSound的音频捕获原理和播放原理差不多,内部在一个缓冲区上循环写入捕获到的数据,并且提供notify通知功能。 1. 音频捕获 因为捕获流程和播放流程类似,我们就不在这里赘述了,只给出简单的函数引用和图示: 最后两个是音效捕获接口,用来控制Aec(回声消除)、Noise Fill(噪音 阅读全文
posted @ 2018-03-31 11:48 lgxZJ 阅读(1605) 评论(0) 推荐(0) 编辑
摘要: SSE(即Streaming SIMD Extension),是对由MMX指令集引进的SIMD模型的扩展。我们知道MMX有两个明显的缺点: 只能操作整数。 不能与浮点数同时运行(MMX使用FPU寄存器作为别名)。 而SSE则解决了这个问题,SSE 引进了8个专用的浮点寄存器MMX0~MMX7 。后来 阅读全文
posted @ 2018-03-23 16:33 lgxZJ 阅读(7254) 评论(2) 推荐(1) 编辑
摘要: 单指令多数据流,即SIMD(Single Instruction, Multiple Data)指一类能够在单个指令周期内同时处理多个数据元素的指令集,利用的是 数据级并行 来提高运行效率,典型的代表由Intel的MMX和SSE指令系列。这类指令的使用环境是对多个数据进行同一种处理,因此典型的应用场 阅读全文
posted @ 2018-03-15 22:07 lgxZJ 阅读(2477) 评论(0) 推荐(0) 编辑
摘要: DirectSound对于 单声道 的Wav文件(或者说对于单声道的PCM音频数据)提供了内置3D音效的模拟,你能够控制每一个声源和收听者的立体位置,对移动的物体应用多普勒效果等等。在单个应用程序中,可以有多个声源,但是只能有一个收听者。 1. 3D音效概念简介 1. 3D坐标: 坐标采用 左手笛卡 阅读全文
posted @ 2018-03-10 20:18 lgxZJ 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: DirectSound以DMO(DirectX Nedua Objects)的方式提供了对原始音频数据的处理,开发者能够通过VC6.0里的 来开发自定义的DMO。实际上这个DMO开发向导已经不在Visual Studio里面提供了,并且已经被MFT(Media Foundation Transfor 阅读全文
posted @ 2018-03-10 13:59 lgxZJ 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要给大家介绍下如何用DirectSound打造一个简易播放器,因为篇幅有限且代码逻辑较为复杂,我们只介绍下核心技术内容。该播放器主要包括以下功能: 播放、暂停 播放进度提示。 1. DirectSound播放概念简介 1.1 播放相关概念 首先要介绍下DirectSound的设计理念: ! 阅读全文
posted @ 2018-02-15 13:36 lgxZJ 阅读(1646) 评论(1) 推荐(1) 编辑
摘要: DirectSound只支持Wav格式的音频文件,在创建次缓冲区之前需要先确定播放的Wav音频数据的格式。如果是从本地Wav文件播放,则需要先读出它的数据格式。 1. Wav音频格式布局 Wav是WAVE音频格式文件的后缀名,WAVE音频格式全称是Waveform Audio File Format 阅读全文
posted @ 2018-02-04 11:40 lgxZJ 阅读(1685) 评论(0) 推荐(0) 编辑
摘要: DirectSound是DirectX组件之一,提供了对音频设备的捕获和播放能力,同时它也是唯一几个支持Xp系统的音频技术之一。 DirectSound主要有以下特点: 优点: 播放音频 低延迟 。 硬件资源控制 。 同时 播放 多个 声音。 控制硬件缓冲区的使用 优先级 (DirectSound使 阅读全文
posted @ 2018-01-13 15:24 lgxZJ 阅读(4027) 评论(0) 推荐(0) 编辑
摘要: Qt提供了对Javascript的良好支持, 如果查阅过文档你就知道Qt有两个不同的Js封装引擎: QScriptEngine QJSEngine QScriptEngine出现的比较早(自Qt4.3始),基于WebKit的JavaScriptCore引擎,提供的api相对来说比较丰富,但是已经被官 阅读全文
posted @ 2017-12-31 17:09 lgxZJ 阅读(13400) 评论(1) 推荐(4) 编辑
摘要: 这次讲Qt Style Sheet(QSS),QSS是一种与CSS类似的语言,实际上这两者几乎完全一样。既然谈到CSS我们就有必要说一下盒模型。 1. 盒模型(The Box Model) 在样式中,每一个UI控件都可以抽象成一个盒模型: ![box model pic] 盒模型由4个同心矩形组成, 阅读全文
posted @ 2017-12-24 12:35 lgxZJ 阅读(5620) 评论(0) 推荐(2) 编辑
摘要: 最近想学习下Qt的自定义界面,因此花了点时间看了下QStyle,,,,结果很难受,这一块涉及到一大块GUI的具体实现方式,看得我很头疼。想看第一手资料并且英语功底不错的可以直接上qt[文档][doc],下面我会以易懂的方式简单讲解下。 1. Qt控件结构简介 首先我们要来讲讲GUI控件结构,这里以Q 阅读全文
posted @ 2017-12-14 17:28 lgxZJ 阅读(13851) 评论(0) 推荐(5) 编辑
摘要: 本文我们通过一个读取Xml文件的小例子来学习QXmlStreamReader。 Xml 简介 Xml的全称是可扩展标记语言( EX tensible M arkup L anguage),同HTML一样是一种标记语言。但是与HTML不同,XML: 被设计为具有 自我描述性 。 它 没有预定义标签 , 阅读全文
posted @ 2017-12-03 14:37 lgxZJ 阅读(8784) 评论(0) 推荐(0) 编辑
摘要: 最近比较忙,今天此才有时间来继续学习下Qt。Qt的拖拽可以按字面意思分为 拖 和 拽 两部分。一般来说我们常见的拖拽分别由两个程序合作完成。例如我们经常把桌面的文件拖拽进其他目录: ![desktop drag] 这个拖拽在Qt中由两方合作完成,一个是桌面窗口另一个是目录窗口,桌面发起“拖”动作,目 阅读全文
posted @ 2017-11-22 14:29 lgxZJ 阅读(5276) 评论(0) 推荐(1) 编辑
摘要: 从Vista开始,windows底层的音频架构发生了改变:原本是底层API的waveXXX、mixerXXX等都在[Core Audio APIs][core audio apis link]的基础上进行了重构,上升为了高层API;底层API变为Core Audio API。 由于这个原因,在利用遗 阅读全文
posted @ 2017-10-15 14:43 lgxZJ 阅读(919) 评论(0) 推荐(0) 编辑
摘要: 这是Model/View中的最后一篇了,Qt官方显然弱化了Controller在MVC中的作用,提供了一个简化版的Delegate;甚至在Model/View框架的使用中,提供了默认的委托,让这个控制器愈加淡出开发者的实现。 实际上,Qt Model/View框架中的MVC概念是有误的,显而易见的就 阅读全文
posted @ 2017-10-01 20:13 lgxZJ 阅读(5637) 评论(0) 推荐(0) 编辑
摘要: 这是上一篇文章的续篇,关于自定义View。 多个View内部可以映射到同一个数据模型,也可以映射不同的数据结构;可以使用所有数据,也可以只使用部分数据。因为视图层与数据层的分离,操作相对比较灵活。 1. 实现一个自定义View 这里我们来实现一个自定义View,住要包含一下几个功能: 1. 图案自定 阅读全文
posted @ 2017-09-24 16:31 lgxZJ 阅读(2895) 评论(0) 推荐(0) 编辑
摘要: 众所周知,Qt提供了一套Model/View框架供开发者使用,Model用来提供数据, View则用来提供视觉层的显示。实际上这是一套遵循MVC设计模式的GUI框架,因为Qt还提供了默认的Delegate作为Controller来作为控制器。 ![MVC image] MVC的好处这里就不多说了,为 阅读全文
posted @ 2017-09-14 23:09 lgxZJ 阅读(5264) 评论(1) 推荐(3) 编辑
摘要: Libmicrohttpd简介 GNU Libmicrohttpd是一个用来在项目中内嵌http服务器的C语言库,它具有以下几个非常鲜明的特点: 1. C语言库,小而快。 2. API非常简单,且都是 可重入 的。 3. 兼容HTTP1.1。 4. 支持4种多线程模型(select、poll、pth 阅读全文
posted @ 2017-08-13 17:14 lgxZJ 阅读(5360) 评论(0) 推荐(0) 编辑
摘要: 最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程。网上参考了很多资料,发现只有QuaZip比较适合我的需求。但是QuaZip只提供源码,因此需要自己来编译。 QuaZip简介 QuaZIP is a simple C++ wrapper over Gilles Vollan 阅读全文
posted @ 2017-07-30 23:42 lgxZJ 阅读(2055) 评论(0) 推荐(0) 编辑