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