Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Streaming é o processo de manter apenas uma pequena parte de um arquivo de áudio enquanto está a ser reproduzido na memória. Isso permite que grandes arquivos de áudio, como música de fundo, sejam reproduzidos e não ocupem uma grande quantidade de memória.
Tip
Dimensionamento do buffer para baixa latência: Use pelo menos 3 buffers no seu anel de streaming para evitar bloqueios e mantenha a duração de cada buffer entre 20–100 ms. Buffers mais curtos (20–40 ms) reduzem a latência percebida para efeitos sonoros interativos, mas exigem leituras de disco mais rápidas e um escalonamento de threads mais apertado. Para streaming de música de fundo, buffers de 80–100 ms proporcionam uma margem confortável enquanto permanecem inaudíveis para os utilizadores.
Warning
O thread de streaming deve correr com prioridade elevada via MMCSS (por exemplo, registando-se com a tarefa "Pro Audio" ou "Games") para evitar subcorrimentos de buffer causados por threads de menor prioridade que privam o pipeline de áudio. Os underruns resultam em estalos audíveis ou intervalos de silêncio que perturbam o áudio do jogo.
Quando um arquivo de áudio é transmitido, seus dados são lidos do disco em partes, em vez de carregar o arquivo inteiro de uma só vez. O streaming é realizado através da leitura assíncrona de dados de áudio em uma fila de buffers de disco. Cada buffer é preenchido e, em seguida, enviado para uma voz de origem. Depois que a voz terminar de reproduzir um buffer, o buffer fica disponível para leitura novamente. Percorrer repetidamente os buffers de disco desta forma permite que um ficheiro de áudio grande seja reproduzido enquanto apenas uma parte dos seus dados é carregada. O código de streaming deve ser colocado num thread separado, onde pode dormir enquanto aguarda a conclusão de operações de disco e áudio de longa duração. Uma classe de retorno de chamada é usada para despertar o thread acionando eventos quando as operações de áudio são concluídas.
Para obter um exemplo de como o streaming pode ser realizado com o XAudio2, consulte Como: Transmitir um som do disco.
Tópicos relacionados