How to merge two Audio Units into AudioBufferList for AURenderCallback

52 Views Asked by At

Please see code below. All I want to, is to merge bufflist1 and bufflist2, then inset to ioData. But I don't know how.

OSStatus PlayCallback(void *inRefCon,
                        AudioUnitRenderActionFlags *ioActionFlags,
                        const AudioTimeStamp *inTimeStamp,
                        UInt32 inBusNumber,
                        UInt32 inNumberFrames,
                        AudioBufferList *ioData) {
    ALNPlayer *player = (__bridge ALNPlayer *)inRefCon;
    
    OSStatus status;
    
    player->buffList->mBuffers[0].mDataByteSize = CONST_BUFFER_SIZEV3;
    //read audio1 data to bufflist1
    status = AudioConverterFillComplexBuffer(player->audioConverter1, lyInInputDataProcV1, inRefCon, &inNumberFrames, player->buffList1, NULL);
    
    //read audio2 data to bufflist2
    status = AudioConverterFillComplexBuffer(player->audioConverter2, lyInInputDataProcV2, inRefCon, &inNumberFrames, player->buffList2, NULL);
    

    //below is copy bufferlist1 to ioData
    //and now i want to merge bufflist1 and buflist2,then inset to iodata. But I don't know how.
    memcpy(ioData->mBuffers[0].mData, player->buffList->mBuffers[0].mData, player->buffList->mBuffers[0].mDataByteSize);
    

}
0

There are 0 best solutions below