Re: kAudioDevicePropertyBufferFrameSizeRange reports wrong values
Re: kAudioDevicePropertyBufferFrameSizeRange reports wrong values
- Subject: Re: kAudioDevicePropertyBufferFrameSizeRange reports wrong values
- From: Rolf Nilsson <email@hidden>
- Date: Tue, 16 Nov 2004 19:30:41 +0100
> Message: 5
> Date: Mon, 15 Nov 2004 11:28:44 -0800
> From: Jeff Moore <email@hidden>
> Subject: Re: kAudioDevicePropertyBufferFrameSizeRange reports wrong
values
> To: CoreAudio API <email@hidden>
> Message-ID: <email@hidden>
> Content-Type: text/plain; charset=US-ASCII; format=flowed
>
> I just played around with my iMic and I could set the buffer frame
size
> to any value within the range the HAL reported, including 2048. You'll
> need to be more specific about the failure you are seeing and the code
> you are using before I can give you any advice.
Yes, forgot that. What happens in my own app is that no errors are
reported but
the ioProc for the output device stops being fired
I tried the same thing with your ComplexPlayThru example:
here is a code snippet from that example, my addition is between the
#if 1 and #endif statement:
OSStatus ComplexPlayThru::SetOutputDeviceAsCurrent(AudioDeviceID out)
{
UInt32 size = sizeof(AudioDeviceID);;
OSStatus err = noErr;
if(out == kAudioDeviceUnknown) //Retrieve the default output device
{
err =
AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,
&size,
&out);
}
mOutputDevice.Init(out, false);
checkErr(err);
// here is were i try to change frame size for the output device
#if 1
UInt32 outPutFrameSize = 2048; // 1024 work OK, but not 2048
// skipped checking that the frame size is within the correct range
(but it is)
mOutputDevice.SetBufferSize(outPutFrameSize); // in frames
#endif
//Set the Current Device to the Default Output Unit.
err = AudioUnitSetProperty(mOutputUnit,
kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global,
0,
&mOutputDevice.mID,
sizeof(mOutputDevice.mID));
return err;
}
Does not work either.
Am I trying to set a new frame size at the wrong place?
Or am I missing something else?
Thanks for any help
Rolf Nilsson
>
> On Nov 14, 2004, at 11:54 PM, Rolf Nilsson wrote:
>
> >
> > Hi,
> >
> > The following code works fine with the built in audio device on my
> > Dual G4 running OS 10.2.8 (and 10.3.6 as well)
> > but not when using an iMic.
> >
> >
> > UInt32 desiredFrameSize = 2048;
> >
> >
> > AudioValueRange theAudioValueRange;
> >
> > // check that the desired value is within the allowed range
> > UInt32 propsize = sizeof(AudioValueRange);
> > OSErr theErr = AudioDeviceGetProperty(mID, 0, false,
> > kAudioDevicePropertyBufferFrameSizeRange, &propsize, &
> > theAudioValueRange);
> >
> >
> > if (desiredFrameSize < theAudioValueRange.mMinimum)
> > desiredFrameSize = theAudioValueRange.mMinimum;
> > else if (desiredFrameSize > theAudioValueRange.mMaximum)
> > desiredFrameSize = theAudioValueRange.mMaximum;
> >
> > // values is now within correct ranges
> > propsize = sizeof(UInt32);
> > theErr = AudioDeviceSetProperty(mID, NULL, 0, false,
> > kAudioDevicePropertyBufferFrameSize, propsize, & desiredFrameSize);
> >
> >
> > For the iMic, the reported maximum value is 4608 which is way below
> > the requested 2048;
> > If I lower the desired frame size to 1024 it works fine (actually
the
> > highest value that works is 1156 which is about 4608/4 but not
> > exactly).
> >
> > Is this a bug in the iMic driver or am I missing something obvious?
> >
> > Thanks
> > Rolf
> >
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Coreaudio-api mailing list (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> >
> >
> > This email sent to email@hidden
> >
>
> --
>
> Jeff Moore
> Core Audio
> Apple
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden