2015-03-23 7 views
0

У меня есть настройка AUGraph и рабочая, она состоит из многоканального микшера (с одним монофоническим входом), который подает блок RemoteIO (kAudioUnitSubType_RemoteIO) для вывода на динамик. Я реализовал единственный входной микшер, чтобы иметь возможность панорамировать источник звука между левыми и правыми выходными каналами. Это прекрасно работает.Многоканальный микшер + блок обработки голоса для голосовой связи

Как это приложение VOIP, я экспериментировал с использованием модуля ввода-вывода голосовой почты (kAudioUnitSubType_VoiceProcessingIO) вместо удаленного модуля ввода-вывода (kAudioUnitSubType_RemoteIO). За описанием Apple, этот блок должен вести себя как удаленный блок ввода-вывода с некоторыми дополнительными функциями ...

Блок голосовой обработки ввода/вывода (подтип kAudioUnitSubType_VoiceProcessingIO) имеет характеристики блока удаленного ввода/вывода и добавляет подавление эха для двусторонней дуплексной связи. Он также добавляет автоматическую коррекцию усиления, настройку качества обработки речи и подавление звука. Это правильный модуль ввода-вывода для использования в приложениях VoIP (Voice over Internet Protocol).

Но я отмечаю, что, когда я переключаюсь на блок ввода-вывода для голосовой обработки, я теряю возможность панорамирования с помощью микшера. Любые идеи относительно того, что здесь происходит? Является ли модуль ввода-вывода голосовой почты монотонным?

+0

Каковы ваши форматы потока? Я не думаю, что блок ввода-вывода VP по своей сути является монофоническим. –

+0

Вход микшера имеет следующий формат: AudioStreamBasicDescription audioFormat = {0}; audioFormat.mSampleRate \t \t \t = 16000.00; audioFormat.mFormatID \t \t \t = kAudioFormatLinearPCM; audioFormat.mFormatFlags \t \t = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; audioFormat.mFramesPerPacket \t = 1; audioFormat.mCannelsPerFrame \t = 1; audioFormat.mBitsPerChannel \t \t = 16; audioFormat.mBytesPerPacket \t \t = 2; audioFormat.mBytesPerFrame \t \t = 2; –

+0

хорошо, это выглядит правильно. Если у вас есть код на github/gist, я могу взглянуть, но его трудно понять, что происходит без дополнительного контекста или информации. Как то, что означает * потеряющая способность панорамирования * означает? Есть ли ошибка, которую бросает или панорамирует, просто перестает работать? –

ответ

1

Для моего конкретного AUGraph, многоканального выходного сигнала микшера, подающего модуль ввода-вывода, сброс ASBD для области ввода IO-блока всегда показывает 2 канала на кадр. Как я понимаю из документации, выход Multichannel Mixer является стереофоническим.

Я сбрасывал ASBD для объема вывода модуля RemoteIO, и в действительности ASBD показывает 2 канала на кадр. Попытка перезаписать это на 1 канал привела к ошибке kAudioUnitErr_PropertyNotWritable.

Затем я переключил подтип на блок VPIO. Сбрасывание ASBD для объема вывода показывает 1 канал на кадр. И, как и выше, попытка переписать это на 2 канала также привела к той же ошибке, которая не записывается.

Так что, по крайней мере, для моего конкретного AUGraph я должен сделать вывод, что блок VPIO по своей сути монофоничен.