Поделиться через


Функция 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
);

Параметры

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 является дескриптором окна.

Возвращаемое значение

Возвращает ноль в случае успешного выполнения или ошибку в противном случае. Возможные значения ошибок:

Код возврата Описание
ACMERR_NOTPOSSIBLE
Запрошенная операция не может быть выполнена.
MMSYSERR_INVALFLAG
По крайней мере один флаг недопустим.
MMSYSERR_INVALHANDLE
Указанный дескриптор недопустим.
MMSYSERR_INVALPARAM
По крайней мере один параметр недопустим.
MMSYSERR_NOMEM
Системе не удается выделить ресурсы.

Комментарии

Если драйвер ACM не может выполнять преобразования в режиме реального времени и флаг ACM_STREAMOPENF_NONREALTIME не указан для параметра fdwOpen , операция открытия не вернет код ошибки ACMERR_NOTPOSSIBLE. Приложение может использовать флаг ACM_STREAMOPENF_QUERY, чтобы определить, поддерживаются ли преобразования в режиме реального времени для входных данных.

Если приложение использует окно для получения сведений о обратном вызове, MM_ACM_OPEN, MM_ACM_CLOSE и MM_ACM_DONE сообщения отправляются в функцию процедуры окна, чтобы указать ход выполнения потока преобразования. В этом случае структура ACMSTREAMHEADER для MM_ACM_DONE, но она не используется для MM_ACM_OPEN и MM_ACM_CLOSE.

Если приложение использует функцию для получения сведений о обратном вызове, в функцию отправляются сообщения MM_ACM_OPEN, MM_ACM_CLOSE и MM_ACM_DONE для указания хода выполнения вывода waveform-audio. Функция обратного вызова должна находиться в библиотеке динамической компоновки (DLL).

Если приложение использует событие для уведомления обратного вызова, событие получает сигнал, указывающий на ход выполнения потока преобразования. Событие будет сигнализировать при открытии потока, после преобразования каждого буфера и при закрытии потока.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header msacm.h
Библиотека Msacm32.lib
DLL Msacm32.dll

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

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

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