Routing di flusso

Il routing di flusso è la possibilità di un'applicazione multimediale di passare flussi tra dispositivi con interruzioni minime alla riproduzione o alla sessione di acquisizione.

Un computer può avere più dispositivi di rendering e acquisizione. Il sistema elenca questi dispositivi nel pannello di controllo Suoni . Da questo elenco, un utente può impostare un dispositivo come dispositivo predefinito per ogni ruolo: riproduzione, registrazione o quattro ruoli di comunicazione (rendering della console, acquisizione della console, rendering della comunicazione o acquisizione delle comunicazioni). L'elenco dei dispositivi può essere modificato in modo dinamico perché alcuni di questi dispositivi possono essere disponibili temporaneamente, ad esempio un visore VR USB. Quando sono disponibili più dispositivi, l'utente può modificare l'impostazione predefinita in un dispositivo diverso. L'utente può anche modificare il formato di un dispositivo (frequenza di campionamento, bit per campione e così via) nella scheda Avanzate per le proprietà del dispositivo.

Si consideri uno scenario in cui un utente seleziona Altoparlanti come dispositivo predefinito per il rendering dei flussi audio. L'utente connette quindi un visore VR USB, seleziona il visore VR come nuovo dispositivo predefinito e modifica la frequenza di campionamento del dispositivo da 44,1 kHz a 48 kHz. L'utente vuole riprodurre il flusso audio sul visore VR alla nuova frequenza di campionamento con un'interruzione minima della sessione di streaming.

In questo scenario, esistono due casi che l'applicazione multimediale deve gestire:

  • Il flusso deve essere trasferito al nuovo dispositivo predefinito con interruzioni minime per la riproduzione.
  • Il nuovo dispositivo deve riprendere la riproduzione nel nuovo formato, ovvero l'utente può modificare più della frequenza di campionamento.

In Windows Vista, per supportare questo scenario, l'applicazione multimediale doveva fornire l'implementazione per il routing del flusso. L'applicazione è stata responsabile della terminazione dei flussi esistenti e del riavvio dei flussi nel nuovo dispositivo. Se l'utente ha modificato il dispositivo predefinito o il relativo formato di combinazione è stato modificato, tutte le sessioni associate sono state chiuse e l'applicazione doveva gestire il ripristino.

In Windows 7 un'applicazione può trasferire facilmente un flusso da un dispositivo predefinito esistente a un nuovo endpoint audio predefinito. I set di API audio di alto livello, ad esempio Media Foundation, DirectSound e WAVE, implementano la funzionalità di routing del flusso. Le applicazioni multimediali che usano questi set di API per riprodurre o acquisire un flusso dal dispositivo predefinito usano l'implementazione predefinita e non dovranno modificare l'applicazione. Tuttavia, se l'applicazione multimediale usa direttamente MMDeviceAPI o WASAPI, l'applicazione deve fornire l'implementazione del routing del flusso.

Nota

MMDeviceAPI e WASAPI sono componenti dell'API audio di base che un'applicazione può usare per eseguire il rendering o acquisire un flusso in un dispositivo. MMDeviceAPI individua il nuovo dispositivo endpoint audio e WASAPI gestisce il flusso di dati audio tra un'applicazione multimediale e il dispositivo endpoint audio.

 

Per implementare la funzionalità di routing del flusso, l'applicazione deve restare in ascolto delle notifiche inviate da MMDeviceAPI e WASAPI quando:

  • Il dispositivo predefinito viene modificato dall'utente.
  • Il dispositivo predefinito esistente viene rimosso e viene aggiunto un nuovo dispositivo predefinito.
  • Il formato del dispositivo viene modificato.

Gestendo queste notifiche, un'applicazione può eseguire le operazioni di gestione del flusso necessarie durante il trasferimento del flusso al nuovo dispositivo predefinito. Inoltre, l'applicazione può eseguire il rendering o l'acquisizione di flussi esistenti usando il nuovo formato specificato dall'utente mentre è attiva una sessione di rendering.

In questa sezione sono descritti gli argomenti seguenti:

Gli esempi seguenti, inclusi in Windows SDK, illustrano come un'applicazione può gestire le notifiche di routing di flusso.

Gestione dei flussi

Informazioni sull'API MMDevice

Informazioni su WASAPI