openal 基础知识3
四创新科技extension (Creative Labs'Extensions)
创新科技为OpenAL添加了多个extensions,许多都利用了他们声卡的特性。
“Enumerate All”extension 类似于“EnumerationExtension”,但是扩展到可以覆盖所有可用声卡(包括WindowsVista里面的声音end-points)。
“X-RAM” extension允许开发者使用板上声音RAM用来存储OpenALbuffers。
“Multi-ChannelBuffers” extension 允许开发者播放多通道buffers。
“Effects Extension(EFX)” 允许应用程序通过音效(如混音、低通滤波)来创建一个逼真的3D听觉世界。
1. “EnumerateAll” extension, “ALC_ENUMERATE_ALL_EXT”
它工作模式与“EnumerationExtension”相同,但是额外检测其它的音频路径。若你不需要这样完全控制输出路径的选择,则应该使用标准EnumerationExtension。
1) 检测EnumerateAll Extension
alcIsExtensionPresent (NULL, “ALC_ENUMERATE_ALL_EXT”) == AL_TRUE
2) 获取device名字
alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);可获取全部device名字列表。
alcGetString(NULL, ALC_DEFAULT_ALL_DEVICES_SPECIFIER);可获取默认device的名字。
2. X-RAM
声卡特性。
3. 多通道buffers(Multi-Channel Buffers)
此extension提供了播放多通道数据的功能,支持多种格式。多通道buffers可以附加(attach)或者入队(queue)到某个source上。当使用“GenericSoftware” device时,多通道buffers混合成双通道输出。在硬件device(比如“GenericHardware” device或本地device)上,buffer的每个通道都需要一个硬件发声器(hardwarevoice)。例如播放一个AL_FORMAT_511CHN16格式的buffer,需要6个独立的硬件发声器。若硬件资源不可用,则alSourceQueueBuffers和alSourcei都会调用失败。
支持的格式:
4通道,16bit数据
6通道(5.1),16bit数据
7通道(6.1),16bit数据
8通道(7.1),16bit数据
在切换不同格式的多通道buffer之前,要用alGetEnumValue来检查格式是否支持。
- ALenum eBufferFormat= alGetEnumValue(“AL_FORMAT_51CHN16”);
- if (!eBufferFormat) {
- printf(“No supportfor 5.1 playback!\n”);
- return 0;
- }
1)AL_FORMAT_QUAD16,16bit采样4通道buffer数据组织
Sample 1, 左前扬声器
Sample 1, 右前扬声器
Sample 1, 左后扬声器
Sample 1, 右后扬声器
Sample 2, 左前扬声器
…
2)AL_FORMAT_51CHN16,16bit采样5.1通道buffer数据组织
Sample 1, 左前扬声器
Sample 1, 右前扬声器
Sample 1, 中央扬声器
Sample 1, 低频扬声器
Sample 1, 左后扬声器
Sample 1, 右后扬声器
Sample 2, 左前扬声器
…
3)AL_FORMAT_61CHN16,16bit采样6.1通道buffer数据组织
Sample 1, 左前扬声器
Sample 1, 右前扬声器
Sample 1, 中前扬声器
Sample 1, 低频扬声器
Sample 1, 左后扬声器
Sample 1, 右后扬声器
Sample 1, 中后扬声器
Sample 2, 左前扬声器
…
4)AL_FORMAT_71CHN16,16bit采样7.1通道buffer数据组织
Sample 1, 左前扬声器
Sample 1, 右前扬声器
Sample 1, 中前扬声器
Sample 1, 低频扬声器
Sample 1, 左后扬声器
Sample 1, 右后扬声器
Sample 1, 左侧扬声器
Sample 1, 右侧扬声器
Sample 2, 左前扬声器
…
4. 音效extension(Effects Extension (EFX))
参见“EffectsExtension Guide”。(我没找到)
openal 基础知识3的更多相关文章
- openal 基础知识4
二函数 1. buffer函数 void alGenBuffers(ALsizei n /* buffer数*/, ALuint * buffers /* buffer ID数组*/); void a ...
- openal 基础知识2
三枚举扩展包(enumeration extension,“ALC_ENUMERATION_EXT”) 开发者可以通过这个extension得到一个字符串列表,区分不同的渲染/捕捉设备.OpenALr ...
- openal 基础知识
原文地址:http://blog.csdn.net/woker/article/details/8687380 一简介 OpenAL抽象出三种基本对象:buffers(缓冲区).sources(源). ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- JAVA:认识多线程
曾经古老的DOS操作系统是单任务的.还没有线程的概念,系统在每次仅仅能做一件事情.比方你在copy东西的时候不能rename文件名称. 为了提高系统的利用效率,採用批处理来批量运行任务. 如今的操作系 ...
- Disk performance
http://blogs.msdn.com/b/ntdebugging/archive/2014/12/09/disk-performance-internals.aspx http://blogs. ...
- 基于jQuery+ashx+.net实现三级栏目联动操作
父级ID可以为空以两个编号为一级 可以添加到第四级 table 字段有ID. name .parentNode. childNode等基本属性 selecet parentNode ,len(c ...
- XMLHttpRequest使用详解
1.什么是XMLHttpRequest XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信,这就是我们熟悉的AJAX.早期,各个浏览器的实现都不同,HTM ...
- Extjs 表单提交送给新手
Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 1.表单ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的btn函数,按照表单的name进行提交.提 ...
- web-project的/WEB-INF/lib
哪些jar包应该放到你的/WEB-INF/lib中?(目前为止,我的classpath只配置了dt.jar和tools.jar,也就是说,我的web-project所用的所有jar包都没有配置到cla ...
- Mac 命令行安装mysql homebrew 安装mysql后,如何配置mysql
非常好 强力推荐 这个是我最新并且一直推崇的方法:1.安装:sunyichaodeMacBook-Pro:~ sunyichao$ brew install mysql2.开启mysql:mysql. ...
- 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决
DtaGridView绑定数据源后.假设想让数据条件显示的话,直接使用 My_Row.Visible = False就会出错.错误类型是 "与货币管理器的位置关联的行不能设置为不可见&qu ...
- 【C#】获取泛型<T>的真实类型
需求:在包含泛型T的类或方法中,想要根据T的具体类型,进行相应的处理,需求伪代码如下: public void Test<T>() { if(T is string) { // do so ...
- Android——电脑蓝屏重启后,studio无法认出Android环境 setup JDK(缓存!缓存!缓存)
电脑蓝屏重启后,studio无法认出Android环境 setup JDK 问题重现:因为工作问题,需要用到模拟器,然后创建了模拟器后开启了漫长的等待之旅,两三分钟之后win8蓝屏,重启,再次打开,依 ...