Condividi tramite


RenderExclusiveTimerDriven

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 basato su timer 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

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\RenderExclusiveTimerDriven\...

 

Compilazione dell'esempio

Per compilare l'esempio RenderExclusiveTimerDriven, seguire questa procedura:

  1. Aprire la shell CMD per Windows SDK e passare alla directory di esempio RenderExclusiveTimerDriven.
  2. Eseguire il comando start WASAPIRenderExclusiveTimerDriven.sln nella directory RenderExclusiveTimerDriven per aprire il progetto WASAPIRenderExclusiveTimerDriven nella finestra di Visual Studio.
  3. 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, WASAPIRenderExclusiveTimerDriven.vcproj.

Visualizzare i file di esempio

Se si compila correttamente l'applicazione demo, viene generato un file eseguibile WASAPIRenderExclusiveTimerDriven.exe. Per eseguirlo, digitare WASAPIRenderExclusiveTimerDriven in una finestra di comando seguita da argomenti obbligatori o facoltativi. L'esempio seguente illustra come eseguire l'esempio specificando la durata di riproduzione nel dispositivo console predefinito.

WASAPIRenderExclusiveTimerDriven.exe -d 20 -console

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.

RenderExclusiveTimerDriven illustra il buffering basato su timer. In questa modalità, il client deve attendere un periodo di tempo (metà della latenza, specificata dal valore dell'opzione -d, in millisecondi). Quando il client si riattiva, a metà del periodo di elaborazione, esegue il pull del set successivo di campioni dal motore. Prima che ogni elaborazione passi il ciclo di buffering, il client deve individuare la quantità di dati di cui eseguire il rendering in modo che i dati non eseguano il sovraccarico del buffer.

I dati audio da riprodurre nel dispositivo specificato possono essere elaborati abilitando il buffer guidato dagli eventi. Questa modalità è illustrata nell'esempio RenderExclusiveTimerDriven.

Per altre informazioni sul rendering di un flusso, vedere Rendering di un flusso.

Esempi di SDK che usano le API audio principali