Share via


Função acmStreamOpen (msacm.h)

A função acmStreamOpen abre um fluxo de conversão do ACM. Os fluxos de conversão são usados para converter dados de um formato de áudio especificado em outro.

Sintaxe

MMRESULT ACMAPI acmStreamOpen(
  LPHACMSTREAM   phas,
  HACMDRIVER     had,
  LPWAVEFORMATEX pwfxSrc,
  LPWAVEFORMATEX pwfxDst,
  LPWAVEFILTER   pwfltr,
  DWORD_PTR      dwCallback,
  DWORD_PTR      dwInstance,
  DWORD          fdwOpen
);

Parâmetros

phas

Ponteiro para um identificador que receberá o novo identificador de fluxo que pode ser usado para executar conversões. Esse identificador é usado para identificar o fluxo em chamadas para outras funções de conversão de fluxo do ACM. Se o sinalizador ACM_STREAMOPENF_QUERY for especificado, esse parâmetro deverá ser NULL.

had

Identificador para um driver do ACM. Se esse identificador for especificado, ele identificará um driver específico a ser usado para um fluxo de conversão. Se esse parâmetro for NULL, todos os drivers ACM instalados adequados serão consultados até que uma correspondência seja encontrada.

pwfxSrc

Ponteiro para uma estrutura WAVEFORMATEX que identifica o formato de origem desejado para a conversão.

pwfxDst

Ponteiro para uma estrutura WAVEFORMATEX que identifica o formato de destino desejado para a conversão.

pwfltr

Ponteiro para uma estrutura WAVEFILTER que identifica a operação de filtragem desejada a ser executada no fluxo de conversão. Se nenhuma operação de filtragem for desejada, esse parâmetro poderá ser NULL. Se um filtro for especificado, os formatos de origem (pwfxSrc) e destino (pwfxDst) deverão ser os mesmos.

dwCallback

Ponteiro para uma função de retorno de chamada, um identificador de uma janela ou um identificador de um evento. Uma função de retorno de chamada será chamada somente se o fluxo de conversão for aberto com o sinalizador ACM_STREAMOPENF_ASYNC. Uma função de retorno de chamada é notificada quando o fluxo de conversão é aberto ou fechado e depois que cada buffer é convertido. Se o fluxo de conversão for aberto sem o sinalizador ACM_STREAMOPENF_ASYNC, esse parâmetro deverá ser definido como zero.

dwInstance

Dados de instância de usuário passados para a função de retorno de chamada especificada pelo parâmetro dwCallback . Esse parâmetro não é usado com retornos de chamada de janela e evento. Se o fluxo de conversão for aberto sem o sinalizador ACM_STREAMOPENF_ASYNC, esse parâmetro deverá ser definido como zero.

fdwOpen

Sinalizadores para abrir o fluxo de conversão. Os valores a seguir são definidos.

[ACMSTREAMHEADER] Estrutura (./ns-msacm-acmstreamheader.md) para o sinalizador ACMSTREAMHEADER_STATUSF_DONE.
Valor Significado
ACM_STREAMOPENF_ASYNC
ACM_STREAMOPENF_NONREALTIME O ACM não considerará restrições de tempo ao converter os dados. Por padrão, o driver tentará converter os dados em tempo real. Para alguns formatos, especificar esse sinalizador pode melhorar a qualidade do áudio ou outras características.
ACM_STREAMOPENF_QUERY O ACM será consultado para determinar se ele dá suporte à conversão fornecida. Um fluxo de conversão não será aberto e nenhum identificador será retornado no parâmetro phas .
CALLBACK_EVENT O parâmetro dwCallback é um identificador de um evento.
CALLBACK_FUNCTION O parâmetro dwCallback é um endereço de procedimento de retorno de chamada. O protótipo de função deve estar em conformidade com o protótipo acmStreamConvertCallback .
CALLBACK_WINDOW O parâmetro dwCallback é um identificador de janela.

Valor retornado

Retornará zero se tiver êxito ou um erro, caso contrário. Os valores de erro possíveis incluem o seguinte.

Código de retorno Descrição
ACMERR_NOTPOSSIBLE
A operação solicitada não pode ser executada.
MMSYSERR_INVALFLAG
Pelo menos um sinalizador é inválido.
MMSYSERR_INVALHANDLE
O identificador especificado é inválido.
MMSYSERR_INVALPARAM
Pelo menos um parâmetro é inválido.
MMSYSERR_NOMEM
O sistema não pode alocar recursos.

Comentários

Se um driver do ACM não puder executar conversões em tempo real e o sinalizador ACM_STREAMOPENF_NONREALTIME não for especificado para o parâmetro fdwOpen , a operação aberta falhará ao retornar um código de erro ACMERR_NOTPOSSIBLE. Um aplicativo pode usar o sinalizador ACM_STREAMOPENF_QUERY para determinar se há suporte para conversões em tempo real para entrada.

Se um aplicativo usar uma janela para receber informações de retorno de chamada, as mensagens MM_ACM_OPEN, MM_ACM_CLOSE e MM_ACM_DONE serão enviadas para a função de procedimento de janela para indicar o progresso do fluxo de conversão. Nesse caso, a estrutura ACMSTREAMHEADER para MM_ACM_DONE, mas não é usada para MM_ACM_OPEN e MM_ACM_CLOSE.

Se um aplicativo usar uma função para receber informações de retorno de chamada, as mensagens MM_ACM_OPEN, MM_ACM_CLOSE e MM_ACM_DONE serão enviadas para a função para indicar o progresso da saída de áudio de forma de onda. A função de retorno de chamada deve residir em uma DLL (biblioteca de vínculo dinâmico).

Se um aplicativo usar um evento para notificação de retorno de chamada, o evento será sinalizado para indicar o progresso do fluxo de conversão. O evento será sinalizado quando um fluxo for aberto, depois que cada buffer for convertido e quando o fluxo for fechado.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho msacm.h
Biblioteca Msacm32.lib
DLL Msacm32.dll

Confira também

Funções de compactação de áudio

Gerenciador de Compactação de Áudio