From f6dcd845fc80da4e3043146e4362258dd8e0c0a1 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 26 Jan 2023 15:02:57 +1100 Subject: Switch from MessageBuffer to Queue for pipeline comms --- src/audio/audio_playback.cpp | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) (limited to 'src/audio/audio_playback.cpp') diff --git a/src/audio/audio_playback.cpp b/src/audio/audio_playback.cpp index 7462b4f6..fae096d0 100644 --- a/src/audio/audio_playback.cpp +++ b/src/audio/audio_playback.cpp @@ -18,9 +18,6 @@ namespace audio { -// TODO: idk -static const std::size_t kMinElementBufferSize = 1024; - auto AudioPlayback::create(drivers::GpioExpander* expander, std::shared_ptr storage) -> cpp::result, Error> { @@ -37,8 +34,6 @@ auto AudioPlayback::create(drivers::GpioExpander* expander, auto playback = std::make_unique(); // Configure the pipeline - source->InputBuffer(&playback->stream_start_); - sink->OutputBuffer(&playback->stream_end_); playback->ConnectElements(source.get(), codec.get()); playback->ConnectElements(codec.get(), sink.get()); @@ -52,9 +47,7 @@ auto AudioPlayback::create(drivers::GpioExpander* expander, return playback; } -// TODO(jacqueline): think about sizes -AudioPlayback::AudioPlayback() - : stream_start_(128, 256), stream_end_(128, 256) {} +AudioPlayback::AudioPlayback() {} AudioPlayback::~AudioPlayback() { for (auto& element : element_handles_) { @@ -63,33 +56,16 @@ AudioPlayback::~AudioPlayback() { } auto AudioPlayback::Play(const std::string& filename) -> void { - StreamInfo info; - info.Path(filename); - - std::array dest; - auto len = WriteMessage( - TYPE_STREAM_INFO, [&](auto enc) { return info.Encode(enc); }, dest); + auto info = std::make_unique(); + info->Path(filename); + auto event = StreamEvent::CreateStreamInfo(nullptr, std::move(info)); - if (len.has_error()) { - // TODO. - return; - } - - // TODO: short delay, return error on fail - xMessageBufferSend(*stream_start_.Handle(), dest.data(), len.value(), - portMAX_DELAY); + xQueueSend(input_handle_, event.release(), portMAX_DELAY); } auto AudioPlayback::ConnectElements(IAudioElement* src, IAudioElement* sink) -> void { - std::size_t chunk_size = - std::max(src->InputMinChunkSize(), sink->InputMinChunkSize()); - std::size_t buffer_size = std::max(kMinElementBufferSize, chunk_size * 2); - - auto buffer = std::make_unique(chunk_size, buffer_size); - src->OutputBuffer(buffer.get()); - sink->OutputBuffer(buffer.get()); - element_buffers_.push_back(std::move(buffer)); + src->OutputEventQueue(sink->InputEventQueue()); } } // namespace audio -- cgit v1.2.3