void CCoreAudioUnit::Close() { if (!m_Initialized && !m_audioUnit) return; if (m_renderProc) SetInputSource(NULL); Stop(); if (m_busNumber != INVALID_BUS) { OSStatus ret = AUGraphDisconnectNodeInput(m_audioGraph, m_audioNode, m_busNumber); if (ret) { CLog::Log(LOGERROR, "CCoreAudioUnit::Close: Unable to disconnect AudioUnit. Error = %s", GetError(ret).c_str()); } ret = AUGraphRemoveNode(m_audioGraph, m_audioNode); if (ret) { CLog::Log(LOGERROR, "CCoreAudioUnit::Close: Unable to disconnect AudioUnit. Error = %s", GetError(ret).c_str()); } } AUGraphUpdate(m_audioGraph, NULL); m_Initialized = false; m_audioUnit = NULL; m_audioNode = NULL; m_pSource = NULL; }
bool AudioConnection::disconnect(AudioGraph *graph) { if (!m_connected || !m_sourceAudioNode) return true; DEBUG_AUDIO_GRAPH("Connection" << int(this) << "disconnect" << int(m_sourceAudioNode) << m_sourceOutputBus << "->" << int(m_sinkAudioNode) << m_sinkInputBus) AUNode sinkIn = m_sinkAudioNode->getInputAUNode(); AUGraphDisconnectNodeInput(graph->audioGraphRef(), sinkIn, m_sinkInputBus); m_connected = false; return true; }
void AudioUnitNode::disconnectInput(UInt32 inputCh) { checkError(AUGraphDisconnectNodeInput(mGraph, mNode, inputCh), "Fail AUGraphDisconnectNodeInput"); }
bool FCoreAudioSoundSource::DetachFromAUGraph() { AURenderCallbackStruct Input; Input.inputProc = NULL; Input.inputProcRefCon = NULL; SAFE_CA_CALL( AudioUnitSetProperty( SourceUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, 0, &Input, sizeof( Input ) ) ); if( StreamSplitterNode ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), StreamSplitterNode, 0 ) ); } if( ReverbNode ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), ReverbNode, 0 ) ); } if( RadioNode ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), RadioNode, 0 ) ); } if( EQNode ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), EQNode, 0 ) ); } if( StreamMergerNode ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), StreamMergerNode, 0 ) ); } if( AudioChannel ) { if( Buffer->NumChannels < 3 ) { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), AudioDevice->GetMixer3DNode(), MixerInputNumber ) ); AudioDevice->SetFreeMixer3DInput( MixerInputNumber ); } else { SAFE_CA_CALL( AUGraphDisconnectNodeInput( AudioDevice->GetAudioUnitGraph(), AudioDevice->GetMatrixMixerNode(), MixerInputNumber ) ); AudioDevice->SetFreeMatrixMixerInput( MixerInputNumber ); } } if( StreamMergerNode ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), StreamMergerNode ) ); } if( EQNode ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), EQNode ) ); } if( RadioNode ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), RadioNode ) ); } if( ReverbNode ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), ReverbNode ) ); } if( StreamSplitterNode ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), StreamSplitterNode ) ); } if( AudioChannel ) { SAFE_CA_CALL( AUGraphRemoveNode( AudioDevice->GetAudioUnitGraph(), SourceNode ) ); } SAFE_CA_CALL( AUGraphUpdate( AudioDevice->GetAudioUnitGraph(), NULL ) ); AudioConverterDispose( CoreAudioConverter ); CoreAudioConverter = NULL; StreamMergerNode = 0; StreamMergerUnit = NULL; EQNode = 0; EQUnit = NULL; RadioNode = 0; RadioUnit = NULL; ReverbNode = 0; ReverbUnit = NULL; StreamSplitterNode = 0; StreamSplitterUnit = NULL; SourceNode = 0; SourceUnit = NULL; MixerInputNumber = -1; GAudioChannels[AudioChannel] = NULL; AudioChannel = 0; return true; }
JNIEXPORT jint JNICALL Java_com_apple_audio_toolbox_AUGraph_AUGraphDisconnectNodeInput (JNIEnv *, jclass, jint inGraph, jint inDestNode, jint inDestInputNumber) { return (jint)AUGraphDisconnectNodeInput((AUGraph)inGraph, (AUNode)inDestNode, (UInt32)inDestInputNumber); }