diff --git a/src/media/audio/coreaudio/osx/corelayer.cpp b/src/media/audio/coreaudio/osx/corelayer.cpp index bde55d6c0841564eeb378d559be3291a2f2aa501..aeb79522f5f8d2b5368fab5a77c68348be791b0a 100644 --- a/src/media/audio/coreaudio/osx/corelayer.cpp +++ b/src/media/audio/coreaudio/osx/corelayer.cpp @@ -146,18 +146,18 @@ CoreLayer::initAudioLayerIO() &info, &size)); + // Set format on output *SCOPE* in input *BUS*. + checkErr(AudioUnitGetProperty(ioUnit_, + kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Output, + inputBus, + &info, + &size)); + info.mSampleRate = audioFormat_.sample_rate; audioInputFormat_ = {static_cast<unsigned int>(info.mSampleRate), static_cast<unsigned int>(info.mChannelsPerFrame)}; hardwareInputFormatAvailable(audioInputFormat_); - // Set format on output *SCOPE* in input *BUS*. - checkErr(AudioUnitGetProperty(ioUnit_, - kAudioUnitProperty_StreamFormat, - kAudioUnitScope_Output, - inputBus, - &info, - &size)); - // Keep everything else and change only sample rate (or else SPLOSION!!!) info.mSampleRate = audioInputFormat_.sample_rate; @@ -336,8 +336,8 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags, captureBuff_)); auto format = audioInputFormat_; - audioInputFormat_.sampleFormat = AV_SAMPLE_FMT_FLTP; - auto inBuff = std::make_unique<AudioFrame>(audioInputFormat_, inNumberFrames); + format.sampleFormat = AV_SAMPLE_FMT_FLTP; + auto inBuff = std::make_unique<AudioFrame>(format, inNumberFrames); auto& in = *inBuff->pointer(); for (unsigned i = 0; i < inChannelsPerFrame_; ++i) std::copy_n((Float32*)captureBuff_->mBuffers[i].mData, inNumberFrames, (Float32*)in.extended_data[i]);