summaryrefslogtreecommitdiff
path: root/src/audio/audio_task.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-16 11:40:49 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-16 11:40:49 +1000
commitc635d5011c37c02246135fe0df404631ec111bd6 (patch)
treeb0373eeeb2722b852c75fb28c9df5b30e0f861e0 /src/audio/audio_task.cpp
parent4e27de21e49900963ffa61cc9c0a676bb028f992 (diff)
downloadtangara-fw-c635d5011c37c02246135fe0df404631ec111bd6.tar.gz
Put more audio pipeline wiring in control of the audio fsm
Diffstat (limited to 'src/audio/audio_task.cpp')
-rw-r--r--src/audio/audio_task.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/audio/audio_task.cpp b/src/audio/audio_task.cpp
index 1ebd4e46..99b1c170 100644
--- a/src/audio/audio_task.cpp
+++ b/src/audio/audio_task.cpp
@@ -76,19 +76,16 @@ auto Timer::AddSamples(std::size_t samples) -> void {
}
}
-auto AudioTask::Start(IAudioSource* source, IAudioSink* sink) -> AudioTask* {
+auto AudioTask::Start(std::shared_ptr<IAudioSource> source,
+ std::shared_ptr<SinkMixer> sink) -> AudioTask* {
AudioTask* task = new AudioTask(source, sink);
tasks::StartPersistent<tasks::Type::kAudio>([=]() { task->Main(); });
return task;
}
-AudioTask::AudioTask(IAudioSource* source, IAudioSink* sink)
- : source_(source),
- sink_(sink),
- codec_(),
- mixer_(new SinkMixer(sink)),
- timer_(),
- current_format_() {
+AudioTask::AudioTask(std::shared_ptr<IAudioSource> source,
+ std::shared_ptr<SinkMixer> mixer)
+ : source_(source), mixer_(mixer), codec_(), timer_(), current_format_() {
codec_buffer_ = {
reinterpret_cast<sample::Sample*>(heap_caps_calloc(
kCodecBufferLength, sizeof(sample::Sample), MALLOC_CAP_SPIRAM)),
@@ -133,7 +130,7 @@ auto AudioTask::BeginDecoding(std::shared_ptr<codecs::IStream> stream) -> bool {
timer_.reset();
}
- current_sink_format_ = IAudioSink::Format{
+ current_sink_format_ = IAudioOutput::Format{
.sample_rate = open_res->sample_rate_hz,
.num_channels = open_res->num_channels,
.bits_per_sample = 16,