W mojej aplikacji muszę przełączać się między tymi 2 różnymi urządzeniami AudioUnits. Ilekroć przełączam się z VPIO na RemoteIO, następuje spadek głośności nagrywania. Dość znaczny spadek. Brak zmiany głośności odtwarzania. Czy ktoś to zauważył?Rejestrowanie spadku głośności nagrywania między urządzeniami RemoteIO i VPIO
Oto kod, w którym robię przełącznik, który jest wyzwalany przez zmianę trasy. (Nie jestem pewien, czy poprawnie wprowadziłem zmianę, więc proszę o to również tutaj.)
Jak mogę rozwiązać problem spadku głośności nagrywania?
Dzięki, doceniam każdą pomoc, jaką mogę uzyskać.
Molo.
- (void)switchInputBoxTo : (OSType) inputBoxSubType
{
OSStatus result;
if (!remoteIONode) return; // NULL check
// Get info about current output node
AudioComponentDescription outputACD;
AudioUnit currentOutputUnit;
AUGraphNodeInfo(theGraph, remoteIONode, &outputACD, ¤tOutputUnit);
if (outputACD.componentSubType != inputBoxSubType)
{
AUGraphStop(theGraph);
AUGraphUninitialize(theGraph);
result = AUGraphDisconnectNodeInput(theGraph, remoteIONode, 0);
NSCAssert (result == noErr, @"Unable to disconnect the nodes in the audio processing graph. Error code: %d '%.4s'", (int) result, (const char *)&result);
AUGraphRemoveNode(theGraph, remoteIONode);
// Re-init as other type
outputACD.componentSubType = inputBoxSubType;
// Add the RemoteIO unit node to the graph
result = AUGraphAddNode (theGraph, &outputACD, &remoteIONode);
NSCAssert (result == noErr, @"Unable to add the replacement IO unit to the audio processing graph. Error code: %d '%.4s'", (int) result, (const char *)&result);
result = AUGraphConnectNodeInput(theGraph, mixerNode, 0, remoteIONode, 0);
// Obtain a reference to the I/O unit from its node
result = AUGraphNodeInfo (theGraph, remoteIONode, 0, &_remoteIOUnit);
NSCAssert (result == noErr, @"Unable to obtain a reference to the I/O unit. Error code: %d '%.4s'", (int) result, (const char *)&result);
//result = AudioUnitUninitialize(_remoteIOUnit);
[self setupRemoteIOTest]; // reinit all that remoteIO/voiceProcessing stuff
[self configureAndStartAudioProcessingGraph:theGraph];
}
}
Cześć skalista, próbowałem tego. Ponieważ używam AUGraphNodeInfo (theGraph, remoteIONode, 0 i _remoteIOUnit); aby uzyskać instancję remoteIO, wydaje się, że nie mogę używać AudioComponentInstanceDispose (ulega awarii). Przeczytałem post, o którym wydajesz się mówić. Wydaje się nie działać dla mnie:/ – lppier