45 |
AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters); |
AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters); |
46 |
~AudioOutputDeviceJack(); |
~AudioOutputDeviceJack(); |
47 |
|
|
48 |
/** Audio Channel Parameter 'JACK_BINDINGS' |
/** |
49 |
* |
* Audio channel implementation for the JACK audio driver. |
|
* Used to connect to other JACK clients. |
|
50 |
*/ |
*/ |
51 |
class ParameterJackBindings : public DeviceRuntimeParameterStrings { |
class AudioChannelJack : public AudioChannel { |
52 |
public: |
public: |
53 |
ParameterJackBindings(AudioChannel* pChannel, std::vector<String> InitialBindings) : DeviceRuntimeParameterStrings(InitialBindings) { this->pChannel = pChannel; } |
/** Audio Channel Parameter 'NAME' |
54 |
virtual String Description() { return "Bindings to other JACK clients"; } |
* |
55 |
virtual bool Fix() { return false; } |
* Used to assign an arbitrary name to an audio channel. |
56 |
virtual std::vector<String> PossibilitiesAsString() { return std::vector<String>(); /* TODO: to be implemented */ } |
*/ |
57 |
virtual void OnSetValue(std::vector<String> vS) { /* TODO: code to connect to other jack clients */ } |
class ParameterName : public AudioChannel::ParameterName { |
58 |
|
public: |
59 |
|
ParameterName(AudioChannelJack* pChannel); |
60 |
|
virtual void OnSetValue(String s); |
61 |
|
protected: |
62 |
|
AudioChannelJack* pChannel; |
63 |
|
}; |
64 |
|
|
65 |
|
/** Audio Channel Parameter 'JACK_BINDINGS' |
66 |
|
* |
67 |
|
* Used to connect to other JACK clients. |
68 |
|
*/ |
69 |
|
class ParameterJackBindings : public DeviceRuntimeParameterStrings { |
70 |
|
public: |
71 |
|
ParameterJackBindings(AudioChannelJack* pChannel); |
72 |
|
virtual String Description(); |
73 |
|
virtual bool Fix(); |
74 |
|
virtual std::vector<String> PossibilitiesAsString(); |
75 |
|
virtual void OnSetValue(std::vector<String> vS); |
76 |
|
static String Name(); |
77 |
|
protected: |
78 |
|
AudioChannelJack* pChannel; |
79 |
|
}; |
80 |
protected: |
protected: |
81 |
AudioChannel* pChannel; |
AudioChannelJack(uint ChannelNr, AudioOutputDeviceJack* pDevice) throw (AudioOutputException); |
82 |
|
~AudioChannelJack(); |
83 |
|
friend class AudioOutputDeviceJack; |
84 |
|
private: |
85 |
|
AudioOutputDeviceJack* pDevice; |
86 |
|
jack_port_t* hJackPort; |
87 |
|
uint ChannelNr; |
88 |
|
|
89 |
|
float* CreateJackPort(uint ChannelNr, AudioOutputDeviceJack* pDevice) throw (AudioOutputException); |
90 |
}; |
}; |
91 |
|
|
92 |
// derived abstract methods from class 'AudioOutputDevice' |
// derived abstract methods from class 'AudioOutputDevice' |
93 |
virtual void Play(); |
virtual void Play(); |
94 |
virtual bool IsPlaying(); |
virtual bool IsPlaying(); |
95 |
virtual void Stop(); |
virtual void Stop(); |
|
virtual void AcquireChannels(uint uiChannels); |
|
96 |
virtual uint MaxSamplesPerCycle(); |
virtual uint MaxSamplesPerCycle(); |
97 |
virtual uint SampleRate(); |
virtual uint SampleRate(); |
98 |
|
virtual AudioChannel* CreateChannel(uint ChannelNr); |
99 |
|
|
100 |
|
|
101 |
static String Name(); |
static String Name(); |
102 |
|
|
104 |
|
|
105 |
static String Description(); |
static String Description(); |
106 |
static String Version(); |
static String Version(); |
|
static std::map<String,DeviceCreationParameter*> AvailableParameters(); |
|
107 |
|
|
108 |
int Process(uint Samples); // FIXME: should be private |
int Process(uint Samples); // FIXME: should be private |
109 |
protected: |
protected: |
110 |
AudioOutputDeviceJack(String* AutoConnectPortIDs = NULL, uint AutoConnectPorts = 0); |
AudioOutputDeviceJack(String* AutoConnectPortIDs = NULL, uint AutoConnectPorts = 0); |
111 |
private: |
private: |
112 |
ConditionServer csIsPlaying; |
ConditionServer csIsPlaying; |
113 |
uint uiMaxSamplesPerCycle; |
uint uiMaxSamplesPerCycle; |
114 |
jack_client_t* hJackClient; |
jack_client_t* hJackClient; |
|
std::vector<jack_port_t*> hJackPorts; |
|
115 |
}; |
}; |
116 |
|
|
117 |
// Callback functions for the libjack API |
// Callback functions for the libjack API |