Condividi tramite


funzione acmStreamOpen (msacm.h)

La funzione acmStreamOpen apre un flusso di conversione ACM. I flussi di conversione vengono usati per convertire i dati da un formato audio specificato a un altro.

Sintassi

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

Parametri

phas

Puntatore a un handle che riceverà il nuovo handle di flusso che può essere usato per eseguire conversioni. Questo handle viene usato per identificare il flusso nelle chiamate ad altre funzioni di conversione del flusso ACM. Se viene specificato il flag ACM_STREAMOPENF_QUERY, questo parametro deve essere NULL.

had

Gestire in un driver ACM. Se questo handle viene specificato, identifica un driver specifico da usare per un flusso di conversione. Se questo parametro è NULL, tutti i driver ACM installati appropriati vengono sottoposti a query fino a quando non viene trovata una corrispondenza.

pwfxSrc

Puntatore a una struttura WAVEFORMATEX che identifica il formato di origine desiderato per la conversione.

pwfxDst

Puntatore a una struttura WAVEFORMATEX che identifica il formato di destinazione desiderato per la conversione.

pwfltr

Puntatore a una struttura WAVEFILTER che identifica l'operazione di filtro desiderata da eseguire sul flusso di conversione. Se non si desidera eseguire alcuna operazione di filtro, questo parametro può essere NULL. Se viene specificato un filtro, i formati di origine (pwfxSrc) e di destinazione (pwfxDst) devono essere uguali.

dwCallback

Puntatore a una funzione di callback, a un handle di una finestra o a un handle di un evento. Verrà chiamata una funzione di callback solo se il flusso di conversione viene aperto con il flag di ACM_STREAMOPENF_ASYNC. Una funzione di callback riceve una notifica quando il flusso di conversione viene aperto o chiuso e dopo la conversione di ogni buffer. Se il flusso di conversione viene aperto senza il flag ACM_STREAMOPENF_ASYNC, questo parametro deve essere impostato su zero.

dwInstance

Dati dell'istanza utente passati alla funzione di callback specificata dal parametro dwCallback . Questo parametro non viene usato con callback di finestra ed eventi. Se il flusso di conversione viene aperto senza il flag ACM_STREAMOPENF_ASYNC, questo parametro deve essere impostato su zero.

fdwOpen

Flag per l'apertura del flusso di conversione. Vengono definiti i valori seguenti.

[ACMSTREAMHEADER] Struttura (./ns-msacm-acmstreamheader.md) per il flag ACMSTREAMHEADER_STATUSF_DONE.
Valore Significato
ACM_STREAMOPENF_ASYNC
ACM_STREAMOPENF_NONREALTIME ACM non considererà vincoli temporali durante la conversione dei dati. Per impostazione predefinita, il driver tenterà di convertire i dati in tempo reale. Per alcuni formati, la specifica di questo flag potrebbe migliorare la qualità audio o altre caratteristiche.
ACM_STREAMOPENF_QUERY ACM verrà eseguita una query per determinare se supporta la conversione specificata. Un flusso di conversione non verrà aperto e non verrà restituito alcun handle nel parametro phas .
CALLBACK_EVENT Il parametro dwCallback è un handle di un evento.
CALLBACK_FUNCTION Il parametro dwCallback è un indirizzo di routine di callback. Il prototipo di funzione deve essere conforme al prototipo acmStreamConvertCallback .
CALLBACK_WINDOW Il parametro dwCallback è un handle di finestra.

Valore restituito

Restituisce zero se l'operazione ha esito positivo o un errore in caso contrario. I valori di errore possibili includono quanto segue.

Codice restituito Descrizione
ACMERR_NOTPOSSIBLE
Impossibile eseguire l'operazione richiesta.
MMSYSERR_INVALFLAG
Almeno un flag non è valido.
MMSYSERR_INVALHANDLE
L'handle specificato non è valido.
MMSYSERR_INVALPARAM
Almeno un parametro non è valido.
MMSYSERR_NOMEM
Il sistema non è in grado di allocare risorse.

Commenti

Se un driver ACM non può eseguire conversioni in tempo reale e il flag di ACM_STREAMOPENF_NONREALTIME non è specificato per il parametro fdwOpen , l'operazione di apertura avrà esito negativo restituendo un codice di errore ACMERR_NOTPOSSIBLE. Un'applicazione può usare il flag ACM_STREAMOPENF_QUERY per determinare se le conversioni in tempo reale sono supportate per l'input.

Se un'applicazione usa una finestra per ricevere informazioni di callback, il MM_ACM_OPEN, MM_ACM_CLOSE e MM_ACM_DONE messaggi vengono inviati alla funzione della routine finestra per indicare lo stato di avanzamento del flusso di conversione. In questo caso, la struttura ACMSTREAMHEADER per MM_ACM_DONE, ma non viene usata per MM_ACM_OPEN e MM_ACM_CLOSE.

Se un'applicazione usa una funzione per ricevere informazioni di callback, i messaggi MM_ACM_OPEN, MM_ACM_CLOSE e MM_ACM_DONE vengono inviati alla funzione per indicare lo stato di avanzamento dell'output audio delle forme d'onda. La funzione di callback deve risiedere in una libreria a collegamento dinamico (DLL).

Se un'applicazione usa un evento per la notifica di callback, l'evento viene segnalato per indicare lo stato di avanzamento del flusso di conversione. L'evento verrà segnalato quando viene aperto un flusso, dopo la conversione di ogni buffer e quando il flusso viene chiuso.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione msacm.h
Libreria Msacm32.lib
DLL Msacm32.dll

Vedi anche

Funzioni di compressione audio

Gestione compressione audio