(转)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

时间: 2024-10-17 07:40:50

(转)DSound开发常用的几个结构的相关文章

Notepad++前端开发常用插件介绍

Notepad++前端开发常用插件介绍 Notepad++除了自身的功能强大之外,更是有许多非常的优秀的插件,下面就总结一下前端开发过程一些比较常用的插件. Emmet Emmet的前身是Zen Coding,一款使用仿CSS选择器的语法来快速开发HTML和CSS的插件,是前端开发神器.它无视了编辑器的自动提示和自动完成,秒杀了你自定义的各种快捷键或者 AHK 的热字符串,以智能简洁高效的缩短输入,带给你超快速地书写各种复杂而枯燥的 HTML 和 CSS 代码的体验.现在可以在Notepad++

android studio 开发常用快捷键使用分享

windows开发常用快捷键 实体类生成get set 等方法 快捷生成变量快捷 windows开发常用快捷键 实体类生成get set 等方法 快捷键 alt + insert 快捷生成变量快捷 ctrl +alt + f 全局变量 ctr + alt + c 全局常量 ctr + alt + v 局部变量 ctr + alt + m 抽取方法 ctr + alt + p 抽取方法参数 ctr + i 实现接口 ctr + o 重写父类方法 ctr + f12 查看类成员 ctr + alt

J2EE开发常用开源框架技术(转)

主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对 于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装Que

WEB开发常用术语中英文对照

WEB front-end developmentWEB前端开发 User Experience Design用户体验设计 User Interface Design用户界面设计 Interaction Design交互设计 Usability Design可用性设计 Information Architecture信息架构 Information Architect信息架构师 Website Design网站设计 Visual Design视觉设计 Touch Screen触摸屏 Site S

iOS 开发常用的调试命令

XCode4.0以后,编译器是LLVM,控制台调试命令前缀是lldb 第一.LLVM简介 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本. 第二. 对关注编译技术的开发人员,LLVM提供了很多优点: 现代化的设计 LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题

.net开发常用的第三方开发组件

转自:http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件: 1.RSS.NET.dll: RSS.NET是一款操作RSS feeds的开源.net类库.它为解析和编写 RSS feeds提供了一个可重用的对象模型.它完全兼容RSS 0.90,0.91,0.92, 和2.0.1等版本. 2.AspNetPager.dll:分页控件:官方地址:http://www.webdiyer.com/AspNetPager/default.

J2EE开发常用开源框架技术(转)

1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对 于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做 HibernateDAO.也可以直接利用它2) iBATIS另一个ORM工具,Apache的,没有Hibernate那么集成,自由度比较大 2:

PHP开发常用函数和必须会的函数总结 --带例子

PHP开发常用函数 在共过开发中,我经常要用到一些PHP函数,有时会不记得,这里把这些常用函数总结到一起.本篇列举了PHP程序员开发中经常用到的php函数.几乎每个函数都有例子,老手可以看看当做温习,新手可以背理论,然后把例子敲他几遍,后面再开发中,开发效率绝对有所提高.例子大多取自w3cschool标准例子和网上的一些资源,部分为个人所写,均经过测试.如果要装载本文,还请注明来源 :http://blog.csdn.net/qq_22327455. 一.检查函数 1.empty() empty

大数据开发常用的大数据分析软件有什么?

大数据开发常用的大数据分析软件有什么? 大数据研究的出现,为企业.研究机构.政府决策提供了新的行之有效思路和手段,想要做好大数据的管理和分析,一些大数据开发工具的使用是必不可少的,以下是大数据开发过程中常用的工具: 1. Apache Hive Hive是一个建立在Hadoop上的开源数据仓库基础设施,通过Hive可以很容易的进行数据的ETL,对数据进行结构化处理,并对Hadoop上大数据文件进行查询和处理等. Hive提供了一种简单的类似SQL的查询语言-HiveQL,这为熟悉SQL语言的用户