mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 06:29:30 +02:00
scope seems to be working now using networkSamples
This commit is contained in:
parent
fea97f8fe8
commit
7a063b8bc8
5 changed files with 18 additions and 2 deletions
|
@ -121,6 +121,7 @@ Audio::Audio(QObject* parent) :
|
||||||
_noiseSampleFrames = new float[NUMBER_OF_NOISE_SAMPLE_FRAMES];
|
_noiseSampleFrames = new float[NUMBER_OF_NOISE_SAMPLE_FRAMES];
|
||||||
|
|
||||||
connect(&_receivedAudioStream, &MixedProcessedAudioStream::processSamples, this, &Audio::processReceivedAudioStreamSamples, Qt::DirectConnection);
|
connect(&_receivedAudioStream, &MixedProcessedAudioStream::processSamples, this, &Audio::processReceivedAudioStreamSamples, Qt::DirectConnection);
|
||||||
|
connect(&_receivedAudioStream, &MixedProcessedAudioStream::dataParsed, this, &Audio::updateScopeBuffers, Qt::DirectConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::init(QGLWidget *parent) {
|
void Audio::init(QGLWidget *parent) {
|
||||||
|
@ -777,11 +778,13 @@ void Audio::processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QBy
|
||||||
numNetworkOutputSamples,
|
numNetworkOutputSamples,
|
||||||
numDeviceOutputSamples,
|
numDeviceOutputSamples,
|
||||||
_desiredOutputFormat, _outputFormat);
|
_desiredOutputFormat, _outputFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Audio::updateScopeBuffers() {
|
||||||
if (_scopeEnabled && !_scopeEnabledPause) {
|
if (_scopeEnabled && !_scopeEnabledPause) {
|
||||||
unsigned int numAudioChannels = _desiredOutputFormat.channelCount();
|
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) {
|
for (int numSamples = numNetworkOutputSamples / numAudioChannels; numSamples > 0; numSamples -= NETWORK_SAMPLES_PER_FRAME) {
|
||||||
|
|
||||||
unsigned int audioChannel = 0;
|
unsigned int audioChannel = 0;
|
||||||
|
@ -801,6 +804,8 @@ void Audio::processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QBy
|
||||||
samples += NETWORK_SAMPLES_PER_FRAME * numAudioChannels;
|
samples += NETWORK_SAMPLES_PER_FRAME * numAudioChannels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_receivedAudioStream.clearNetworkSamples();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Audio::addReceivedAudioToStream(const QByteArray& audioByteArray) {
|
void Audio::addReceivedAudioToStream(const QByteArray& audioByteArray) {
|
||||||
|
|
|
@ -106,6 +106,7 @@ public slots:
|
||||||
void parseAudioStreamStatsPacket(const QByteArray& packet);
|
void parseAudioStreamStatsPacket(const QByteArray& packet);
|
||||||
void addSpatialAudioToBuffer(unsigned int sampleTime, const QByteArray& spatialAudio, unsigned int numSamples);
|
void addSpatialAudioToBuffer(unsigned int sampleTime, const QByteArray& spatialAudio, unsigned int numSamples);
|
||||||
void processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QByteArray& outputBuffer);
|
void processReceivedAudioStreamSamples(const QByteArray& inputBuffer, QByteArray& outputBuffer);
|
||||||
|
void updateScopeBuffers();
|
||||||
void handleAudioInput();
|
void handleAudioInput();
|
||||||
void reset();
|
void reset();
|
||||||
void resetStats();
|
void resetStats();
|
||||||
|
|
|
@ -161,6 +161,8 @@ int InboundAudioStream::parseData(const QByteArray& packet) {
|
||||||
|
|
||||||
framesAvailableChanged();
|
framesAvailableChanged();
|
||||||
|
|
||||||
|
emit dataParsed();
|
||||||
|
|
||||||
return readBytes;
|
return readBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,9 @@ public:
|
||||||
|
|
||||||
int getPacketsReceived() const { return _incomingSequenceNumberStats.getReceived(); }
|
int getPacketsReceived() const { return _incomingSequenceNumberStats.getReceived(); }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dataParsed();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/// This function should be called every second for all the stats to function properly. If dynamic jitter buffers
|
/// 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.
|
/// is enabled, those stats are used to calculate _desiredJitterBufferFrames.
|
||||||
|
|
|
@ -26,6 +26,11 @@ signals:
|
||||||
public:
|
public:
|
||||||
void outputFormatChanged(int outputFormatChannelCountTimesSampleRate);
|
void outputFormatChanged(int outputFormatChannelCountTimesSampleRate);
|
||||||
|
|
||||||
|
const int16_t* getNetworkSamples() const { return _networkSamples; }
|
||||||
|
int getNetworkSamplesWritten() const { return _networkSamplesWritten; }
|
||||||
|
|
||||||
|
void clearNetworkSamples() { _networkSamplesWritten = 0; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int parseAudioData(PacketType type, const QByteArray& packetAfterStreamProperties, int networkSamples);
|
int parseAudioData(PacketType type, const QByteArray& packetAfterStreamProperties, int networkSamples);
|
||||||
int writeDroppableSilentSamples(int silentSamples);
|
int writeDroppableSilentSamples(int silentSamples);
|
||||||
|
|
Loading…
Reference in a new issue