acmStreamConvert 函数 (msacm.h)

acmStreamConvert 函数请求 ACM 对指定的转换流执行转换。 转换可以是同步的,也可以是异步的,具体取决于流的打开方式。

语法

MMRESULT ACMAPI acmStreamConvert(
  HACMSTREAM        has,
  LPACMSTREAMHEADER pash,
  DWORD             fdwConvert
);

parameters

has

打开的转换流的句柄。

pash

指向描述转换的源缓冲区和目标缓冲区的流标头的指针。 以前必须使用 acmStreamPrepareHeader 函数准备此标头。

fdwConvert

用于执行转换的标志。 定义了以下值。

含义
ACM_STREAMCONVERTF_BLOCKALIGN 只会转换整型块数。 转换的数据将在块对齐的边界上结束。 应用程序应将此标志用于流上的所有转换,直到没有足够的源数据转换为块对齐目标。 在这种情况下,应指定最后一个转换而不指定此标志。
ACM_STREAMCONVERTF_END ACM 转换流应开始返回挂起的实例数据。 例如,如果转换流保存实例数据(例如回显筛选器操作的结束),则此标志将导致流开始返回带有可选源数据的剩余数据。 可以使用 ACM_STREAMCONVERTF_START 标志指定此标志。
ACM_STREAMCONVERTF_START ACM 转换流应重新初始化其实例数据。 例如,如果转换流保存实例数据(如增量或预测器信息),则此标志会将流还原为起始默认值。 可以使用 ACM_STREAMCONVERTF_END 标志指定此标志。

返回值

如果成功,则返回零,否则返回错误。 可能的错误值包括以下内容。

返回代码 说明
ACMERR_BUSY
pash 中指定的流标头当前正在使用中,不能重复使用。
ACMERR_UNPREPARED
pash 中指定的流标头当前未由 acmStreamPrepareHeader 函数准备。
MMSYSERR_INVALFLAG
至少有一个标志无效。
MMSYSERR_INVALHANDLE
指定的句柄无效。
MMSYSERR_INVALPARAM
至少有一个参数无效。

注解

必须先使用 acmStreamPrepareHeader 函数准备源缓冲区和目标缓冲区,然后才能将源缓冲区和目标缓冲区传递给 acmStreamConvert

如果 ACM 或驱动程序成功将异步转换请求排队,并且稍后确定无法进行转换, 则 ACMSTREAMHEADER 结构将发回到应用程序的回调函数,并将 cbDstLengthUsed 成员设置为零。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 msacm.h
Library Msacm32.lib
DLL Msacm32.dll

另请参阅

音频压缩函数

音频压缩管理器