add injector ring buffer to audio client

This commit is contained in:
Zach Pomerantz 2017-01-09 13:21:20 -05:00
parent a7ecf41a42
commit 3a0d874bb5
2 changed files with 8 additions and 3 deletions

View file

@ -127,6 +127,7 @@ AudioClient::AudioClient() :
_loopbackAudioOutput(NULL), _loopbackAudioOutput(NULL),
_loopbackOutputDevice(NULL), _loopbackOutputDevice(NULL),
_inputRingBuffer(0), _inputRingBuffer(0),
_localInjectorsBuffer(0),
_receivedAudioStream(RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES), _receivedAudioStream(RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES),
_isStereoInput(false), _isStereoInput(false),
_outputStarveDetectionStartTimeMsec(0), _outputStarveDetectionStartTimeMsec(0),
@ -146,7 +147,7 @@ AudioClient::AudioClient() :
_networkToOutputResampler(NULL), _networkToOutputResampler(NULL),
_audioLimiter(AudioConstants::SAMPLE_RATE, OUTPUT_CHANNEL_COUNT), _audioLimiter(AudioConstants::SAMPLE_RATE, OUTPUT_CHANNEL_COUNT),
_outgoingAvatarAudioSequenceNumber(0), _outgoingAvatarAudioSequenceNumber(0),
_audioOutputIODevice(_receivedAudioStream, this), _audioOutputIODevice(_localInjectorsBuffer, _receivedAudioStream, this),
_stats(&_receivedAudioStream), _stats(&_receivedAudioStream),
_inputGate(), _inputGate(),
_positionGetter(DEFAULT_POSITION_GETTER), _positionGetter(DEFAULT_POSITION_GETTER),

View file

@ -84,8 +84,10 @@ public:
class AudioOutputIODevice : public QIODevice { class AudioOutputIODevice : public QIODevice {
public: public:
AudioOutputIODevice(MixedProcessedAudioStream& receivedAudioStream, AudioClient* audio) : AudioOutputIODevice(AudioRingBuffer& localInjectorsBuffer, MixedProcessedAudioStream& receivedAudioStream,
_receivedAudioStream(receivedAudioStream), _audio(audio), _unfulfilledReads(0) {}; AudioClient* audio) :
_localInjectorsBuffer(localInjectorsBuffer), _receivedAudioStream(receivedAudioStream),
_audio(audio), _unfulfilledReads(0) {}
void start() { open(QIODevice::ReadOnly | QIODevice::Unbuffered); } void start() { open(QIODevice::ReadOnly | QIODevice::Unbuffered); }
void stop() { close(); } void stop() { close(); }
@ -93,6 +95,7 @@ public:
qint64 writeData(const char * data, qint64 maxSize) override { return 0; } qint64 writeData(const char * data, qint64 maxSize) override { return 0; }
int getRecentUnfulfilledReads() { int unfulfilledReads = _unfulfilledReads; _unfulfilledReads = 0; return unfulfilledReads; } int getRecentUnfulfilledReads() { int unfulfilledReads = _unfulfilledReads; _unfulfilledReads = 0; return unfulfilledReads; }
private: private:
AudioRingBuffer& _localInjectorsBuffer;
MixedProcessedAudioStream& _receivedAudioStream; MixedProcessedAudioStream& _receivedAudioStream;
AudioClient* _audio; AudioClient* _audio;
int _unfulfilledReads; int _unfulfilledReads;
@ -262,6 +265,7 @@ private:
QAudioOutput* _loopbackAudioOutput; QAudioOutput* _loopbackAudioOutput;
QIODevice* _loopbackOutputDevice; QIODevice* _loopbackOutputDevice;
AudioRingBuffer _inputRingBuffer; AudioRingBuffer _inputRingBuffer;
AudioRingBuffer _localInjectorsBuffer;
MixedProcessedAudioStream _receivedAudioStream; MixedProcessedAudioStream _receivedAudioStream;
bool _isStereoInput; bool _isStereoInput;