86 : player(p), queue(queue) {}
89 bool begin(
int index = 0,
bool isActive =
true) {
92 c.isActive = isActive;
97 AudioPlayerCommand c{AudioPlayerCommandType::End};
101 bool next(
int offset = 1) {
102 AudioPlayerCommand c{AudioPlayerCommandType::Next};
107 bool setIndex(
int idx) {
108 AudioPlayerCommand c{AudioPlayerCommandType::SetIndex};
113 bool setPath(
const char* path) {
114 AudioPlayerCommand c{AudioPlayerCommandType::SetPath};
120 if (queue.size() > 0) processCommands();
121 return player.
copy();
124 size_t copy(
size_t bytes) {
125 if (queue.size() > 0) processCommands();
126 return player.
copy(bytes);
129 void setActive(
bool active) {
130 AudioPlayerCommand c{AudioPlayerCommandType::SetActive};
135 bool setVolume(
float v) {
136 AudioPlayerCommand c{AudioPlayerCommandType::SetVolume};
141 bool setMuted(
bool muted) {
142 AudioPlayerCommand c{AudioPlayerCommandType::SetMuted};
150 QueueT<AudioPlayerCommand>& queue;
154 void processCommands() {
155 AudioPlayerCommand cmd;
157 while (dequeue(cmd)) {
159 case AudioPlayerCommandType::Begin:
160 player.begin(cmd.index, cmd.isActive);
162 case AudioPlayerCommandType::End:
165 case AudioPlayerCommandType::Next:
166 player.next(cmd.offset);
168 case AudioPlayerCommandType::SetIndex:
169 player.setIndex(cmd.index);
171 case AudioPlayerCommandType::SetPath:
172 player.setPath(path.c_str());
174 case AudioPlayerCommandType::SetVolume:
175 player.setVolume(cmd.volume);
177 case AudioPlayerCommandType::SetMuted:
178 player.setMuted(cmd.muted);
180 case AudioPlayerCommandType::SetActive:
181 player.setActive(cmd.isActive);
184 if (queue.size() == 0)
break;
189 bool enqueue(AudioPlayerCommand& c) {
return queue.enqueue(c); }
191 bool dequeue(AudioPlayerCommand& c) {
return queue.dequeue(c); }