Настройка громкости входа в аудио-очереди - PullRequest
2 голосов
/ 16 декабря 2010

Так что я не могу найти в Интернете ничего, что говорит, что я не могу этого сделать, но всякий раз, когда я пытаюсь сделать это на iPhone, ошибки возвращаются из AudioQueueSetParameter. В частности, если я попробую этот код:

AudioQueueParameterValue val = f;
XThrowIfError(AudioQueueSetParameter(mQueue, kAudioQueueParam_Volume, val), "set queue volume");

Тогда я получаю следующую ошибку: kAudioQueueErr_InvalidParameter. В какой документации Apple говорится, что это означает: «Указанный идентификатор параметра недействителен».

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

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Согласно Справочник Apple Audio Queue Services Reference Параметры AudioQueue применяются только к аудио-очередям воспроизведения.

Чтобы получить информацию о вашем входном потоке, попробуйте использовать свойства AudioQueue.

// streamDescription here means your AudioStreamBasicDescription
UInt32 levelSize = sizeof(AudioQueueLevelMeterState) * streamDescription.mChannelsPerFrame;
AudioQueueLevelMeterState *level = (AudioQueueLevelMeterState*)malloc(levelSize);
if (AudioQueueGetProperty(inQueue,
                          kAudioQueueProperty_CurrentLevelMeter,
                          &levelSize,
                          &level) == noErr) {
    printf("Current peak: %f", level[0].mPeakPower);
}
0 голосов
/ 09 февраля 2017

Полагаю, вы могли бы просто умножить значения PCM AudioQueueBuffer s на некоторый коэффициент громкости, чтобы произвести регулировку громкости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...