mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-04 09:04:33 +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];
|
||||
|
||||
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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -161,6 +161,8 @@ int InboundAudioStream::parseData(const QByteArray& packet) {
|
|||
|
||||
framesAvailableChanged();
|
||||
|
||||
emit dataParsed();
|
||||
|
||||
return readBytes;
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue