Использование iOS 3d Mixer - PullRequest
1 голос
/ 20 июня 2011

У меня достаточно простая установка AUGraph с многоканальным микшером, подключенным к блоку ввода / вывода. Воспроизведение доступно через функцию обратного вызова, и все работает хорошо.

Я пытаюсь переключиться на 3D-микшер вместо многоканального микшера. Поэтому я переключил параметр с kAudioUnitSubType_MultiChannelMixer на kAudioUnitSubType_AU3DMixerEmbedded и оставил все остальные настройки такими же.

Результатом было что-то вроде высокого звука, который, казалось, начал звучать как-то, а затем стал просто нытьем. Я просмотрел параметры каждого модуля 3D-микшера и установил их по умолчанию, но изменений не было. Включение и выключение параметра k3DMixerParam_Enable, тем не менее, помогло отключить и включить звук воспроизведения.

Какие настройки я мог пропустить? или знаете где найти пример работающего 3d микшера?

Ответы [ 3 ]

3 голосов
/ 19 апреля 2012

Как уже указывалось, для 3D-микшера требуются моновходы. Но вы также должны использовать UInt16 в качестве входного образца данных. Это рабочее AudioStreamBasicDescription:

AudioStreamBasicDescription streamFormat = {0};
size_t bytesPerSample = sizeof (UInt16);

streamFormat.mFormatID          = kAudioFormatLinearPCM;
streamFormat.mFormatFlags       = kAudioFormatFlagsCanonical;
streamFormat.mBytesPerPacket    = bytesPerSample;
streamFormat.mFramesPerPacket   = 1;
streamFormat.mBytesPerFrame     = bytesPerSample;
streamFormat.mChannelsPerFrame  = 1;
streamFormat.mBitsPerChannel    = 8 * bytesPerSample;
streamFormat.mSampleRate        = graphSampleRate;

// Set the input stream format of the desired 3D mixer unit audio bus
AudioUnitSetProperty (
                      mixerUnit,
                      kAudioUnitProperty_StreamFormat,
                      kAudioUnitScope_Input,
                      audioBus,
                      &streamFormat,
                      sizeof (streamFormat)
                      );
1 голос
/ 05 марта 2015

Как уже упоминалось во всех ответах: для 3D-микшера в iOS требуются монофонические входы.

В iOS 8 / Xcode 6 концепция канонических форматов устарела, и я нашел этот (и только этот) формат монопотокаописание работы в качестве формата потока входной шины 3D-микшера:

AudioStreamBasicDescription monoStreamFormat = {0};
monoStreamFormat.mSampleRate        = sampleRate;
monoStreamFormat.mFormatID          = kAudioFormatLinearPCM;
monoStreamFormat.mFormatFlags       = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
monoStreamFormat.mBitsPerChannel    = 16;
monoStreamFormat.mChannelsPerFrame  = 1;
monoStreamFormat.mFramesPerPacket   = 1;
monoStreamFormat.mBytesPerPacket    = 2;
monoStreamFormat.mBytesPerFrame     = 2;

Частота дискретизации должна быть установлена, а затем получена из AVAudioSession.

. Установите этот формат на выходе аудиоУстройство подключено к входу 3D Mixer.Что, вероятно, является модулем AUConverter ...

Обратите внимание, однако, что это не было проверено для

0 голосов
/ 21 июня 2011

Для 3D-микшера требовались моновходы.

http://lists.apple.com/archives/coreaudio-api/2010/Sep/msg00144.html

...