登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

音频程序学习  

2010-07-21 14:09:52|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#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

  评论这张
 
阅读(1261)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018