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 
114 class AudioSelector : public AudioSource
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 
Async::AudioSelector::Branch
friend class Branch
Definition: AsyncAudioSelector.h:277
Async::AudioSelector::allSamplesFlushed
virtual void allSamplesFlushed(void)
The registered sink has flushed all samples.
Async::AudioSelector::~AudioSelector
~AudioSelector(void)
Destructor.
Async::AudioSelector::autoSelectEnabled
bool autoSelectEnabled(AudioSource *source) const
Find out if auto select is enabled or not for the given source.
Async::AudioSelector::removeSource
void removeSource(AudioSource *source)
Remove a previously added audio source from the selector.
Async::AudioSelector::selectSource
void selectSource(AudioSource *source)
Select one of the previously added audio sources.
Async::AudioSelector::disableAutoSelect
void disableAutoSelect(AudioSource *source)
Disable autoselection on the given source.
Async::AudioSource::AudioSource
AudioSource(void)
Default constuctor.
Definition: AsyncAudioSource.h:152
Async::AudioSelector::setFlushWait
void setFlushWait(AudioSource *source, bool flush_wait)
Set if this souce want to wait for allSamplesFlushed.
Async::AudioSelector::resumeOutput
virtual void resumeOutput(void)
Resume audio output to the sink.
Async
Namespace for the asynchronous programming classes.
Definition: AsyncApplication.h:75
Async::AudioSelector::addSource
void addSource(AudioSource *source)
Add an audio source to the selector.
Async::AudioSelector::setSelectionPrio
void setSelectionPrio(AudioSource *source, int prio)
Set the prio to be used for selection.
AsyncAudioSource.h
This file contains the base class for an audio source.
Async::AudioSelector::AudioSelector
AudioSelector(void)
Default constuctor.
Async::AudioSelector::enableAutoSelect
void enableAutoSelect(AudioSource *source, int prio)
Enable autoselection on the given source.