Async 1.5.0
AsyncAudioSelector.h
Go to the documentation of this file.
1
28#ifndef ASYNC_AUDIO_SELECTOR_INCLUDED
29#define ASYNC_AUDIO_SELECTOR_INCLUDED
30
31
32/****************************************************************************
33 *
34 * System Includes
35 *
36 ****************************************************************************/
37
38#include <map>
39
40
41/****************************************************************************
42 *
43 * Project Includes
44 *
45 ****************************************************************************/
46
47#include <AsyncAudioSource.h>
48
49
50/****************************************************************************
51 *
52 * Local Includes
53 *
54 ****************************************************************************/
55
56
57
58/****************************************************************************
59 *
60 * Forward declarations
61 *
62 ****************************************************************************/
63
64
65
66/****************************************************************************
67 *
68 * Namespace
69 *
70 ****************************************************************************/
71
72namespace Async
73{
74
75
76/****************************************************************************
77 *
78 * Forward declarations of classes inside of the declared namespace
79 *
80 ****************************************************************************/
81
82
83
84/****************************************************************************
85 *
86 * Defines & typedefs
87 *
88 ****************************************************************************/
89
90
91
92/****************************************************************************
93 *
94 * Exported Global Variables
95 *
96 ****************************************************************************/
97
98
99
100/****************************************************************************
101 *
102 * Class definitions
103 *
104 ****************************************************************************/
105
115{
116 public:
121
126
131 void addSource(AudioSource *source);
132
138
144 void setSelectionPrio(AudioSource *source, int prio);
145
151 void enableAutoSelect(AudioSource *source, int prio);
152
158
165 bool autoSelectEnabled(AudioSource *source) const;
166
172
186 void setFlushWait(AudioSource *source, bool flush_wait);
187
195 virtual void resumeOutput(void);
196
197 protected:
198 virtual void allSamplesFlushed(void);
199
200 private:
201 typedef enum
202 {
203 STATE_IDLE, STATE_WRITING, STATE_STOPPED, STATE_FLUSHING
204 } StreamState;
205
206 class Branch;
207 typedef std::map<Async::AudioSource *, Branch *> BranchMap;
208
209 BranchMap m_branch_map;
210 Branch * m_selected_branch;
211 StreamState m_stream_state;
212
214 AudioSelector& operator=(const AudioSelector&);
215 void selectBranch(Branch *branch);
216 Branch *selectedBranch(void) const { return m_selected_branch; }
217 void selectHighestPrioActiveBranch(bool clear_if_no_active);
218 int branchWriteSamples(const float *samples, int count);
219 void branchFlushSamples(void);
220
221 friend class Branch;
222
223}; /* class AudioSelector */
224
225
226} /* namespace */
227
228#endif /* ASYNC_AUDIO_SELECTOR_INCLUDED */
229
230
231
232/*
233 * This file has not been truncated
234 */
235
This file contains the base class for an audio source.
This class is used to select one of many audio streams.
~AudioSelector(void)
Destructor.
bool autoSelectEnabled(AudioSource *source) const
Find out if auto select is enabled or not for the given source.
virtual void allSamplesFlushed(void)
The registered sink has flushed all samples.
void disableAutoSelect(AudioSource *source)
Disable autoselection on the given source.
void addSource(AudioSource *source)
Add an audio source to the selector.
void setSelectionPrio(AudioSource *source, int prio)
Set the prio to be used for selection.
virtual void resumeOutput(void)
Resume audio output to the sink.
void enableAutoSelect(AudioSource *source, int prio)
Enable autoselection on the given source.
void selectSource(AudioSource *source)
Select one of the previously added audio sources.
void setFlushWait(AudioSource *source, bool flush_wait)
Set if this souce want to wait for allSamplesFlushed.
AudioSelector(void)
Default constuctor.
void removeSource(AudioSource *source)
Remove a previously added audio source from the selector.
The base class for an audio source.
Namespace for the asynchronous programming classes.