Skip to content
Snippets Groups Projects
Commit 5bf8188d authored by Alireza Toghyiani's avatar Alireza Toghyiani Committed by Adrien Béraud
Browse files

fix error in building daemon for iOS audio layer

Change-Id: I8926afa1e36352264ce2450c248c2c498ba2a0cf
parent b86d8229
No related branches found
No related tags found
No related merge requests found
...@@ -42,7 +42,6 @@ CoreLayer::CoreLayer(const AudioPreference &pref) ...@@ -42,7 +42,6 @@ CoreLayer::CoreLayer(const AudioPreference &pref)
, indexIn_(pref.getAlsaCardin()) , indexIn_(pref.getAlsaCardin())
, indexOut_(pref.getAlsaCardout()) , indexOut_(pref.getAlsaCardout())
, indexRing_(pref.getAlsaCardRingtone()) , indexRing_(pref.getAlsaCardRingtone())
, playbackBuff_(0, audioFormat_)
{ {
audioConfigurationQueue = dispatch_queue_create("com.savoirfairelinux.audioConfigurationQueueIOS", DISPATCH_QUEUE_SERIAL); audioConfigurationQueue = dispatch_queue_create("com.savoirfairelinux.audioConfigurationQueueIOS", DISPATCH_QUEUE_SERIAL);
} }
...@@ -269,20 +268,6 @@ CoreLayer::setupInputBus() { ...@@ -269,20 +268,6 @@ CoreLayer::setupInputBus() {
inputBus, inputBus,
&flag, &flag,
sizeof(flag)); sizeof(flag));
UInt32 bufferSizeFrames = std::round(inSampleRate_ * bufferDuration);
UInt32 bufferSizeBytes = bufferSizeFrames * sizeof(Float32);
size = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * inputASBD.mChannelsPerFrame);
rawBuff_.reset(new Byte[size + bufferSizeBytes * inputASBD.mChannelsPerFrame]);
captureBuff_ = reinterpret_cast<::AudioBufferList*>(rawBuff_.get());
captureBuff_->mNumberBuffers = inputASBD.mChannelsPerFrame;
auto bufferBasePtr = rawBuff_.get() + size;
for (UInt32 i = 0; i < captureBuff_->mNumberBuffers; ++i) {
captureBuff_->mBuffers[i].mNumberChannels = 1;
captureBuff_->mBuffers[i].mDataByteSize = bufferSizeBytes;
captureBuff_->mBuffers[i].mData = bufferBasePtr + bufferSizeBytes * i;
}
} }
void void
...@@ -430,29 +415,16 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags, ...@@ -430,29 +415,16 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags,
return; return;
} }
// Check if buffer is large enough for inNumberFrames auto format = audioInputFormat_;
UInt32 bufferSizeFrames = captureBuff_->mBuffers[0].mDataByteSize / sizeof(Float32); format.sampleFormat = AV_SAMPLE_FMT_FLTP;
auto inBuff = std::make_shared<AudioFrame>(format, inNumberFrames);
if (inNumberFrames > bufferSizeFrames) { AudioBufferList buffer;
// Buffer is too small, need to reallocate UInt32 bufferSize = inNumberFrames * sizeof(Float32);
JAMI_DBG("Reallocating capture buffer..."); buffer.mNumberBuffers = inChannelsPerFrame_;
for (UInt32 i = 0; i < buffer.mNumberBuffers; ++i) {
UInt32 bufferSizeBytes = inNumberFrames * sizeof(Float32); buffer.mBuffers[i].mNumberChannels = 1;
UInt32 size = offsetof(AudioBufferList, mBuffers[0]) + (sizeof(AudioBuffer) * inChannelsPerFrame_); buffer.mBuffers[i].mDataByteSize = bufferSize;
buffer.mBuffers[i].mData = inBuff->pointer()->extended_data[i];
rawBuff_.reset(new Byte[size + bufferSizeBytes * inChannelsPerFrame_]);
captureBuff_ = reinterpret_cast<::AudioBufferList*>(rawBuff_.get());
captureBuff_->mNumberBuffers = inChannelsPerFrame_;
auto bufferBasePtr = rawBuff_.get() + size;
for (UInt32 i = 0; i < captureBuff_->mNumberBuffers; ++i) {
captureBuff_->mBuffers[i].mNumberChannels = 1;
captureBuff_->mBuffers[i].mDataByteSize = bufferSizeBytes;
captureBuff_->mBuffers[i].mData = bufferBasePtr + bufferSizeBytes * i;
}
// Update bufferSizeFrames
bufferSizeFrames = inNumberFrames;
} }
// Write the mic samples in our buffer // Write the mic samples in our buffer
...@@ -461,17 +433,10 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags, ...@@ -461,17 +433,10 @@ CoreLayer::read(AudioUnitRenderActionFlags* ioActionFlags,
inTimeStamp, inTimeStamp,
inBusNumber, inBusNumber,
inNumberFrames, inNumberFrames,
captureBuff_)); &buffer));
auto format = audioInputFormat_;
format.sampleFormat = AV_SAMPLE_FMT_FLTP;
auto inBuff = std::make_shared<AudioFrame>(format, inNumberFrames);
if (isCaptureMuted_) { if (isCaptureMuted_) {
libav_utils::fillWithSilence(inBuff->pointer()); libav_utils::fillWithSilence(inBuff->pointer());
} else {
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]);
} }
putRecorded(std::move(inBuff)); putRecorded(std::move(inBuff));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment