scope seems to be working now using networkSamples

This commit is contained in:
wangyix 2014-08-08 18:16:25 -07:00
parent fea97f8fe8
commit 7a063b8bc8
5 changed files with 18 additions and 2 deletions

View file

@ -121,6 +121,7 @@ Audio::Audio(QObject* parent) :
_noiseSampleFrames = new float[NUMBER_OF_NOISE_SAMPLE_FRAMES];
connect(&_receivedAudioStream, &MixedProcessedAudioStream::processSamples, this, &Audio::processReceivedAudioStreamSamples, Qt::DirectConnection);
connect(&_receivedAudioStream, &MixedProcessedAudioStream::dataParsed, this, &Audio::updateScopeBuffers, Qt::DirectConnection);
}
void Audio::init(QGLWidget *parent) {
@ -777,11 +778,13 @@ void Audio::processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QBy
numNetworkOutputSamples,
numDeviceOutputSamples,
_desiredOutputFormat, _outputFormat);
}
void Audio::updateScopeBuffers() {
if (_scopeEnabled && !_scopeEnabledPause) {
unsigned int numAudioChannels = _desiredOutputFormat.channelCount();
const int16_t* samples = receivedSamples;
const int16_t* samples = _receivedAudioStream.getNetworkSamples();
int numNetworkOutputSamples = _receivedAudioStream.getNetworkSamplesWritten();
for (int numSamples = numNetworkOutputSamples / numAudioChannels; numSamples > 0; numSamples -= NETWORK_SAMPLES_PER_FRAME) {
unsigned int audioChannel = 0;
@ -801,6 +804,8 @@ void Audio::processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QBy
samples += NETWORK_SAMPLES_PER_FRAME * numAudioChannels;
}
}
_receivedAudioStream.clearNetworkSamples();
}
void Audio::addReceivedAudioToStream(const QByteArray& audioByteArray) {

View file

@ -106,6 +106,7 @@ public slots:
void parseAudioStreamStatsPacket(const QByteArray& packet);
void addSpatialAudioToBuffer(unsigned int sampleTime, const QByteArray& spatialAudio, unsigned int numSamples);
void processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QByteArray& outputBuffer);
void updateScopeBuffers();
void handleAudioInput();
void reset();
void resetStats();

View file

@ -161,6 +161,8 @@ int InboundAudioStream::parseData(const QByteArray& packet) {
framesAvailableChanged();
emit dataParsed();
return readBytes;
}

View file

@ -149,6 +149,9 @@ public:
int getPacketsReceived() const { return _incomingSequenceNumberStats.getReceived(); }
signals:
void dataParsed();
public slots:
/// This function should be called every second for all the stats to function properly. If dynamic jitter buffers
/// is enabled, those stats are used to calculate _desiredJitterBufferFrames.

View file

@ -26,6 +26,11 @@ signals:
public:
void outputFormatChanged(int outputFormatChannelCountTimesSampleRate);
const int16_t* getNetworkSamples() const { return _networkSamples; }
int getNetworkSamplesWritten() const { return _networkSamplesWritten; }
void clearNetworkSamples() { _networkSamplesWritten = 0; }
protected:
int parseAudioData(PacketType type, const QByteArray& packetAfterStreamProperties, int networkSamples);
int writeDroppableSilentSamples(int silentSamples);