Is there a Callback for an iOS Core Audio Unit, if the unit is connected to both an input unit and output unit? -


i have audio unit sitting between 2 other units. say, unit has unit assigned input node, , has unit assigned output node.

i want access audiobufferlist fed unit. access buffer list within callback. however, if unit's input bus connected audio unit, rendercallback never called.

what callback can use access passed-in audio buffer(s) of given unit?

aurendercallbackstruct splittercallback;     splittercallback.inputproc = (aurendercallback) splittercallback;     splittercallback.inputprocrefcon = (__bridge void*) self;     status = audiounitsetproperty(splitterauunit,                                   kaudiounitproperty_setrendercallback,                                   kaudiounitscope_input,                                   0, &splittercallback,  sizeof(splittercallback));     audiounitelement genericoutputbus  = 0;     audiounitconnection genericouttoiounitin;     genericouttoiounitin.sourceaudiounit    = genericauunit;     genericouttoiounitin.sourceoutputnumber = genericoutputbus;     genericouttoiounitin.destinputnumber    = iounitoutputelement;        audiounitsetproperty (                           splitterauunit,                     // connection destination                           kaudiounitproperty_makeconnection,  // property key                           kaudiounitscope_input,              // destination scope                           iounitoutputelement,                // destination element                           &genericouttoiounitin,                // connection definition                           sizeof (genericouttoiounitin)                           );  // callback static osstatus splittercallback(void                        *inrefcon,                                audiounitrenderactionflags  *ioactionflags,                                const audiotimestamp        *intimestamp,                                uint32                      inbusnumber,                                uint32                      innumberframes,                                audiobufferlist             *iodata)     {     @autoreleasepool {         nslog(@"splittercallback"); // never called. :(     } } 

here core audio procedure registering callback within augraph api without breaking api. tested in osx, part of api common ios too. assuming want listen signal input of output unit, 1 unit "upstream" splitterauunit. register callback myrenderproc() in following way:

audiounitaddrendernotify(splitterauunit,                          myrenderproc,                          &player); 

inside callback important check render actions , post render errors:

if (*ioactionflags & kaudiounitrenderaction_postrender){     static int temp_kaudiounitrenderaction_postrendererror = (1 << 8);     if (!(*ioactionflags & temp_kaudiounitrenderaction_postrendererror)){          float32* data = (float32 *)iodata->mbuffers[0].mdata; //just 1 channel!     //    …   …        } }