acmStreamOpen 函数 (msacm.h)
acmStreamOpen 函数将打开 ACM 转换流。 转换流用于将数据从一种指定的音频格式转换为另一种指定的音频格式。
语法
MMRESULT ACMAPI acmStreamOpen(
LPHACMSTREAM phas,
HACMDRIVER had,
LPWAVEFORMATEX pwfxSrc,
LPWAVEFORMATEX pwfxDst,
LPWAVEFILTER pwfltr,
DWORD_PTR dwCallback,
DWORD_PTR dwInstance,
DWORD fdwOpen
);
parameters
phas
指向句柄的指针,该句柄将接收可用于执行转换的新流句柄。 此句柄用于在调用其他 ACM 流转换函数时标识流。 如果指定了ACM_STREAMOPENF_QUERY标志,则此参数应为 NULL。
had
ACM 驱动程序的句柄。 如果指定了此句柄,它将标识要用于转换流的特定驱动程序。 如果此参数为 NULL,则会查询所有合适的已安装 ACM 驱动程序,直到找到匹配项。
pwfxSrc
指向一个 WAVEFORMATEX 结构的指针,该结构标识转换所需的源格式。
pwfxDst
指向用于标识转换所需目标格式的 WAVEFORMATEX 结构的指针。
pwfltr
指向 WAVEFILTER 结构的指针,该结构标识要对转换流执行的所需筛选操作。 如果不需要筛选操作,则此参数可以为 NULL。 如果指定了筛选器,则源 (pwfxSrc) 和目标 (pwfxDst) 格式必须相同。
dwCallback
指向回调函数、窗口句柄或事件的句柄的指针。 仅当使用 ACM_STREAMOPENF_ASYNC 标志打开转换流时,才会调用回调函数。 当转换流打开或关闭以及每个缓冲区转换后,回调函数会收到通知。 如果打开转换流时没有ACM_STREAMOPENF_ASYNC标志,则此参数应设置为零。
dwInstance
传递给 dwCallback 参数指定的回调函数的用户实例数据。 此参数不与窗口和事件回调一起使用。 如果打开转换流时没有ACM_STREAMOPENF_ASYNC标志,则此参数应设置为零。
fdwOpen
用于打开转换流的标志。 定义了以下值。
[ACMSTREAMHEADER] (./ns-msacm-acmstreamheader.md) ACMSTREAMHEADER_STATUSF_DONE 标志的结构。值 | 含义 |
---|---|
ACM_STREAMOPENF_ASYNC | |
ACM_STREAMOPENF_NONREALTIME | ACM 在转换数据时不会考虑时间约束。 默认情况下,驱动程序将尝试实时转换数据。 对于某些格式,指定此标志可能会改善音频质量或其他特征。 |
ACM_STREAMOPENF_QUERY | 将查询 ACM 以确定它是否支持给定的转换。 不会打开转换流,并且 不会在 phas 参数中返回任何句柄。 |
CALLBACK_EVENT | dwCallback 参数是事件的句柄。 |
CALLBACK_FUNCTION | dwCallback 参数是回调过程地址。 函数原型必须符合 acmStreamConvertCallback 原型。 |
CALLBACK_WINDOW | dwCallback 参数是窗口句柄。 |
返回值
如果成功,则返回零,否则返回错误。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
无法执行请求的操作。 |
|
至少有一个标志无效。 |
|
指定的句柄无效。 |
|
至少有一个参数无效。 |
|
系统无法分配资源。 |
注解
如果 ACM 驱动程序无法执行实时转换,并且未为 fdwOpen 参数指定ACM_STREAMOPENF_NONREALTIME标志,则打开操作将失败并返回ACMERR_NOTPOSSIBLE错误代码。 应用程序可以使用 ACM_STREAMOPENF_QUERY 标志来确定输入是否支持实时转换。
如果应用程序使用窗口接收回调信息,则会将MM_ACM_OPEN、MM_ACM_CLOSE和MM_ACM_DONE消息发送到 window 过程函数,以指示转换流的进度。 在本例中, ACMSTREAMHEADER 结构用于MM_ACM_DONE,但它不用于MM_ACM_OPEN和MM_ACM_CLOSE。
如果应用程序使用函数接收回调信息,则会将MM_ACM_OPEN、MM_ACM_CLOSE和MM_ACM_DONE消息发送到函数,以指示波形音频输出的进度。 回调函数必须驻留在动态链接库中, (DLL) 。
如果应用程序将事件用于回调通知,则会向事件发出信号以指示转换流的进度。 当打开流、转换每个缓冲区后以及关闭流时,事件将发出信号。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | msacm.h |
Library | Msacm32.lib |
DLL | Msacm32.dll |