四创新科技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来检查格式是否支持。

  1. ALenum eBufferFormat= alGetEnumValue(“AL_FORMAT_51CHN16”);
  2. if (!eBufferFormat) {
  3. printf(“No supportfor 5.1 playback!\n”);
  4. return 0;
  5. }

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的更多相关文章

  1. openal 基础知识4

    二函数 1. buffer函数 void alGenBuffers(ALsizei n /* buffer数*/, ALuint * buffers /* buffer ID数组*/); void a ...

  2. openal 基础知识2

    三枚举扩展包(enumeration extension,“ALC_ENUMERATION_EXT”) 开发者可以通过这个extension得到一个字符串列表,区分不同的渲染/捕捉设备.OpenALr ...

  3. openal 基础知识

    原文地址:http://blog.csdn.net/woker/article/details/8687380 一简介 OpenAL抽象出三种基本对象:buffers(缓冲区).sources(源). ...

  4. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  5. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  6. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  7. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  8. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  9. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. JAVA:认识多线程

    曾经古老的DOS操作系统是单任务的.还没有线程的概念,系统在每次仅仅能做一件事情.比方你在copy东西的时候不能rename文件名称. 为了提高系统的利用效率,採用批处理来批量运行任务. 如今的操作系 ...

  2. Disk performance

    http://blogs.msdn.com/b/ntdebugging/archive/2014/12/09/disk-performance-internals.aspx http://blogs. ...

  3. 基于jQuery+ashx+.net实现三级栏目联动操作

    父级ID可以为空以两个编号为一级 可以添加到第四级 table 字段有ID. name .parentNode. childNode等基本属性  selecet  parentNode  ,len(c ...

  4. XMLHttpRequest使用详解

    1.什么是XMLHttpRequest XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信,这就是我们熟悉的AJAX.早期,各个浏览器的实现都不同,HTM ...

  5. Extjs 表单提交送给新手

    Extjs的三种提交方式: 表单Ajax提交,普通提交,单独Ajax提交: 1.表单ajax提交(默认提交方式) 提交函数:当按下表单中的提交按钮时执行下面的btn函数,按照表单的name进行提交.提 ...

  6. web-project的/WEB-INF/lib

    哪些jar包应该放到你的/WEB-INF/lib中?(目前为止,我的classpath只配置了dt.jar和tools.jar,也就是说,我的web-project所用的所有jar包都没有配置到cla ...

  7. Mac 命令行安装mysql homebrew 安装mysql后,如何配置mysql

    非常好 强力推荐 这个是我最新并且一直推崇的方法:1.安装:sunyichaodeMacBook-Pro:~ sunyichao$ brew install mysql2.开启mysql:mysql. ...

  8. 章鱼哥出品—VB.NET DataGridView绑定数据源 &quot;与货币管理器的位置关联的行不能设置为不可见&quot; 问题的解决

    DtaGridView绑定数据源后.假设想让数据条件显示的话,直接使用  My_Row.Visible = False就会出错.错误类型是 "与货币管理器的位置关联的行不能设置为不可见&qu ...

  9. 【C#】获取泛型<T>的真实类型

    需求:在包含泛型T的类或方法中,想要根据T的具体类型,进行相应的处理,需求伪代码如下: public void Test<T>() { if(T is string) { // do so ...

  10. Android——电脑蓝屏重启后,studio无法认出Android环境 setup JDK(缓存!缓存!缓存)

    电脑蓝屏重启后,studio无法认出Android环境 setup JDK 问题重现:因为工作问题,需要用到模拟器,然后创建了模拟器后开启了漫长的等待之旅,两三分钟之后win8蓝屏,重启,再次打开,依 ...