(转)DSound开发常用的几个结构
WAVEFORMATEX
WAVEFORMATEX
{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
};
这个结构定义了WAVE音频数据的格式。只有所有音频包含的一般格式信息包含在这个结构中,对于需要其它信息的格式,这个结构包含在其中并且作为第一个参数。
成员变量
wFormatTag
Wave声音格式。格式标签是微软为一些压缩算法注册的,完整的格式标签列表在mmreg.h中定义。对于单声道或者双声道PCM数据,这个数值必须是WAVE_FORMAT_PCM
nChannels
WAVE数据的声道数量。非立体声使用单声道,立体声使用双声道。
nSamplesPerSec
采样率,单位HZ。如果wFormatTag为WAVE_FORMAT_PCM,一般这个数值是8.0K、11.025K、22.05K、或者44.1K。对于非PCM格式,这个变量必须通过格式标签的厂家说明书计算。
nAvgBytesPerSec
平均数据传输速率。如果格式标签是WAVE_FORMAT_PCM,这个值必须等于年SamplesPerSec和BlockAlign的乘积。对于非PCM格式,这个变量必须通过格式标签的厂家说明书计算。
nBlockAlign
区块队列,单位字节。区块队列是对于格式来说最小的单元。如果格式是WAVE_FORMAT_PCM 或者 WAVE_FORMAT_EXTENSIBLE,这个数值必须等于nChannels和wBitsPerSample的乘积除以8。对于非PCM格式,这个变量必须通过格式标签的厂家说明书计算。
软件必须每次执行一个nBlockAlign字节的加倍。写入和从一个设备读取数据必须在一个区块的开始。
wBitsPerSample
每次采样的字节。如果格式标签是WAVE_FORMAT_PCM,这个值必须等于8或者16。对于非PCM格式,这个变量必须通过格式标签的厂家说明书计算。如果格式标签是WAVE_FORMAT_EXTENSIBLE,这个值可以是任何8的倍数。一些压缩方案不能定义这个值,所以可以为0。
cbSize
大小,单位字节。作为额外的格式信息挂接在WAVEFORMATEX结构的结果。这个信息可以被非PCM格式用来存储额外格式标签的属性。如果没有额外的信息,这个成员必须设置为0。对于WAVE_FORMAT_PCM格式,也仅对于这种格式,这个成员被忽略。
DSBUFFERDESC
DSBUFFERDESC
{
DWORD dwSize;
DWORD dwFlags;
DWORD dwBufferBytes;
DWORD dwReserved;
LPWAVEFORMATEX lpwfxFormat;
GUID guid3DAlgorithm;
};
这个结构描述了一个新缓冲区对象的属性。IDirectSound8::CreateSoundBuffer和DirectSoundFullDuplexCreate8函数使用。为了兼容DX7或者更早的DX,这个结构的早期版本DSBUFFERDESC1仍然在Dsound.h中存在。
成员变量
dwSize
结构的大小,单位字节。这个成员必须在结构体使用以前被定义。
dwFlags
定义缓冲区的兼容能力,下面的值可以被定义
|
Value |
Description |
|
DSBCAPS_CTRL3D |
缓冲区具有3D控制兼容性。不能和DSBCAPS_CTRLPAN绑定,而且不能和lpwfxFormat中为设置立体声格式的缓冲区所设置。 |
|
DSBCAPS_CTRLFREQUENCY |
可以改变频率 |
|
DSBCAPS_CTRLFX |
支持特效处理。缓冲区必须足够大,可以保持至少DSBSIZE_FX_MIN毫秒的数据。 |
|
DSBCAPS_CTRLPAN |
具有面板控制的兼容性。不能和DSBCAPS_CTRL3D标志位绑定 |
|
DSBCAPS_CTRLPOSITIONNOTIFY |
The buffer has position notification capability. See Remarks. |
|
DSBCAPS_CTRLVOLUME |
可以控制音量。 |
|
DSBCAPS_GETCURRENTPOSITION2 |
The IDirectSoundBuffer8::GetCurrentPositionmethod uses the new behavior of the play cursor. In DirectSound in DirectX 1, the play cursor was significantly ahead of the actual playing sound on emulated sound cards; it was directly behind the write cursor. Now, if the DSBCAPS_GETCURRENTPOSITION2 flag is specified, the application can get a more accurate play cursor. If this flag is not specified, the old behavior is preserved for compatibility. Note that this flag affects only emulated sound cards. If a DirectSound driver is present, the play cursor is accurate for DirectSound in all versions of DirectX. |
|
DSBCAPS_GLOBALFOCUS |
全局缓冲区标志。设置了这个标志位,如果用户切换焦点到其它程序,即使新的程序也使用DSound,程序也能继续播放它的缓冲区。一个例外情况是切换到的程序使用DSSCL_WRITEPRIMARY标志作为协调层级。这种情况下,其它程序的全局声音也是不能听到的。 |
|
DSBCAPS_LOCDEFER |
在播放的时候缓冲区可以被分配到硬件或者软件资源中。这个标志位只有使用声音管理的缓冲区才可以设置。 |
|
DSBCAPS_LOCHARDWARE |
缓冲区必须使用硬件混音。如果设备不支持硬件混音或者需求的硬件内存不可用,IDirectSound8::CreateSoundBuffer的方法会失败。程序必须保证有混音频道可以为缓冲区所使用,这种情况是不能保证的。如果DSBCAPS_LOCSOFTWARE和这个标志位都没被指定,缓冲区优先使用这个标志位。硬件缓冲区在64位操作系统中是不被支持的。 |
|
DSBCAPS_LOCSOFTWARE |
这个缓冲区必须在软件内存中,使用软件混音器,即使DSBCAPS_STATIC被指定和硬件资源可用的情况下也不例外。 |
|
DSBCAPS_MUTE3DATMAXDISTANCE |
The sound is reduced to silence at the maximum distance. The buffer will stop playing when the maximum distance is exceeded, so that processor time is not wasted. Applies only to software buffers. |
|
DSBCAPS_PRIMARYBUFFER |
The buffer is a primary buffer. If this value is not specified, a secondary sound buffer is created. Cannot be combined with DSBCAPS_CTRLFX. |
|
DSBCAPS_STATIC |
The buffer is placed in on-board hardware memory, if available. No error occurs if such memory is not available. This flag has no effect on cards using the PCI bus. Cannot be combined with DSBCAPS_CTRLFX. |
|
DSBCAPS_STICKYFOCUS |
TThe buffer has sticky focus. If the user switches to another application not using DirectSound, the application's normal buffers are muted, but sticky focus buffers are still audible. |
转自:http://blog.sina.com.cn/s/blog_4de8abbb01000atg.html
(转)DSound开发常用的几个结构的更多相关文章
- web前端开发常用的10个高端CSS UI开源框架
web前端开发常用的10个高端CSS UI开源框架 随着人们对体验的极致追求,web页面设计也面临着新的挑战,不仅需要更人性化的设计理念,还需要设计出更酷炫的页面.作为web前端开发人员,运用开源 ...
- J2EE开发常用开源框架技术(转)
主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hiber ...
- 转发—Android开发常用的插件及工具
作者:蓝之风 出处:http://www.cnblogs.com/vaiyanzi/ Android开发常用的插件及工具 1.GitHub,这个不管是做安卓还是其他,只要是开发就必上的网站,也是天朝没 ...
- Notepad++前端开发常用插件介绍
Notepad++前端开发常用插件介绍 Notepad++除了自身的功能强大之外,更是有许多非常的优秀的插件,下面就总结一下前端开发过程一些比较常用的插件. Emmet Emmet的前身是Zen Co ...
- .net开发常用的第三方开发组件
转自:http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件: 1.RSS.NET.dll: RSS.NET是一款操作RSS feed ...
- IOS开发常用设计模式
IOS开发常用设计模式 说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下. 单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们 ...
- atitit js 开发工具 ide的代码结构显示(func list) outline总结
atitit js 开发工具 ide的代码结构显示(func list) outline总结 eclips环境::4.3.1 #-------需要一个js开发工具,可以显示outline或者代码结构显 ...
- IOS开发--常用工具类收集整理(Objective-C)(持续更新)
前言:整理和收集了IOS项目开发常用的工具类,最后也给出了源码下载链接. 这些可复用的工具,一定会给你实际项目开发工作锦上添花,会给你带来大大的工作效率. 重复造轮子的事情,除却自我多练习编码之外,就 ...
- Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN
Notepad++前端开发常用插件介绍 - BorisHuai前端修炼 - 博客频道 - CSDN.NET http://blog.csdn.net/borishuai/article/details ...
随机推荐
- 【Java】Java日志框架Logback的简单例子
常用的日志框架 SLF4J,全称Simple Logging Facade for Java,即Java简单日志外观框架,顾名思义,它并非具体的日志实现,而是日志外观框架 java.util.logg ...
- Lua 自己实现排序sort比较方法,抛出错误invalid order function for sorting
明天新功能就要上了,结果刚刚突然QA说项目抛出了错误.握草,吓得立马出了一身汗. 查了一下错误,发现可能是自己写的不稳定排序造成的.自己感觉应该就是.把排序方法写成稳定的之后,代码分离编译进手机,跑了 ...
- Unique constraint on single String column with GreenDao
转:http://stackoverflow.com/questions/22070281/greendao-support-for-unique-constraint-on-multiple-col ...
- 取出csv文件中的中文评论数据
# -*- coding: utf-8 -*- import csv import re csvfile = 'weibo.csv' def columns_data(path, column): c ...
- NLP自然语言处理 jieba中文分词,关键词提取,词性标注,并行分词,起止位置,文本挖掘,NLP WordEmbedding的概念和实现
1. NLP 走近自然语言处理 概念 Natural Language Processing/Understanding,自然语言处理/理解 日常对话.办公写作.上网浏览 希望机器能像人一样去理解,以 ...
- C语言 · 周期字串
算法提高 周期字串 时间限制:1.0s 内存限制:256.0MB 问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢 ...
- Linxu安装Tomcat与Jdk并卸载自带OpenJdk
下载安装tomcat 1.下载apache-tomcat-7.0.47.tar.gz tomcat压缩包上传到linxu服务器 2.cd到文件存放目录使用(tar -xvzf apache-tomca ...
- Sahi (2) —— https/SSL配置(102 Tutorial)
Sahi (2) -- https/SSL配置(102 Tutorial) jvm版本: 1.8.0_65 sahi版本: Sahi Pro 6.1.0 参考来源: Sahi官网 Sahi Quick ...
- 安全运维之:网络实时流量监测工具iftop
网络管理是基础运维中一个很重要的工作,在看似平静的网络运行中,其实暗流汹涌,要保证业务系统稳定运行,网络运维者必须要了解网络的流量状态.各个网段的使用情形,带宽的利用率.网络是否存在瓶颈等,同时,当网 ...
- Java学习笔记:具体解释传值和传引用
传值和传引用 When you're passing primitives into a method ,you get a distinct copy of the primitive. When ...