音频程序学习

news/2024/7/9 13:32:11

#pragma comment(lib,"winmm")

#include <mmsystem.h>

#include <mmreg.h>

waveOutOpen函数介绍2007-08-30 19:08(from MSDN)

这个函数打开一个给定的波形音频输出装置来进行回放。

(The waveOutOpen function opens the given waveform-audio output device for playback)

URL:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveoutunprepareheader.asp

原型如下:

MMRESULT waveOutOpen(

      LPHWAVEOUT      phwo,     

      UINT_PTR        uDeviceID,

      LPWAVEFORMATEX pwfx,     

      DWORD_PTR       dwCallback,

      DWORD_PTR       dwCallbackInstance,

      DWORD           fdwOpen   

);

参数介绍(paramters):

phwo

一个指向接收波形音频输出装置柄的缓冲器。用柄来区别(identify)装置当呼叫别的波形装置输出装置。如果fdwOpen被设定为WAVE_FORMAT_QUERY,那么这个参数可能为NULL 。

uDevideID

将要被打开的波形音频输出装置的ID ,它可以是一个装置ID,也可以是一个已经打开的波形音频输入装置柄,你可以用以下的值来货替:

值                               含义

WAVE_MAPPER   该函数选一个能够播放给定格式的波形音频输出装置

pwfx

一个指向区别将被送到装置的音频数据格式的WAVEFORMATEX结构的指针,你可以FREE这个结构当你一将其传到waveOutOpen 函数;

dwCallback

它指向一个特定的CALLBACK函数,事件柄,窗口柄,或一个将在波形音频回放时以便处理与回放进度相关的消息的期间呼叫的线程ID,如果无须CALLBACK函数,可以将其设为0 。更多请参看waveOutProc

dwCallbackInstance

传递到CALLBACK进程的用户实例数据。如果是窗口CALLBACK进程的话,该参数不用(设为0)

fwOpen

用来打开装置的标识(FLAGS),它们的定义如下:

值     含义

CALLBACK_EVENT    dwCallback 参数栏是事件柄

CALLBACK_FUNCTION   dwCallback 参数栏是CALLBACK过程地址

CALLBACK_NULL    默认的设置,即无CALLBACK进程

CALLBACK_THREAD    dwCallback 参数栏是线程ID

CALLBACK_WINDOW    dwCallback 参数栏是窗口柄

WAVE_ALLOWSYNC    如果该项被设置,一个同步的装置能被打开。如果在打开一个同步驱动时没有用该项,装置打开将会失败。

WAVE_FORMAT_DIRECT   如果设定该项,the ACM driver does not perform conversions on the audio data.

WAVE_FORMAT_QUERY   如果设定该项,waveOutOpen 询问装置来决定是否支持给定的格式,但装置实际上并没有被打开。

WAVE_MAPPED    该项被设定后uDeviceID参数表示

一个被声波映射装置映射的波形装置。

返回值:

成功后返回MMSYSERR_NOERROR ,否则返回以下值:

值     描述

MMSYSERR_ALLOCATED   表示资源已存在

MMSYSERR_BADDEVICEID   装置ID超出范围

MMSYSERR_NODRIVER   没有驱动

MMSYSERR_NOMEM    不能分配内存

WAVERR_BADFORMAT   企图打开一个不被支持的格式

WAVERR_SYNC    装置是可同步的,但waveOutOpen没用有WAVE_ALLOWSYNC呼叫。

注:

用waveOutGetNumDevs 函数测定在当前系统中输出装置的数目。如果uDeviceIC参数项是一个装置ID,它将会表示从0 到总的数目,WAAVE_MAPPER常量也可以用作装置ID。pwfc所指的结构能够扩展到包含某些数据格式的特殊信息,例如,对于PCM数据,一个额外的UNIT 类型用来表示取样的位数目。在这个情况下用PCMWAVEFORAMT结构。对于其它的格式,用WAVEFORMATEX结构来表示额外的数据长度。如果你选用的是一个窗口或线程来接收CALLBACK信息,如下的信息将会被送到窗口处理函数中,来表明波形音频输出进程:MM_WOM_OPEN ,MM_WOM_CLOSE ,和MM_WOM_DONE ,如果你选用的是一个函数来接收CALLBACK信息,如下的信息将会被传到函数中,来显示波形音频输出进程:WOM_OPEN ,WOM_CLOSE ,WOM_DONE.

  

要求:

   Windows NT/2000/XP: Included in Windows NT 3.1 and later.

   Windows 95/98/Me: Included in Windows 95 and later.

   Header: Declared in Mmsystem.h; include Windows.h.

   Library: Use Winmm.lib.

参见:

Waveform Audio, Waveform Functions, WAVEFORMATEX,

waveOutGetNumDevs, waveOutProc, PCMWAVEFORMAT, MM_WOM_OPEN,

MM_WOM_CLOSE, MM_WOM_DONE

 

///

原型如下:

MMRESULT waveOutWrite(

  HWAVEOUT hwo, 

  LPWAVEHDR pwh,

  UINT cbwh     

);

参数(s)如下:(parameters)

hwo

 波形音频输出装置的柄(handle).

pwh

 一个指向包含有数据块信息的WAVEHDR结构的指针。

cbwh

 这个就是WAVEHDR结构的大小(用sizeof (WAVEHDR) 就可以了)。

返回的值介绍:

 如果该函数成功完成则会返回MMSYSERR__NOERROR

 否则就返回以下的值:

 值                                                                 说明

 MMSYSERR_INVALHANLE                     给定的装置柄无效。

 MMSYSERR_NODRIVER                           没有装置驱动。

 MMSYSERR_NOMEM                               不可以分配内存(memory)

 WAVERR_UNPREPARED                           pwh参数项所指的数据块没有被prepared(该不会没有用 waveOutPrepareHeader这个函数吧!)

注:

 

 当输完缓冲器里的数据时,WAVEHDR 结构的dwFlags

成员就会被设定为DHDR_DONE,当缓冲器被传到waveOutWrite函数中之前必须用waveOutP

repareHeader函数prepare一下。除非装置被waveOutPause 函数暂停了之后,回放在第

一个数据块被发送到装置时开始了。

要求:

 Requirements

   Windows NT/2000/XP: Included in Windows NT 3.1 and later.

   Windows 95/98/Me: Included in Windows 95 and later.

   Header: Declared in Mmsystem.h; include Windows.h.

   Library: Use Winmm.lib.(用VC IDE的朋友不要忘记了在link里添加这个东东哦!)

参考:

 Waveform Audio, Waveform Functions, WAVEHDR, waveOutPrepareHeader,

waveOutPause


http://www.niftyadmin.cn/n/3566365.html

相关文章

xargs参数代换

xargs 的作用是产生命令需要的参数&#xff0c;主要是用于在命令结合管道的使用中给一些不支持管道的命令提供输入参数。例如&#xff1a;利用find找出~ 目录下由特殊权限的文件&#xff0c;并用ls命令列出文件列表&#xff1a;[whxlocalhost ~]$ find ~ -perm 7000 | ls-l tot…

CppUnit使用指南

测试驱动开发的原则&#xff1a; 先写测试代码&#xff0c;然后编写符合测试的代码。至少做到完成部分代码后&#xff0c;完成对应的测试代码&#xff1b; 测试代码不需要覆盖所有的细节&#xff0c;但应该对所有主要的功能和可能出错的地方有相应的测试用例…

BMP图像文件存储结构(1)

5.1.2 BMP图像文件存储结构&#xff08;1&#xff09; BMP文件存储结构的格式可以在Windows中的WINGDI.h文件中找到定义。 BMP文件总体上由4部分组成&#xff0c;分别是位图文件头、位图信息头、调色板和图像数据&#xff0c;如表5-1所示。 表5-1 BMP文件的组成结构位图文件头…

Jenkins 部署

转自 http://www.cnblogs.com/kevingrace/p/5651427.html Jenkins通过脚本任务触发&#xff0c;实现代码的自动化分发&#xff0c;是CI持续化集成环境中不可缺少的一个环节。下面对Jenkins环境的部署做一记录。--------------------------------------------------------------…

分组查询最大/最小值sql

经典题目&#xff1a;查询每个班级的最高分&#xff0c;查询每种日志的最晚记录 1.查询每个班级的最高分&#xff08;不考虑同一分数的&#xff09; SQL语句&#xff1a; SELECT id,name,calssid,MAX(score) FROM (SELECT * FROM t_zhb ORDER BY score desc) A GROUP BY calssi…

ELKStack快速安装

ELKStack简介 对于日志来说&#xff0c;最常见的需求就是收集、存储、查询、展示&#xff0c;开源社区正好有相对应的开源项目&#xff1a;logstash&#xff08;收集&#xff09;、elasticsearch&#xff08;存储搜索&#xff09;、kibana&#xff08;展示&#xff09;&…

CppUnit的使用步骤

使用cppunit简直是恶梦啊 参考了这两文&#xff1a; 配置和使用CPPUnit笔记http://dev.csdn.net/article/68/68259.shtm 便利的开发工具 CppUnit 快速使用指南http://www.devworkclub.com/bbs/FileView.php?id200408051345330000 研究出来的使用步骤&#xff1a; 1. …

BMP图像文件存储结构(2)

5.1.2 BMP图像文件存储结构&#xff08;2&#xff09; 3&#xff0e;彩色表/调色板&#xff08;color table&#xff09; 彩色表/调色板&#xff08;color table&#xff09;是单色、16色和256色图像文件所特有的&#xff0c;相对应的调色板大小是2、16和256&#xff0c;调色…