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 基础知识梳理( ...
随机推荐
- Hadoop本地库介绍及相关问题解决方法汇总
1.hadoop本地库的作用是什么?2.哪两个压缩编码器必须使用hadoop本地库才能运行?3.hadoop的使用方法?4.hadoop本地库与系统版本不一致会引起什么错误?5.$ export HA ...
- [QT] 小知识集锦
qt 中关于 QWidget 的背景颜色和背景图片的设置 首先设置autoFillBackground 属性为真 然后定义一个QPalette 对象 设置QPalette 对象的背景属性(颜色或图片) ...
- [na]锐起无盘机并发部署多台windows
小时候很好奇这个技术,也并无卵,只是为了遂儿时愿, 用到锐起无盘部署,支持win7哦: 视频教程: 拓展:网吧电脑为什么没有硬盘? 网吧电脑没有硬盘是怎么运行的? 所需软件: https://yunp ...
- 【Android】第18章 位置服务和手机定位—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-03-04 一.简介 目前,基于位置的服务发展迅速,已涉及到商务.医疗.定位.追踪.敏感区域警告.工作和生活等各个方面.定位服务融合了G ...
- 每日英语:Some Chinese Students Stay Home to Get Ahead
Li Shan's oldest son was the perfect candidate to join the throngs of Chinese students studying abro ...
- solr进阶九:solr对数字和单个字符的搜索
solr中配有分词器,但分词器里面有大写转换为小写的过滤器时,数字就会被过滤.比如123中国ABC.123就会被过滤掉了,所以才查1|12|123都会失败. <Solr 数字字符不能搜索的一个问 ...
- jQuery提供的一些判断数据类型的方法总结
// jQuery提供一系列工具方法,用来判断数据类型,以弥补JavaScript原生的typeof运算符的不足. // 以下方法对参数进行判断,返回一个布尔值. // jQuery.isArray( ...
- webRTC开启摄像头
配置htts之后就可以开启webRTC了. <!DOCTYPE html> <html> <head> <title>OpenCamera</ti ...
- 10分钟-jQuery过滤选择器
1.:first过滤选择器 本次我们介绍过滤选择器,该类型的选择器是依据某过滤规则进行元素的匹配.书写时以":"号开头,通经常使用于查找集合元素中的某一位置的单个元素. 在jQue ...
- 【C#】BackgroundWorker类传递参数
要传递多个不同类型的参数: private void Test(){ int a = 123; string b = "456"; bool c = true; Backgroun ...