RenderExclusiveEventDriven
Questa applicazione di esempio usa le API Audio principali per eseguire il rendering dei dati audio in un dispositivo di output specificato dall'utente. Questo esempio illustra il buffering guidato dagli eventi per un client di rendering in modalità esclusiva. Per un flusso in modalità esclusiva, il client condivide il buffer dell'endpoint con il dispositivo audio.
Questo argomento include le sezioni seguenti.
- Descrizione
- Requisiti
- Download dell'esempio
- Compilazione dell'esempio
- Esecuzione dell'esempio
- Argomenti correlati
Descrizione
In questo esempio vengono illustrate le funzionalità seguenti.
- API MMDevice per l'enumerazione e la selezione dei dispositivi multimediali.
- WASAPI per le operazioni di gestione dei flussi.
Requisiti
Prodotto | Versione |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Download dell'esempio
Questo esempio è disponibile nelle posizioni seguenti.
Ufficio | Percorso/URL |
---|---|
Windows SDK | \Programmi\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveEventDriven\... |
Compilazione dell'esempio
Per compilare l'esempio RenderExclusiveEventDriven, seguire questa procedura:
- Aprire la shell CMD per Windows SDK e passare alla directory di esempio RenderExclusiveEventDriven.
- Eseguire il comando
start WASAPIRenderExclusiveEventDriven.sln
nella directory RenderExclusiveEventDriven per aprire il progetto WASAPIRenderExclusiveEventDriven nella finestra di Visual Studio. - Nella finestra selezionare la configurazione della soluzione Debug o Rilascio , selezionare il menu Compila dalla barra dei menu e selezionare l'opzione Compila . Se Visual Studio non viene aperto dalla shell CMD per l'SDK, Visual Studio non avrà accesso all'ambiente di compilazione DELL'SDK. In tal caso, l'esempio non verrà compilato a meno che non si imposti in modo esplicito la variabile di ambiente MSSdk, che viene usata nel file di progetto, WASAPIRenderExclusiveEventDriven.vcproj.
Esecuzione dell'esempio
Se si compila correttamente l'applicazione demo, viene generato un file eseguibile WASAPIRenderExclusiveEventDriven.exe. Per eseguirlo, digitare WASAPIRenderExclusiveEventDriven
in una finestra di comando seguita da argomenti obbligatori o facoltativi. Nell'esempio seguente viene illustrato come eseguire l'esempio specificando la durata di riproduzione nel dispositivo multimediale predefinito.
WASAPIRenderExclusiveEventDriven.exe -d 20 -multimedia
La tabella seguente illustra gli argomenti.
Argomento | Descrizione |
---|---|
-? | Mostra la Guida. |
-h | Mostra la Guida. |
-f | Frequenza dell'onda seno in Hz. |
-l | Latenza di rendering audio in millisecondi. |
-d | Durata dell'onda seno in secondi. |
-m | Disabilita l'uso di MMCSS. |
-Console | Usare il dispositivo console predefinito. |
-Comunicazioni | Usare il dispositivo di comunicazione predefinito. |
-Multimediale | Usa il dispositivo multimediale predefinito. |
-Endpoint | Usare l'identificatore dell'endpoint specificato nel valore switch. |
Se l'applicazione viene eseguita senza argomenti, enumera i dispositivi disponibili e chiede all'utente di selezionare un dispositivo per la sessione di rendering. Dopo che l'utente specifica un dispositivo, l'applicazione esegue il rendering di un'onda seno a 440 Hz per 10 secondi. Questi valori possono essere modificati specificando i valori dell'opzione -f e -d.
L'esempio RenderExclusiveEventDriven illustra il buffer guidato dagli eventi. L'esempio illustra come:
- Creare un'istanza di un client audio, configurarla per l'esecuzione in modalità esclusiva e abilitare il buffering guidato dagli eventi impostando il flag AUDCLNT_STREAMFLAGS_EVENTCALLBACK nella chiamata a IAudioClient::Initialize.
- Associare il client agli esempi pronti per il rendering fornendo un handle di evento al sistema chiamando il metodo IAudioClient::SetEventHandle.
- Creare un thread di rendering per elaborare esempi dal motore audio.
- Allineare correttamente i buffer su un limite di 128 byte prima di inviarli al dispositivo. Questa operazione viene eseguita regolando la periodicità del motore.
- Controllare il formato di combinazione dell'endpoint del dispositivo per determinare se è possibile eseguire il rendering degli esempi. Se il dispositivo non supporta il formato di combinazione, i dati vengono convertiti in PCM.
- Gestire il cambio di flusso.
Dopo l'avvio della sessione di rendering e l'avvio del flusso, il motore audio segnala l'handle dell'evento fornito per notificare al client ogni volta che un buffer diventa pronto per l'elaborazione del client. I dati audio possono essere elaborati anche in un ciclo basato su timer. Questa modalità è illustrata nell'esempio RenderExclusiveTimerDriven .
Per altre informazioni sul rendering di un flusso, vedere Rendering di un flusso.
Argomenti correlati