Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Lo streaming è il processo di conservazione di solo una piccola parte di un file audio in memoria durante la riproduzione. Ciò consente la riproduzione di file audio di grandi dimensioni, ad esempio musica di sottofondo, e non occupa una grande quantità di memoria.
Tip
Ridimensionamento del buffer per bassa latenza: Usare almeno 3 buffer nell'anello di streaming per evitare blocchi e mantenere la durata di ogni buffer tra 20 e 100 ms. I buffer più brevi (da 20 a 40 ms) riducono la latenza percepita per effetti audio interattivi, ma richiedono letture su disco più veloci e una pianificazione dei thread più stretta. Per lo streaming di musica di sottofondo, i buffer da 80 a 100 ms offrono un margine confortevole mentre rimangono inaudibili agli utenti.
Avvertimento
Il thread di streaming deve essere eseguito con priorità elevata tramite MMCSS (ad esempio, registrandolo con l'attività "Pro Audio" o "Games") per evitare gli underflow del buffer causati da thread con priorità inferiore che sottraggono risorse alla pipeline audio. Gli underrun causano schiocchi udibili o vuoti di silenzio che disturbano l’audio di gioco.
Quando un file audio viene trasmesso in streaming, i dati vengono letti dal disco in blocchi anziché caricare l'intero file contemporaneamente. Lo streaming viene eseguito leggendo in modo asincrono i dati audio in una coda di buffer del disco. Ogni buffer viene riempito e quindi inviato a una voce di origine. Al termine della riproduzione di un buffer, il buffer diventa nuovamente disponibile per la lettura. Scorrere i buffer del disco in questo modo consente la riproduzione di un file audio di grandi dimensioni mentre viene caricata in memoria solo una parte del suo contenuto. Il codice di streaming deve essere inserito in un thread separato, in cui può rimanere in sospensione durante l'attesa del completamento di operazioni su disco e audio a esecuzione prolungata. Una classe di callback viene usata per riattivare il thread attivando eventi al termine delle operazioni audio.
Per un esempio di come eseguire lo streaming con XAudio2, vedere Procedura: Trasmettere un suono da disco.
Argomenti correlati