Exemple #1
0
        public void EnviarAmostra(ref ICarenBuffer Param_Buffer, uint Param_CountAudioBytes)
        {
            //Sincroniza o acesso a lista que contém os buffers de áudio.
            lock (SyncList)
            {
                //Novo buffer a ser adicionado.
                ICarenBuffer NewBuffer = new CarenBuffer();

                //Cria o buffer com a quantidade de dados validos.
                NewBuffer.CreateBuffer(Param_CountAudioBytes);

                //Cópia os dados do buffer do dispositivo de áudio para a amostra atual.
                NewBuffer.Write(Param_Buffer, 0, Param_CountAudioBytes);

                //Reseta a posição do buffer.
                NewBuffer.SetPosition(0);

                //Define as informações.
                NewBuffer.TamanhoValido = Param_CountAudioBytes;
                NewBuffer.Tamanho       = Param_CountAudioBytes;

                //Adiciona na lista.
                ListaBuffersAudio.Add(NewBuffer);
            }
        }
Exemple #2
0
        public ICarenBuffer ObterProximaAmostra()
        {
            //Sincroniza o acesso a lista que contém os buffers de áudio.
            lock (SyncList)
            {
                //Variavel a ser retornada.
                ICarenBuffer NextBuffer = null;

                //Verifica se a lista contém amostras.
                if (ListaBuffersAudio.Count <= 0)
                {
                    goto Done; //Nenhuma amostra disponivel.
                }
                //Obtém a amostra.
                NextBuffer = ListaBuffersAudio.ElementAtOrDefault(0);

                //Remove o buffer da lista.
                ListaBuffersAudio.RemoveAt(0);

                Done :;
                //Retorna a amostra.
                return(NextBuffer);
            }
        }