Chris@4
|
1 #include "portaudiocpp/AsioDeviceAdapter.hxx"
|
Chris@4
|
2
|
Chris@4
|
3 #include "portaudio.h"
|
Chris@4
|
4 #include "pa_asio.h"
|
Chris@4
|
5
|
Chris@4
|
6 #include "portaudiocpp/Device.hxx"
|
Chris@4
|
7 #include "portaudiocpp/HostApi.hxx"
|
Chris@4
|
8 #include "portaudiocpp/Exception.hxx"
|
Chris@4
|
9
|
Chris@4
|
10 namespace portaudio
|
Chris@4
|
11 {
|
Chris@4
|
12 AsioDeviceAdapter::AsioDeviceAdapter(Device &device)
|
Chris@4
|
13 {
|
Chris@4
|
14 if (device.hostApi().typeId() != paASIO)
|
Chris@4
|
15 throw PaCppException(PaCppException::UNABLE_TO_ADAPT_DEVICE);
|
Chris@4
|
16
|
Chris@4
|
17 device_ = &device;
|
Chris@4
|
18
|
Chris@4
|
19 PaError err = PaAsio_GetAvailableLatencyValues(device_->index(), &minBufferSize_, &maxBufferSize_,
|
Chris@4
|
20 &preferredBufferSize_, &granularity_);
|
Chris@4
|
21
|
Chris@4
|
22 if (err != paNoError)
|
Chris@4
|
23 throw PaException(err);
|
Chris@4
|
24
|
Chris@4
|
25 }
|
Chris@4
|
26
|
Chris@4
|
27 Device &AsioDeviceAdapter::device()
|
Chris@4
|
28 {
|
Chris@4
|
29 return *device_;
|
Chris@4
|
30 }
|
Chris@4
|
31
|
Chris@4
|
32 long AsioDeviceAdapter::minBufferSize() const
|
Chris@4
|
33 {
|
Chris@4
|
34 return minBufferSize_;
|
Chris@4
|
35 }
|
Chris@4
|
36
|
Chris@4
|
37 long AsioDeviceAdapter::maxBufferSize() const
|
Chris@4
|
38 {
|
Chris@4
|
39 return maxBufferSize_;
|
Chris@4
|
40 }
|
Chris@4
|
41
|
Chris@4
|
42 long AsioDeviceAdapter::preferredBufferSize() const
|
Chris@4
|
43 {
|
Chris@4
|
44 return preferredBufferSize_;
|
Chris@4
|
45 }
|
Chris@4
|
46
|
Chris@4
|
47 long AsioDeviceAdapter::granularity() const
|
Chris@4
|
48 {
|
Chris@4
|
49 return granularity_;
|
Chris@4
|
50 }
|
Chris@4
|
51
|
Chris@4
|
52 void AsioDeviceAdapter::showControlPanel(void *systemSpecific)
|
Chris@4
|
53 {
|
Chris@4
|
54 PaError err = PaAsio_ShowControlPanel(device_->index(), systemSpecific);
|
Chris@4
|
55
|
Chris@4
|
56 if (err != paNoError)
|
Chris@4
|
57 throw PaException(err);
|
Chris@4
|
58 }
|
Chris@4
|
59
|
Chris@4
|
60 const char *AsioDeviceAdapter::inputChannelName(int channelIndex) const
|
Chris@4
|
61 {
|
Chris@4
|
62 const char *channelName;
|
Chris@4
|
63 PaError err = PaAsio_GetInputChannelName(device_->index(), channelIndex, &channelName);
|
Chris@4
|
64
|
Chris@4
|
65 if (err != paNoError)
|
Chris@4
|
66 throw PaException(err);
|
Chris@4
|
67
|
Chris@4
|
68 return channelName;
|
Chris@4
|
69 }
|
Chris@4
|
70
|
Chris@4
|
71 const char *AsioDeviceAdapter::outputChannelName(int channelIndex) const
|
Chris@4
|
72 {
|
Chris@4
|
73 const char *channelName;
|
Chris@4
|
74 PaError err = PaAsio_GetOutputChannelName(device_->index(), channelIndex, &channelName);
|
Chris@4
|
75
|
Chris@4
|
76 if (err != paNoError)
|
Chris@4
|
77 throw PaException(err);
|
Chris@4
|
78
|
Chris@4
|
79 return channelName;
|
Chris@4
|
80 }
|
Chris@4
|
81 }
|
Chris@4
|
82
|
Chris@4
|
83
|