摘要:
音频终端设备(Audio Endpoint Devices)endpoint device指的是应用程序的数据通道上起始或终止的硬件设备,如扬声器,耳机,话筒等;沿着数据通道可能穿越一定数目的硬件和软件组件,但它们往往是对用户不可见,用户更可能认为他们直接操作端点设备,而不是在端点设备插入的设配器等;下图将adapt device和endpoint device区分开来:以下是端点设备的示例: 音箱 麦克风 辅助输入设备以下是适配器设备的示例: 波输出设备(包括数字 - 模拟转换器) 输出控制装置(包含音量和静音控制) 波输入装置(包括模拟 - 数字转换器) 输入控制设备(包括音... 阅读全文
摘要:
用户模式音频组件在windows vista中,core audio apis充当用户模式音频子系统的基础,core audio apis作为用户模式系统组件的一个thin layer,它用来将用户模型客户端和内核模式音频驱动以及音频硬件区分隔开;高级音频接口,像DirectSound和 windows 多媒体函数(waveOutXxx waveInXxx),都是通过core audio apis进入音频设备,见下图:core audio apis使用户对音频终端设备(audio endpoint device)保持友好,它用抽象概念用来代表一个用户可以直接操纵的物理设备,比如扬声器,头戴耳机 阅读全文
摘要:
Core Audio APIscore audio apis是vista之后引入的,不使用与之前的windows版本;core audio apis提供访问endpoint devices,比如耳机、麦克风等,它是higher-level audio APIs(比如directsound, waveXXX 函数)的基础。(一)Windows Core Audio APIs简介1.功能:(1)低延时,几乎无故障的音频流。(2)提高可靠性 ( 很多音频函数从核心态移到了用户态 )(3)提高了安全性 (在安全的,低优先级别的线程处理被保护的音频内容)(4)分配了特定的系统级别的规则 (console 阅读全文
摘要:
(二)录音流程WaveformAPIs,流程如下:a.打开录音设备waveInOpen;b.准备wave数据头waveInPrepareHeader;c.准备数据块waveInAddBuffer;d.开始录音waveInStart;e.停止录音(waveInStop);f.关闭录音设备(waveInClose);g.当开始录音后当buffer已满时,将收到MM_WIM_DATA消息,处理该消息可以保存已录好数据.注意:1.waveInPerpareHeader,此函数功能就是定位缓冲区的数据区地址和数据大小,以便为系统所用;2.当通过 waveInAddBuffer送入的缓冲区被录满后,Win 阅读全文
摘要:
(一)概述1.依赖条件:winmm.lib2.步骤:(1)打开设备 ----- waveInOpen(打开一个音频输入设备);(2)开始录音 ----- waveInStart开始录音;(3)关闭设备 ----- waveInClose关闭录音(调用一下waveInReset,这样可以清掉尚在等待录音的缓冲区);3.常用API:(1)waveInOpen:打开一个音频输入设备;(2)waveInPrepareHeader:为一个即将在waveInAddBuffer中调用的输入缓冲区准备头部;(3)waveInAddBuffer:添加一个输入用的数据缓冲区;(4)waveInStart:开始录音 阅读全文
摘要:
(三)音 频 数 据 的 压 缩下 面 说 明 使 用 CODEC 实 现 音 频 压 缩 的 过 程;假 设 源 信 号 为8K 采 样、16bits PCM 编 码、 单 声 道、 长 度 为1 秒 的 音 频 信 号。 驱 动 程 序 采 用Windows 95 自 带 的TrueSpeech 音 频CODEC, 它 能 实 现 大 约10:1 的 压 缩。 在 此 例 中,TrueSpeech CODEC 支 持 从 源 音 频 格 式 到 目 标 格 式 的 转 换, 而 在 实 际 应 用 中, 可 能 某 种CODEC 不 支 持 直 接 将 源 音 频 格 式 转 换 成 目 阅读全文
摘要:
(二)获取CODECs 的 信 息ACM 的API 函 数 定 义 在 头 文 件msacm.h 中, 除 此 之 外, 对ACM 编 程 还 必 须 包 含 头 文 件mmsystem.h,mmreg.h, 这 两 个 头 文 件 定 义 了 多 媒 体 编 程 中 最 基 本 的 常 量 和 数 据 结 构;1.ACM版本信息:为 了 避 免 有 些 高 版 本ACM 才 提 供 的 函 数 和 功 能 在 较 低 版 本 的ACM 中 上 不 可 用, 程 序 中 应 调 用acmGetVersion 函 数 查 询 用 户 机 器 中ACM 的 版 本 信 息;2.查看系统CODECs 阅读全文
摘要:
(一)概述音频数据一般都具有较高的采样率,经过压缩的原始数据才具有实用价值,否则不仅要占用大量存储空间而且在播放或进行网络传输时效率也是非常低下的,所以音频数字压缩编码在多媒体应用中有着广泛而又重要的用途。音频的编码压缩方式有许多种,这些不同的压缩方式有着不同的数据压缩比和还原音质,具体的编码格式和算法更是大相径庭。多数协议都比较复杂,普通程序难以实现其加、解压算法,而为多媒体提供了较强支持的Windows 98操作系统引入了ACM和VCM技术,用来管理系统中存在的所有的音频和视频编、解码器(Coder-Decoder,即CODECs,用来实现音频、视频数据编解码的驱动程序)。可以通过它们提供 阅读全文
摘要:
(六)读取波形文件的实例1.打开文件后,可通过HMMO句柄获得文件中的波形部份:MMCKINFO mmckinfo;mmckinfo.fccType = mmioFOURCC('W','A','V','E');mmioDescend(h, &mmckinfo, NULL, MMIO_FINDRIFF);经上述调用,mmioDescend函数在句柄h所指向的文件中搜索构造类型为"WAVE"的块的信息,MMCKINFO结构用来接受波形部份信息,该函数调用时会通过检查MMCKINFO结构的fccType的数据 阅读全文
摘要:
(五)读取wav的实例跟据WAVE文件的格式,实现了读取双声道立体声数据的例子如下:BYTE * GetData(Cstring *pString)//获取声音文件数据的函数,pString参数指向要打开的声音文件;{ if (pString==NULL) return NULL; HMMIO file1;//定义HMMIO文件句柄; file1=mmioOpen((LPSTR)pString,NULL,MMIO_READWRITE); //以读写模式打开所给的WAVE文件; if(file1==NULL) { MessageBox("WAVE文件打开失败!"); Retu 阅读全文