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 
72 namespace 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:
120  AudioSelector(void);
121 
125  ~AudioSelector(void);
126 
131  void addSource(AudioSource *source);
132 
137  void removeSource(AudioSource *source);
138 
144  void setSelectionPrio(AudioSource *source, int prio);
145 
151  void enableAutoSelect(AudioSource *source, int prio);
152 
157  void disableAutoSelect(AudioSource *source);
158 
165  bool autoSelectEnabled(AudioSource *source) const;
166 
171  void selectSource(AudioSource *source);
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 
void addSource(AudioSource *source)
Add an audio source to the selector.
virtual void allSamplesFlushed(void)
The registered sink has flushed all samples.
AudioSelector(void)
Default constuctor.
void removeSource(AudioSource *source)
Remove a previously added audio source from the selector.
bool autoSelectEnabled(AudioSource *source) const
Find out if auto select is enabled or not for the given source.
This file contains the base class for an audio source.
~AudioSelector(void)
Destructor.
void disableAutoSelect(AudioSource *source)
Disable 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.
virtual void resumeOutput(void)
Resume audio output to the sink.
void setSelectionPrio(AudioSource *source, int prio)
Set the prio to be used for selection.
Namespace for the asynchronous programming classes.
The base class for an audio source.
This class is used to select one of many audio streams.
void enableAutoSelect(AudioSource *source, int prio)
Enable autoselection on the given source.