воспроизведение аудиоустройства ios при записи
Мне было поручено добавить VOIP в игру (кросс-платформенный, так что могуиспользовать Apple GameKit).
В течение 3 или 4 дней яя пытаюсь обернуть голову вокруг аудиоустройства и удаленного входа ... Я пропустил десятки примеров и тому подобное, но каждый раз он только применяет простой алгоритм к входному PCM и воспроизводит его на динамике. По словам Apple,Документация для того, чтобы сделать VOIP, мы должны использовать kAudioSessionCategory_PlayAndRecord.
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(audioCategory),
&audioCategory);
XThrowIfError(status, "couldn't set audio category");
1) Но мне кажется (мне), что playAndRecord всегда будет воспроизводить то, что исходит от микрофона (или, точнее, обратного вызова PerformThru //aurioTouch), я ошибся ?
У меня самый простой обратный вызов, ничего не делая, кроме 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
}
Из этого обратного вызова яЯ собираюсь отправить данные одноранговому узлу (не напрямую, конечно, но данные будут поступать с него) ...
Я не вижу, как я могу воспроизвести выходной сигнал, отличный от входного, кроме, может быть, с 2-х единиц, одна запись, одна игра, но это не такКажется, это то, что Apple намеревалась (все еще согласно документации).
И, конечно, я не могу найти какую-либо документацию об этом, аудиоустройство все еще в значительной степени недокументировано ...
У кого-нибудь будет идея, как лучше всего это сделать?