Передача данных о событиях между классами в C ++ - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь написать голосовой коммуникатор на 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? 
        }
    }
};
...