在C ++中的类之间传递事件数据

时间:2019-04-19 15:07:30

标签: c++ multithreading design-patterns pthreads alsa

我正在尝试将C ++语音通信器作为学校项目来编写。到目前为止,我已经写了两节课-一课录制声音(记录器),一课播放声音(播放器)。此时,记录器将写入文件,稍后将其传递给播放器。但是现在我想尝试使其实时运行。在Recorder内有一个循环,可从声卡重复读取480字节的音频。现在,每次音频数据准备就绪时,我都希望将其发送到Player类进行播放。 Player只是将数据添加到声卡缓冲区,因此就像调用playerObject.play(char * buffer,int bufferSize)一样简单。我不想把一堂课放在另一堂课里。如何在它们之间传递数据?还是在Recorder内调用Player的功能? (稍后我将编写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? 
        }
    }
};

0 个答案:

没有答案