63 snd_mixer_elem_t *elem;
64 long minPlayVol, curPlayVol, maxPlayVol;
65 long minCapVol, curCapVol, maxCapVol;
66 long minComVol, curComVol, maxComVol;
67 int playSwitch, capSwitch, comSwitch;
95 bool mixerFilterExact;
99 uint32_t cfgPBPeriodTime;
100 uint32_t cfgPBBufferTime;
101 uint32_t silenceTime;
102 uint32_t cfgRecBufferTime;
103 uint32_t cfgRecStoreTime;
104 uint32_t cfgRecPeriodTime;
105 uint8_t recNumChannels;
106 uint32_t recSampleRate;
113 struct pollfd *pbFDs;
114 uint32_t actPBBufferTime;
115 uint32_t actPBPeriodTime;
116 snd_pcm_uframes_t pbPeriodSize;
117 uint8_t *periodBuffer;
119 snd_pcm_t *recHandle;
121 struct pollfd *recFDs;
122 uint32_t actRecBufferTime;
123 uint32_t actRecPeriodTime;
124 snd_pcm_uframes_t recPeriodSize;
126 snd_mixer_t *mixerHandle;
128 uint32_t numElements;
136 uint32_t recDataLength;
137 uint32_t recDataOffset;
143 virtual void Main (
void);
146 void SendStateMessage (
void);
150 bool AddStoredSample (player_audio_wav_t *waveData);
151 bool AddStoredSample (
const char *filePath);
155 void ClearQueue (
void);
157 bool AddToQueue (player_audio_wav_t *waveData);
159 bool AddSilence (uint32_t time,
AudioSample *format);
160 void AdvanceQueue (
void);
165 bool SetupPlayBack (
void);
167 void PlaybackCallback (
int numFrames);
170 bool SetupRecord (
void);
171 bool SetRecParams (
void);
172 bool SetupRecordBuffer (uint32_t length);
173 void RecordCallback (
int numFrames);
174 void HandleRecordedData (
void);
175 void PublishRecordedData (
void);
178 void StartPlayback (
void);
179 void StopPlayback (
void);
180 void StartRecording (
void);
181 void StopRecording (
void);
184 bool SetupMixer (
void);
185 bool EnumMixerElements (
void);
189 void CleanUpMixerElements (
MixerElement *elements, uint32_t count);
190 void MixerDetailsToPlayer (player_audio_mixer_channel_list_detail_t *dest);
191 void MixerLevelsToPlayer (player_audio_mixer_channel_list_t *dest);
192 void SetElementLevel (uint32_t index,
float level);
193 void SetElementSwitch (uint32_t index,
player_bool_t active);
194 void PublishMixerData (
void);
195 float LevelToPlayer (
long min,
long max,
long level);
196 long LevelFromPlayer (
long min,
long max,
float level);
197 void PrintMixerElements (
MixerElement *elements, uint32_t count);
200 int HandleWavePlayCmd (player_audio_wav_t *waveData);
201 int HandleSamplePlayCmd (player_audio_sample_item_t *data);
203 int HandleMixerChannelCmd (player_audio_mixer_channel_list_t *data);
204 int HandleSampleLoadReq (player_audio_sample_t *data,
QueuePointer &resp_queue);
205 int HandleSampleRetrieveReq (player_audio_sample_t *data,
QueuePointer &resp_queue);
206 int HandleSampleRecordReq (player_audio_sample_rec_req_t *data,
QueuePointer &resp_queue);
207 int HandleMixerChannelListReq (player_audio_mixer_channel_list_detail_t *data,
QueuePointer &resp_queue);
208 int HandleMixerChannelLevelReq (player_audio_mixer_channel_list_t *data,
QueuePointer &resp_queue);