diff --git a/interface/interface_en.ts b/interface/interface_en.ts index 689b45afcf..f5c7f225df 100644 --- a/interface/interface_en.ts +++ b/interface/interface_en.ts @@ -4,22 +4,22 @@ Application - + Export Voxels - + Sparse Voxel Octree Files (*.svo) - + Open Script - + JavaScript Files (*.js) @@ -113,18 +113,18 @@ Menu - + Open .ini config file - - + + Text files (*.ini) - + Save .ini config file diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 734b5345fb..8bbd1bb35c 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -215,6 +215,20 @@ void linearResampling(int16_t* sourceSamples, int16_t* destinationSamples, } } else { + if (sourceAudioFormat.sampleRate() == destinationAudioFormat.sampleRate()) { + // mono to stereo, same sample rate + if (!(sourceAudioFormat.channelCount() == 1 && destinationAudioFormat.channelCount() == 2)) { + qWarning() << "Unsupported format conversion" << sourceAudioFormat << destinationAudioFormat; + return; + } + for (const int16_t* sourceEnd = sourceSamples + numSourceSamples; sourceSamples != sourceEnd; + sourceSamples++) { + *destinationSamples++ = *sourceSamples; + *destinationSamples++ = *sourceSamples; + } + return; + } + // upsample from 24 to 48 // for now this only supports a stereo to stereo conversion - this is our case for network audio to output int sourceIndex = 0; @@ -551,12 +565,14 @@ void Audio::handleAudioInput() { // send whatever procedural sounds we want to locally loop back to the _proceduralOutputDevice QByteArray proceduralOutput; - proceduralOutput.resize(NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * 4 * sizeof(int16_t)); + proceduralOutput.resize(NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * _outputFormat.sampleRate() * + _outputFormat.channelCount() * sizeof(int16_t) / (_desiredInputFormat.sampleRate() * + _desiredInputFormat.channelCount())); linearResampling(_localProceduralSamples, reinterpret_cast(proceduralOutput.data()), NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL, - NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL * 4, + proceduralOutput.size() / sizeof(int16_t), _desiredInputFormat, _outputFormat); if (_proceduralOutputDevice) {