Re: HALOutputUnit (Pt 1)
Re: HALOutputUnit (Pt 1)
- Subject: Re: HALOutputUnit (Pt 1)
- From: Doug Wyatt <email@hidden>
- Date: Tue, 3 Feb 2004 12:17:30 -0800
On Feb 3, 2004, at 10:47, Bob Stuller wrote:
Okay, I'm stuck. I'm trying to use the HALOutputUnit to pull 16-bit
audio at 16 kHz and,
when I get to the point of trying to set these settings, I get a
kAudioUnitErr_PropertyNotWritable error. Here is sketch of the code
that I am using.
ComponentDescription cd =
{kAudioUnitType_Output, kAudioUnitSubType_HALOutput,
kAudioUnitManufacturer_Apple, 0, 0};
Component HALOutput = FindNextComponent(nil, &cd);
OSErr err = OpenAComponent(HALOutput, &mHALOutInstance);
OSStatus status = AudioUnitInitialize(mHALOutInstance);
AudioInputUberDescription inputDesc;
mUberDescriptions->FetchItemAt(1, &inputDesc);
status = AudioUnitSetProperty(mHALOutInstance,
kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global,
0,
&inputDesc.mDeviceID,
sizeof(AudioDeviceID));
looks ok
UInt32 data = 0;
status = AudioUnitSetProperty(mHALOutInstance,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Output,
0,
&data,
sizeof(data));
looks fine
data = 1;
status = AudioUnitSetProperty(mHALOutInstance,
kAudioOutputUnitProperty_EnableIO,
kAudioUnitScope_Input,
1,
&data,
sizeof(data));
looks fine
Boolean writable = false;
status = AudioUnitGetPropertyInfo(mHALOutInstance,
kAudioOutputUnitProperty_ChannelMap,
kAudioUnitScope_Input,
1, &propsize, &writable);
looks fine
long nChannels = propsize / sizeof(SInt32);
long* channelMapPtr = (long*)malloc(propsize);
channelMapPtr[0] = 0;
for (long i = 1; i < nChannels; i++)
{
channelMapPtr[i] = -1;
}
status = AudioUnitSetProperty(mHALOutInstance,
kAudioOutputUnitProperty_ChannelMap, kAudioUnitScope_Input,
1, channelMapPtr, propsize);
looks fine
AudioStreamBasicDescription format;
memset(&format, 0, sizeof(AudioStreamBasicDescription));
format.mSampleRate = 16000.0;
format.mBytesPerFrame = 2;
format.mFramesPerPacket = 1;
format.mBytesPerPacket = 2;
format.mChannelsPerFrame = 1;
format.mBitsPerChannel = 16;
format.mFormatID = kAudioFormatLinearPCM;
format.mFormatFlags = kLinearPCMFormatFlagIsBigEndian
// | kLinearPCMFormatFlagIsSignedInteger
| kLinearPCMFormatFlagIsPacked
| kLinearPCMFormatFlagIsNonInterleaved;
status = AudioUnitSetProperty(mHALOutInstance,
kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
1, &format, sizeof(format));
This is the AudioUnitSetProperty call that returns the NotWritable
error. Where did I go wrong here?
element 1's input scope is the hardware input format -- you want to be
changing its format in the output scope
Doug
Any help that you or anyone else on the Core Audio list could provide
would be appreciated.
Peace,
Bob
--
Doug Wyatt
Core Audio, Apple
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.