Skip to content
Snippets Groups Projects
Commit 48ac41bb authored by Kateryna Kostiuk's avatar Kateryna Kostiuk
Browse files

audio: fix ios

Change-Id: I21366667aaad5b517a5036442a292ed8a757d698
parent 9ab9a69d
Branches
No related tags found
No related merge requests found
...@@ -230,7 +230,7 @@ CoreLayer::setupInputBus() { ...@@ -230,7 +230,7 @@ CoreLayer::setupInputBus() {
inputBus, inputBus,
&inputASBD, &inputASBD,
&size)); &size));
inputASBD.mSampleRate = inSampleRate;
audioInputFormat_ = {static_cast<unsigned int>(inputASBD.mSampleRate), audioInputFormat_ = {static_cast<unsigned int>(inputASBD.mSampleRate),
static_cast<unsigned int>(inputASBD.mChannelsPerFrame)}; static_cast<unsigned int>(inputASBD.mChannelsPerFrame)};
hardwareInputFormatAvailable(audioInputFormat_); hardwareInputFormatAvailable(audioInputFormat_);
...@@ -262,7 +262,7 @@ CoreLayer::setupInputBus() { ...@@ -262,7 +262,7 @@ CoreLayer::setupInputBus() {
AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration, AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareIOBufferDuration,
&size, &size,
&bufferDuration); &bufferDuration);
UInt32 bufferSizeFrames = inSampleRate_ * bufferDuration; UInt32 bufferSizeFrames = std::round(inSampleRate_ * bufferDuration);
UInt32 bufferSizeBytes = bufferSizeFrames * sizeof(Float32); UInt32 bufferSizeBytes = bufferSizeFrames * sizeof(Float32);
size = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * inputASBD.mChannelsPerFrame); size = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * inputASBD.mChannelsPerFrame);
rawBuff_.reset(new Byte[size + bufferSizeBytes * inputASBD.mChannelsPerFrame]); rawBuff_.reset(new Byte[size + bufferSizeBytes * inputASBD.mChannelsPerFrame]);
...@@ -295,14 +295,15 @@ CoreLayer::bindCallbacks() { ...@@ -295,14 +295,15 @@ CoreLayer::bindCallbacks() {
sizeof(AURenderCallbackStruct))); sizeof(AURenderCallbackStruct)));
// Input callback setup // Input callback setup
callback.inputProc = inputCallback; AURenderCallbackStruct inputCall;
callback.inputProcRefCon = this; inputCall.inputProc = inputCallback;
inputCall.inputProcRefCon = this;
checkErr(AudioUnitSetProperty(ioUnit_, checkErr(AudioUnitSetProperty(ioUnit_,
kAudioOutputUnitProperty_SetInputCallback, kAudioOutputUnitProperty_SetInputCallback,
kAudioUnitScope_Global, kAudioUnitScope_Global,
inputBus, inputBus,
&callback, &inputCall,
sizeof(AURenderCallbackStruct))); sizeof(AURenderCallbackStruct)));
} }
...@@ -386,6 +387,9 @@ CoreLayer::write(AudioUnitRenderActionFlags* ioActionFlags, ...@@ -386,6 +387,9 @@ CoreLayer::write(AudioUnitRenderActionFlags* ioActionFlags,
for (unsigned i = 0; i < frame.channels; ++i) { for (unsigned i = 0; i < frame.channels; ++i) {
std::copy_n((Float32*)frame.extended_data[i], inNumberFrames, (Float32*)ioData->mBuffers[i].mData); std::copy_n((Float32*)frame.extended_data[i], inNumberFrames, (Float32*)ioData->mBuffers[i].mData);
} }
} else {
for (int i = 0; i < currentOutFormat.nb_channels; ++i)
std::fill_n(reinterpret_cast<Float32*>(ioData->mBuffers[i].mData), inNumberFrames, 0);
} }
} }
...@@ -425,7 +429,7 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags, ...@@ -425,7 +429,7 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags,
auto format = audioInputFormat_; auto format = audioInputFormat_;
format.sampleFormat = AV_SAMPLE_FMT_FLTP; format.sampleFormat = AV_SAMPLE_FMT_FLTP;
auto inBuff = std::make_unique<AudioFrame>(audioInputFormat_, inNumberFrames); auto inBuff = std::make_unique<AudioFrame>(format, inNumberFrames);
if (isCaptureMuted_) { if (isCaptureMuted_) {
libav_utils::fillWithSilence(inBuff->pointer()); libav_utils::fillWithSilence(inBuff->pointer());
} else { } else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment