2012-08-30 87 views
0

之间kAudioUnitSubType_Reverb2单元以我AuGraph我具有以下情况:的iOS AUGraph连接混合器和kAudioUnitSubType_RemoteIO

采样--------->

   mixer ----> remoteIO 

6回调----->

AudioUnitGraph 0x311E02A: 
Member Nodes: 
    node 1: 'auou' 'rioc' 'appl', instance 0xc66c020 O  
    node 2: 'aumx' 'mcmx' 'appl', instance 0x598f20 O  
    node 3: 'aumu' 'samp' 'appl', instance 0x59ba40 O  
Connections: node 3 bus 0 => node 2 bus 7 [ 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved] 
       node 2 bus 0 => node 1 bus 0 [ 2 ch,  0 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved] 
Input Callbacks: {0x1a7bb1, 0xd1f5648} => node 2 bus 0 [1 ch, 44100 Hz] 
        {0x1a7bb1, 0xd1f5648} => node 2 bus 1 [1 ch, 44100 Hz]  {0x1a7bb1, 0xd1f5648} => node 2 bus 2 [1 ch, 44100 Hz]  
        {0x1a7bb1, 0xd1f5648} => node 2 bus 3 [1 ch, 44100 Hz]  
        {0x1a7bb1, 0xd1f5648} => node 2 bus 4 [1 ch, 44100 Hz]  
        {0x1a7bb1, 0xd1f5648} => node 2 bus 5 [1 ch, 44100 Hz]   
        {0x1a7bb1, 0xd1f5648} => node 2 bus 6 [1 ch, 44100 Hz] 

而且一切工作正常,但格式不匹配。回调工作和采样器 听起来像一个魅力。

现在,我尝试在混响堵塞这样的:

sampl->

混频器---->混响 - > remoteIO

6呼叫 - >

我得到这张图:

AudioUnitGraph 0x313402A: 
    Member Nodes: 
    node 1: 'auou' 'rioc' 'appl', instance 0x569060 O 
    node 2: 'aumx' 'mcmx' 'appl', instance 0x56a210 O 
    node 3: 'aumu' 'samp' 'appl', instance 0x56b200 O 
    node 4: 'aufx' 'rvb2' 'appl', instance 0x56ba30 O 
    Connections: 
    node 3 bus 0 => node 2 bus 7 [ 2 ch, 44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved] 
    node 2 bus 0 => node 4 bus 0 [ 2 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved] 
    node 4 bus 0 => node 1 bus 0 [ 2 ch,  0 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved] 

    Input Callbacks: (the same as before) 

而且错误: AUGraphInitialize错误:-10868 *

连接代码:

result = AUGraphConnectNodeInput (processingGraph, 
      mixerNode,   // source node 
      0,     // source node output bus number 
      revNode,   // destination node 
      0     // desintation node input bus number 
     ); 


result = AUGraphConnectNodeInput (processingGraph, 
                    revNode,   // source node 
                    0,     // source node output bus number 
                    iONode,   // destination node 
                    0     // desintation node input bus number              ); 

我也试图统一格式的混响和混音器:

AudioStreamBasicDescription asbd; 
UInt32 asbdSize = sizeof (asbd); 
memset (&asbd, 0, sizeof (asbd)); 

AudioUnitGetProperty(mixerUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &asbd, &asbdSize); 
AudioUnitSetProperty(reverbUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &asbd, sizeof(asbd)); 

我在做什么错? 对不起,格式不正确,今天加入。

回答

3

我有同样的问题,但发现我不得不从混音器输入的其中一个单元复制ASBD,并将其设置为混音器单元的输出范围。

AudioStreamBasicDescription asbd; 
UInt32 sz = sizeof(asbd); 
result = AudioUnitGetProperty(someUnitBeforeMixer, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &asbd, &sz); 
NSCAssert (result == noErr, @"Unable to get ASBD. Error code: %d '%.4s'", (int) result, (const char *)&result); 
result = AudioUnitSetProperty(mixerUnit, 
           kAudioUnitProperty_StreamFormat, 
           kAudioUnitScope_Output, 
           0, 
           &asbd, 
           sizeof(asbd)); 
NSCAssert (result == noErr, @"Unable to set ASBD. Error code: %d '%.4s'", (int) result, (const char *)&result); 

而不是复制ASBD,你可以手动设置它,如果你知道它应该是什么格式。