|
@@ -241,14 +241,15 @@ OSStatus AudioDriverCoreAudio::input_callback(void *inRefCon,
|
|
|
|
|
|
AudioBufferList bufferList;
|
|
AudioBufferList bufferList;
|
|
bufferList.mNumberBuffers = 1;
|
|
bufferList.mNumberBuffers = 1;
|
|
- bufferList.mBuffers[0].mData = ad->input_buf.ptrw();
|
|
|
|
|
|
+ bufferList.mBuffers[0].mData = nullptr;
|
|
bufferList.mBuffers[0].mNumberChannels = ad->capture_channels;
|
|
bufferList.mBuffers[0].mNumberChannels = ad->capture_channels;
|
|
- bufferList.mBuffers[0].mDataByteSize = ad->input_buf.size() * sizeof(int16_t);
|
|
|
|
|
|
+ bufferList.mBuffers[0].mDataByteSize = ad->buffer_size * sizeof(int16_t);
|
|
|
|
|
|
OSStatus result = AudioUnitRender(ad->input_unit, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &bufferList);
|
|
OSStatus result = AudioUnitRender(ad->input_unit, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, &bufferList);
|
|
if (result == noErr) {
|
|
if (result == noErr) {
|
|
|
|
+ int16_t *data = (int16_t *)bufferList.mBuffers[0].mData;
|
|
for (unsigned int i = 0; i < inNumberFrames * ad->capture_channels; i++) {
|
|
for (unsigned int i = 0; i < inNumberFrames * ad->capture_channels; i++) {
|
|
- int32_t sample = ad->input_buf[i] << 16;
|
|
|
|
|
|
+ int32_t sample = data[i] << 16;
|
|
ad->input_buffer_write(sample);
|
|
ad->input_buffer_write(sample);
|
|
|
|
|
|
if (ad->capture_channels == 1) {
|
|
if (ad->capture_channels == 1) {
|
|
@@ -393,9 +394,6 @@ Error AudioDriverCoreAudio::init_input_device() {
|
|
UInt32 flag = 1;
|
|
UInt32 flag = 1;
|
|
result = AudioUnitSetProperty(input_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, kInputBus, &flag, sizeof(flag));
|
|
result = AudioUnitSetProperty(input_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, kInputBus, &flag, sizeof(flag));
|
|
ERR_FAIL_COND_V(result != noErr, FAILED);
|
|
ERR_FAIL_COND_V(result != noErr, FAILED);
|
|
- flag = 0;
|
|
|
|
- result = AudioUnitSetProperty(input_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, kOutputBus, &flag, sizeof(flag));
|
|
|
|
- ERR_FAIL_COND_V(result != noErr, FAILED);
|
|
|
|
|
|
|
|
UInt32 size;
|
|
UInt32 size;
|
|
#ifdef MACOS_ENABLED
|
|
#ifdef MACOS_ENABLED
|
|
@@ -460,8 +458,7 @@ Error AudioDriverCoreAudio::init_input_device() {
|
|
// Sample rate is independent of channels (ref: https://stackoverflow.com/questions/11048825/audio-sample-frequency-rely-on-channels)
|
|
// Sample rate is independent of channels (ref: https://stackoverflow.com/questions/11048825/audio-sample-frequency-rely-on-channels)
|
|
capture_buffer_frames = closest_power_of_2(latency * (uint32_t)capture_mix_rate / (uint32_t)1000);
|
|
capture_buffer_frames = closest_power_of_2(latency * (uint32_t)capture_mix_rate / (uint32_t)1000);
|
|
|
|
|
|
- unsigned int buffer_size = capture_buffer_frames * capture_channels;
|
|
|
|
- input_buf.resize(buffer_size);
|
|
|
|
|
|
+ buffer_size = capture_buffer_frames * capture_channels;
|
|
|
|
|
|
AURenderCallbackStruct callback;
|
|
AURenderCallbackStruct callback;
|
|
memset(&callback, 0, sizeof(AURenderCallbackStruct));
|
|
memset(&callback, 0, sizeof(AURenderCallbackStruct));
|