cannam@124: #include "portaudiocpp/InterfaceCallbackStream.hxx"
cannam@124: 
cannam@124: #include "portaudiocpp/StreamParameters.hxx"
cannam@124: #include "portaudiocpp/Exception.hxx"
cannam@124: #include "portaudiocpp/CallbackInterface.hxx"
cannam@124: 
cannam@124: namespace portaudio
cannam@124: {
cannam@124: 
cannam@124: 	// ---------------------------------------------------------------------------------==
cannam@124: 
cannam@124: 	InterfaceCallbackStream::InterfaceCallbackStream()
cannam@124: 	{
cannam@124: 	}
cannam@124: 
cannam@124: 	InterfaceCallbackStream::InterfaceCallbackStream(const StreamParameters &parameters, CallbackInterface &instance)
cannam@124: 	{
cannam@124: 		open(parameters, instance);
cannam@124: 	}
cannam@124: 
cannam@124: 	InterfaceCallbackStream::~InterfaceCallbackStream()
cannam@124: 	{
cannam@124: 		try
cannam@124: 		{
cannam@124: 			close();
cannam@124: 		}
cannam@124: 		catch (...)
cannam@124: 		{
cannam@124: 			// ignore all errors
cannam@124: 		}
cannam@124: 	}
cannam@124: 
cannam@124: 	// ---------------------------------------------------------------------------------==
cannam@124: 
cannam@124: 	void InterfaceCallbackStream::open(const StreamParameters &parameters, CallbackInterface &instance)
cannam@124: 	{
cannam@124: 		PaError err = Pa_OpenStream(&stream_, parameters.inputParameters().paStreamParameters(), parameters.outputParameters().paStreamParameters(), 
cannam@124: 			parameters.sampleRate(), parameters.framesPerBuffer(), parameters.flags(), &impl::callbackInterfaceToPaCallbackAdapter, static_cast<void *>(&instance));
cannam@124: 
cannam@124: 		if (err != paNoError)
cannam@124: 		{
cannam@124: 			throw PaException(err);
cannam@124: 		}
cannam@124: 	}
cannam@124: }