Функция acmStreamConvert (msacm.h)

Функция acmStreamConvert запрашивает ACM для выполнения преобразования в указанном потоке преобразования. Преобразование может быть синхронным или асинхронным в зависимости от способа открытия потока.

Синтаксис

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

Параметры

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
Header msacm.h
Библиотека Msacm32.lib
DLL Msacm32.dll

См. также раздел

Функции сжатия звука

Диспетчер сжатия аудио