四创新科技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. JAX-RS(REST Web Services)2.0 can not be installed: One or more constraints have not been satisfied

    eclipse出错: JAX-RS(REST Web Services)2.0 can not be installed: One or more constraints have not been ...

  2. 桶排序-py

    http://blog.chinaunix.net/uid-20775448-id-4222915.html 看了<啊哈算法>第一节,排序从小到大自己实现了. 从大到小,搜集了下资料.看了 ...

  3. Photoshop制作Android UI: 怎样将图片背景变为透明

    看烦了代码.今天玩玩PS吧.本人是PS小白.Android开发中不可避免的要做一些图片,但我发现居然没有相似的专门教程.真想拜个美工为师.还记得2012年去宁波实习时为了将图片缩小我还matlab写个 ...

  4. bazel-编译动态库

    demo2_2 使用baze编译动态库 demo2_2目录树 ├── app │ ├── BUILD │ ├── func.cpp │ └── func.hpp ├── README.md └── W ...

  5. Oracle PLSQL Demo - 10.For Loop遍历游标[FOR LOOP CURSOR]

    declare cursor cur_emp is select t.* from scott.emp t; begin for r_emp in cur_emp loop dbms_output.p ...

  6. Ribbon重试机制与Hystrix熔断机制的配置问题

    Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制 ...

  7. 采用Filter的方法解决HttpServletRequest.getParameter乱码的问题

    其实就是利用这么一个原理: byte[] bytes = str.getBytes("iso-8859-1"); String result = new String(bytes, ...

  8. HTML5的video虽然可用controls来展示控件

    HTML5的video虽然可用controls来展示控件,并进行控制播放暂停等,但是不同的浏览器显示的效果可能不一样,所以很多时候我们需要使用Dom来进行自定义的一些操作和控制.下面是一个小例子. 当 ...

  9. 观察者模式(Head First设计模式学习2)

    1.1观察者模式定义 在给出观察者模式的定义之前,我们先来看个报纸和杂志的订阅是怎么回事: 1.报社的业务就是出版报纸 2.向某家报社订阅报纸,只有新报纸出版,报社才会送给你,只要你是用户,他就会一直 ...

  10. DevExpress的DateEdit设置显示日期和时间

    1. 设置Mask.EditMask和DisplayFormat,EditFormat属性.设置为一致:'yyyy-MM-dd HH:mm';  //依照想要的显示格式设置此字符串. [csharp] ...