四创新科技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. 基于FPGA的线阵CCD实时图像采集系统

    基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处理 ...

  2. Maven学习之(二)Maven插件创建项目

    现在这里是已经在eclipse上成功的安装了Maven的插件后的操作,简单的创建一个项目, 同时实现Maven功能. 前提条件: 1.JDK 2.maven安装好 3.eclipse上maven插件安 ...

  3. C++ - 动态申请数组空间

    // 用指针p指向由new动态分配的长度为length*sizeof(int)的内存空间. int * p = new int[length];

  4. plot sin 04 坐标轴居中

    plot sin 04 坐标轴居中 code #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import matpl ...

  5. 【WPF】ListBox使用DataTemplate 以及默认选中第一项Item

    ListBox中DataTemplate的用法如下 . <ListBox x:Name="areaLB" ItemsSource="{Binding AreaNum ...

  6. C语言 · 用宏求球的体积

    算法提高 7-1用宏求球的体积   时间限制:1.0s   内存限制:256.0MB      问题描述 使用宏实现计算球体体积的功能.用户输入半径,系统输出体积.不能使用函数,pi=3.141592 ...

  7. buildroot 搭建ftpd 服务器记录

    vsftpd 搭建失败,应该是buildroot 文件系统还有操作没有理解透,还需要不断的学习. 所以用轻量级的 ftpd 进行替代, 步骤如下: // ---> make busybox-me ...

  8. [4G]常用AT指令

    The GPRS communication module is controlled by terminal (e.g. H50) firmware. The actions are mapped ...

  9. JavaScript 深入理解作用域链

    第一步. 定义后:每个已定义函数,都有一个内在属性[scope],其对应一个对象的列表,列表中的对象仅能内部访问. 例如:建立一个全局函数A,那么A的[Scope]内部属性中只包含一个全局对象(Glo ...

  10. github搭建个人博客----------绑定域名访问

    首先你得有一个Github账号,没有的话去github.com注册一个账号,然后到达仓库信息填写界面: 创建仓库,如下图:(仓库名要以自己的github名作为前缀,后面的夹 .github.io) 后 ...