Odtwarzacz iOS audio remoteIO odtwarzanie podczas nagrywania

Zostałem oskarżony o dodanie VOIP do gry (międzyplatformowej, więc nie mogę tego zrobić za pomocą gamekitu Apple).

Od 3 do 4 dni próbuję zawinąć głowę dookoła urządzenia audio i remoteIO ... Przeoczyłem dziesiątki przykładów i tak dalej, ale za każdym razem stosuje się prosty algorytm do wejścia PCM i odtwarzam go z powrotem na głośniku. Zgodnie z dokumentacją Apple w celu wykonania VOIP powinniśmy użyć kAudioSessionCategory_PlayAndRecord.

UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;

        status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, 
                                         sizeof(audioCategory), 
                                         &audioCategory);
        XThrowIfError(status, "couldn't set audio category");

1) Ale wydaje mi się, że playAndRecord zawsze odtwarza to, co pochodzi z mikrofonu (lub bardziej ekscytująco wywołanie zwrotne PerformThru //aurioTouch), czy się mylę ?

Mam najprostszy zwrot, nie robiąc nic poza AURender

static OSStatus PerformThru(
                            void                        *inRefCon, 
                            AudioUnitRenderActionFlags  *ioActionFlags, 
                            const AudioTimeStamp        *inTimeStamp, 
                            UInt32                      inBusNumber, 
                            UInt32                      inNumberFrames, 
                            AudioBufferList             *ioData)
{
OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData);
    if (err) 
       printf("PerformThru: error %d\n", (int)err);
    return err
}

Z tego wywołania zamierzam wysłać dane do równorzędnego użytkownika (oczywiście nie bezpośrednio, ale dane z niego pochodzą) ...

Nie rozumiem, jak mogę odtwarzać różne dane wyjściowe niż dane wejściowe, z wyjątkiem może z 2 jednostkami, jednym nagraniem, jednym odtwarzaniem, ale wydaje się, że nie jest to to, do czego Apple miało zamiar (nadal akceptując dokumentację).

No i oczywiście nie mogę znaleźć żadnej dokumentacji na ten temat, urządzenie audio jest wciąż dość nieudokumentowane ...

Każdy miałby pomysł na najlepszy sposób, aby to zrobić?

questionAnswers(2)

yourAnswerToTheQuestion