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); } }
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); } }