Hi,
I have a problem with my application, and I'm not sure it is my fault,
the driver, coreAudio or the hardware.
My software plays back audio/video I'm doing all these things by my
self, coreAudio and video I use QuickTime vOut and I send the frames
by myself one by one to the video card.
I'm using DeckLink Extreme card and 2.5 Ghz G5 latest MacOSX.
I'm playing 3 clips: one clip is about 30 seconds, 2nd clip is 1.5
second other one is .5 second. I'm looping these 3 clips endlessly.
On certain configurations (1.8 ghz G5) there is no problem but on my I
have the following problem:
The problem manifest themselves in 2 ways:
1. The Audio suddenly jumps (I haven't heard/seen the jump) but after
looking at the clips being played the audio has jumped for 1 second
(backwards) (almost it is a little bit less). The gap doesn't increase
it stays the same.
I have discussed this issue before this week. But now I noticed a
second kind of error.
2. The audio is being echoed. I hear the audio twice with second one
in one second delay.
So i recorded some audio of the result that comes out the Decklink
Video Card:
So I uploaded a good sound which is about 58 seconds that I recorded:
http://www.sky4studios.com/goodaudio.mov
and I uploaded one with the Echo.
http://www.sky4studios.com/badaudio.mov
Question 1:
===========
Is it possible that coreAudio causes this kind of problem or would
this be more a driver/hardware issue?
I currently tried this with the "Built In Audio" output but never had
this issue,... but that's not really a proof the problem can take some
hours before it happens...
Question 2:
===========
Has any one suggestions on how I can trace this issue to figure out
what's going on. Currently the only idea I have is to copy the samples
that I'm sending to the coreAudio "AudioBufferList" and store them to
disk. But anyone else suggestions.
Regards and thanks for any feedback,
Marc Van Olmen
ps:
More Technical details about coreAudio:
I upgraded my coreAudio calls to V2 API after Williams Stewart
suggestions of last week.
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_HALOutput;//
kAudioUnitSubType_DefaultOutput; kAudioUnitSubType_HALOutput
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
comp = FindNextComponent(NULL, &desc);
BAIL_NULL(comp);
BAIL_OSERROR(OpenAComponent(comp, &fOutputAudioUnit));
if (aDeviceID != kAudioDeviceUnknown) {
//Set the Current Device to the Default Output Unit.
BAIL_OSERROR(AudioUnitSetProperty(fOutputAudioUnit,
kAudioOutputUnitProperty_CurrentDevice,
kAudioUnitScope_Global,
0,
&aDeviceID,
sizeof(aDeviceID)));
}
BAIL_OSERROR(AudioUnitInitialize(fOutputAudioUnit));
// Get the format that the AudioUnit expects us to give it
input.inputProc = cNode_AudioOutput::DoAudioOutputCallback;
input.inputProcRefCon = this;
BAIL_OSERROR(AudioUnitSetProperty( fOutputAudioUnit,
kAudioUnitProperty_SetRenderCallback,
kAudioUnitScope_Global,
0,
&input,
sizeof(input)));