Re: IO Proc doesn't behave as expected
Re: IO Proc doesn't behave as expected
- Subject: Re: IO Proc doesn't behave as expected
- From: William Stewart <email@hidden>
- Date: Tue, 15 Mar 2005 10:50:21 -0800
On 14/03/2005, at 11:57 PM, Chris Rolfe wrote:
On 3/12/05 11:59 AM, "Robert Grant" <email@hidden> wrote:
There's something else going on here...
Thanks for the response (it gave me the spur to continue
debugging...).
The problem seems to be my output unit initialization. I'm using a
local
variable to set the output unit's format. I assumed that
AudioUnitSetProperty would copy the struct, but it appears to
expect the
caller to retain the memory.
Nope.
We strongly recommend that you use the CAStreamBasicDescription class
in the SDK. Many problems in this area arise due to the rather
finicky nature of this struct and problems developers have in filling
it out.
Bill
Assuming I'm not mistaken, is this by-design? Is it generally true
of data
passed to AudioUnitSetProperty?
Chris
//=======================================================
// Code Example:
// !! BUG !! Local data. Call succeeds, but host callback generates
garbage.
OSStatus setformat()
{
AudioStreamBasicDescription format = { 48000.0, type, flags, 4, 1,
4, 2, 32
};
OSStatus err = AudioUnitSetProperty (theUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
0,
format,
sizeof(AudioStreamBasicDescription));
}
// Works! Static data. Call succeeds. Sine tones fill the air.
AudioStreamBasicDescription format = { 48000.0, type, flags, 4, 1,
4, 2, 32
};
OSStatus setformat()
{
OSStatus err = AudioUnitSetProperty (theUnit,
kAudioUnitProperty_StreamFormat,
kAudioUnitScope_Input,
0,
format,
sizeof(AudioStreamBasicDescription));
}
Chris
Robert.
On Mar 11, 2005, at 9:58 PM, Chris Rolfe wrote:
Taking for granted initialization, etc., can anyone suggest why
starting/sleeping/stopping an IO Proc works, but the same IO Proc
might
produce garbage when start/stop are called from a Cocoa UI, a la:
This works fine:
void start() { AudioOutputUnitStart (unit); }
void stop() { AudioOutputUnitStop (unit); }
void test()
{
start();
usleep (4 * 1000 * 1000); // sleep this thread while audio
plays
stop();
}
This sucks:
-(void) startButton () { start() ; }
-(void) stopButton () { stop() ; }
TIA,
Chris
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40mac.com
This email sent to email@hidden
--
circular reasoning: a syllogism in which the premise depends on or is
equivalent to the conclusion; see, reasoning, circular.
_______________________________________________
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
--
mailto:email@hidden
tel: +1 408 974 4056
________________________________________________________________________
__
"Much human ingenuity has gone into finding the ultimate Before.
The current state of knowledge can be summarized thus:
In the beginning, there was nothing, which exploded" - Terry Pratchett
________________________________________________________________________
__
_______________________________________________
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