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 |
---|---|
|
Impossibile eseguire l'operazione richiesta. |
|
Almeno un flag non è valido. |
|
L'handle specificato non è valido. |
|
Almeno un parametro non è valido. |
|
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 |