2010-12-16 1 views
2

Donc, je ne trouve rien en ligne qui dit que je ne peux pas faire cela, mais chaque fois que j'essaye de le faire sur l'iPhone, les erreurs sont renvoyées par AudioQueueSetParameter. Plus précisément, si je tente ce code:Réglage du volume d'entrée sur une file d'attente audio

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

Puis-je obtenir l'erreur suivante: kAudioQueueErr_InvalidParameter. La documentation d'Apple indique que cela signifie: "L'ID de paramètre spécifié est invalide". Mais si j'essaie le même code exact dans une file d'attente de sortie, cela fonctionne très bien. Quelqu'un at-il une idée de la raison pour laquelle je peux changer le volume en sortie, mais pas d'entrée?

Merci

Répondre

1

Selon services File d'attente audio d'Apple Référence AudioQueue Les paramètres ne concernent que les files d'attente pour la lecture audio.

Pour obtenir des informations sur votre flux d'entrée, essayez d'utiliser les propriétés 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

Je suppose que vous pouvez simplement multiplier les valeurs PCM des AudioQueueBuffer s par un facteur de volume vous-même pour produire un réglage de volume.

Questions connexes