summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_task.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-04-01 13:22:21 +1100
committerjacqueline <me@jacqueline.id.au>2023-04-19 10:29:38 +1000
commit7c6fd654f50e6665efa4226c6b927f9762734182 (patch)
tree58ccb69068c550e9c2223c1b510cfa525690b731 /src/audio/include/audio_task.hpp
parent3817ec0c77b8d44e54b35ea9f76e7bb4666c6c08 (diff)
downloadtangara-fw-7c6fd654f50e6665efa4226c6b927f9762734182.tar.gz
New pipeline building, still needs proper control
Diffstat (limited to 'src/audio/include/audio_task.hpp')
-rw-r--r--src/audio/include/audio_task.hpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp
index 8db99850..a7b7a0fa 100644
--- a/src/audio/include/audio_task.hpp
+++ b/src/audio/include/audio_task.hpp
@@ -5,38 +5,32 @@
#include <string>
#include "audio_element.hpp"
+#include "audio_sink.hpp"
+#include "dac.hpp"
#include "freertos/portmacro.h"
#include "pipeline.hpp"
+#include "stream_buffer.hpp"
namespace audio {
namespace task {
+
+enum Command { PLAY, PAUSE, QUIT };
+
struct AudioTaskArgs {
Pipeline* pipeline;
- QueueHandle_t input;
+ IAudioSink* sink;
+};
+struct AudioDrainArgs {
+ IAudioSink* sink;
+ std::atomic<Command>* command;
};
extern "C" void AudioTaskMain(void* args);
+extern "C" void AudioDrainMain(void* args);
-enum Command { PLAY, PAUSE, QUIT };
-
-class Handle {
- public:
- explicit Handle(QueueHandle_t input);
- ~Handle();
-
- auto SetStreamInfo() -> void;
- auto Play() -> void;
- auto Pause() -> void;
- auto Quit() -> void;
-
- auto OutputBuffer() -> StreamBufferHandle_t;
-
- private:
- QueueHandle_t input;
-};
-
-auto Start(Pipeline* pipeline) -> Handle*;
+auto StartPipeline(Pipeline* pipeline, IAudioSink* sink) -> void;
+auto StartDrain(IAudioSink* sink) -> void;
} // namespace task