mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-03 23:53:55 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "portaudiocpp/AsioDeviceAdapter.hxx"
 | 
						|
 | 
						|
#include "portaudio.h"
 | 
						|
#include "pa_asio.h"
 | 
						|
 | 
						|
#include "portaudiocpp/Device.hxx"
 | 
						|
#include "portaudiocpp/HostApi.hxx"
 | 
						|
#include "portaudiocpp/Exception.hxx"
 | 
						|
 | 
						|
namespace portaudio
 | 
						|
{
 | 
						|
	AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
 | 
						|
	{
 | 
						|
		if (device.hostApi().typeId() != paASIO)
 | 
						|
			throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
 | 
						|
 | 
						|
		device_ = &device;
 | 
						|
 | 
						|
		PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_, 
 | 
						|
			&preferredBufferSize_, &granularity_);
 | 
						|
 | 
						|
		if (err != paNoError)
 | 
						|
			throw PaException(err);
 | 
						|
 | 
						|
	}
 | 
						|
 | 
						|
	Device &AsioDeviceAdapter::device()
 | 
						|
	{
 | 
						|
		return *device_;
 | 
						|
	}
 | 
						|
 | 
						|
	long AsioDeviceAdapter::minBufferSize() const
 | 
						|
	{
 | 
						|
		return minBufferSize_;
 | 
						|
	}
 | 
						|
 | 
						|
	long AsioDeviceAdapter::maxBufferSize() const
 | 
						|
	{
 | 
						|
		return maxBufferSize_;
 | 
						|
	}
 | 
						|
 | 
						|
	long AsioDeviceAdapter::preferredBufferSize() const
 | 
						|
	{
 | 
						|
		return preferredBufferSize_;
 | 
						|
	}
 | 
						|
 | 
						|
	long AsioDeviceAdapter::granularity() const
 | 
						|
	{
 | 
						|
		return granularity_;
 | 
						|
	}
 | 
						|
 | 
						|
	void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
 | 
						|
	{
 | 
						|
		PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
 | 
						|
 | 
						|
		if (err != paNoError)
 | 
						|
			throw PaException(err);
 | 
						|
	}
 | 
						|
 | 
						|
	const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
 | 
						|
	{
 | 
						|
		const char *channelName;
 | 
						|
		PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName);
 | 
						|
 | 
						|
		if (err != paNoError)
 | 
						|
			throw PaException(err);
 | 
						|
 | 
						|
		return channelName;
 | 
						|
	}
 | 
						|
 | 
						|
	const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
 | 
						|
	{
 | 
						|
		const char *channelName;
 | 
						|
		PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName);
 | 
						|
 | 
						|
		if (err != paNoError)
 | 
						|
			throw PaException(err);
 | 
						|
 | 
						|
		return channelName;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
 |