// ---------------------------------------------------------- bool ofxAudioUnitInput::configureInputDevice() // ---------------------------------------------------------- { UInt32 on = 1; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &on, sizeof(on)), "enabling input on HAL unit"); UInt32 off = 0; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, &off, sizeof(off)), "disabling output on HAL unit"); UInt32 deviceIDSize = sizeof(AudioDeviceID); OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &_impl->inputDeviceID, deviceIDSize), "setting HAL unit's device ID"); AudioStreamBasicDescription deviceASBD = {0}; UInt32 ASBDSize = sizeof(deviceASBD); OFXAU_RET_FALSE(AudioUnitGetProperty(*_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &deviceASBD, &ASBDSize), "getting hardware stream format"); deviceASBD.mSampleRate = 44100; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &deviceASBD, sizeof(deviceASBD)), "setting input sample rate to 44100"); AURenderCallbackStruct inputCallback = {RenderCallback, &_impl->ctx}; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 0, &inputCallback, sizeof(inputCallback)), "setting hardware input callback"); OFXAU_RET_BOOL(AudioUnitInitialize(*_unit), "initializing hardware input unit after setting it to input mode"); }
// ---------------------------------------------------------- bool ofxAudioUnitOutput::configureOutputDevice(int deviceID) // ---------------------------------------------------------- { OSStatus err = noErr; UInt32 outSize; Boolean outWritable; err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, &outSize, &outWritable); if ( err != noErr ) cout<<"err 1"<<endl; UInt16 devicesAvailable = outSize / sizeof(AudioDeviceID); if ( devicesAvailable < 1 ) { fprintf(stderr, "No devices\n" ); //return err; }else{ cout<<"*devicesAvailable "<<devicesAvailable<<endl; } UInt32 on = 1; UInt32 off = 0; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &off, sizeof(off)), "disabling input on HAL unit"); OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, &on, sizeof(on)), "enabling output on HAL unit"); AudioDeviceID outputDeviceID = kAudioObjectUnknown; UInt32 deviceIDSize = sizeof( AudioDeviceID ); AudioObjectPropertyAddress prop_addr = { kAudioHardwarePropertyDefaultOutputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster }; OFXAU_RET_FALSE(AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop_addr, 0, NULL, &deviceIDSize, &outputDeviceID), "getting device ID for default input"); if(deviceID != -1) outputDeviceID = deviceID; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &outputDeviceID, deviceIDSize), "setting HAL unit's device ID"); cout<<"outputDeviceID "<<outputDeviceID<<endl; OFXAU_RET_BOOL(AudioUnitInitialize(*_unit), "initializing hardware input unit after setting it to input mode"); }
// ---------------------------------------------------------- bool ofxAudioUnitInput::configureInputDevice() // ---------------------------------------------------------- { UInt32 on = 1; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, &on, sizeof(on)), "enabling input on HAL unit"); UInt32 off = 0; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, &off, sizeof(off)), "disabling output on HAL unit"); AudioDeviceID inputDeviceID = kAudioObjectUnknown; UInt32 deviceIDSize = sizeof( AudioDeviceID ); AudioObjectPropertyAddress prop_addr = { kAudioHardwarePropertyDefaultInputDevice, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster }; OFXAU_RET_FALSE(AudioObjectGetPropertyData(kAudioObjectSystemObject, &prop_addr, 0, NULL, &deviceIDSize, &inputDeviceID), "getting device ID for default input"); OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &inputDeviceID, deviceIDSize), "setting HAL unit's device ID"); AudioStreamBasicDescription deviceASBD = {0}; UInt32 ASBDSize = sizeof(deviceASBD); OFXAU_RET_FALSE(AudioUnitGetProperty(*_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &deviceASBD, &ASBDSize), "getting hardware stream format"); deviceASBD.mSampleRate = 44100; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 1, &deviceASBD, sizeof(deviceASBD)), "setting input sample rate to 44100"); AURenderCallbackStruct inputCallback; inputCallback.inputProc = ofxAudioUnitInput::renderCallback; inputCallback.inputProcRefCon = &_renderContext; OFXAU_RET_FALSE(AudioUnitSetProperty(*_unit, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, 0, &inputCallback, sizeof(inputCallback)), "setting hardware input callback"); OFXAU_RET_BOOL(AudioUnitInitialize(*_unit), "initializing hardware input unit after setting it to input mode"); }