Я пытаюсь написать голосовой коммуникатор на C ++ как школьный проект. До сих пор я написал два класса - один для записи звука (Recorder) и один для его воспроизведения (Player). В этот момент Recorder записывает в файл, который я позже передаю в Player. Но сейчас я хотел бы попытаться заставить его работать в режиме реального времени. Внутри Recorder есть петля, которая многократно читает 480 байтов аудио со звуковой карты. Теперь каждый раз, когда аудиоданные готовы, я хотел бы отправить их в класс Player для воспроизведения. Player просто добавляет эти данные в буфер звуковой карты, так что это так же просто, как вызвать playerObject.play (char * buffer, int bufferSize). Я не хочу помещать один класс в другой. Как я могу передать эти данные между ними? Или вызвать функцию Player внутри Recorder? (Позже я напишу Encoder и Decoder, и мне нужно будет передавать данные между всеми этими классами)
class Player {
void play(char* audioData, int audioDataSize)
{
sendAudioToSoundCard(audioData, audioDataSize)
}
};
class Recorder {
void record()
{
const int dataSize = 480;
char buffer[dataSize]
while (1)
{
readAudioFromSoundCard(buffer, dataSize);
sendAudioToPlay(buffer, dataSize); // how do I make this call play from Player?
}
}
};