From 3836768bb8b95188e6657ab69027d1d9e4b13a77 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 3 Apr 2023 14:06:30 +1000 Subject: new pipeline working(?), but the dac eludes me --- src/audio/include/audio_sink.hpp | 1 + src/audio/include/i2s_audio_output.hpp | 1 + src/audio/include/stream_info.hpp | 13 ++++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_sink.hpp b/src/audio/include/audio_sink.hpp index ed7eb02b..ad63ec2e 100644 --- a/src/audio/include/audio_sink.hpp +++ b/src/audio/include/audio_sink.hpp @@ -15,6 +15,7 @@ class IAudioSink { virtual auto Configure(const StreamInfo::Format& format) -> bool = 0; virtual auto Send(const cpp::span& data) -> void = 0; + virtual auto Log() -> void {} auto buffer() const -> StreamBufferHandle_t { return buffer_; } }; diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp index 77019228..31510a91 100644 --- a/src/audio/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -27,6 +27,7 @@ class I2SAudioOutput : public IAudioSink { auto Configure(const StreamInfo::Format& format) -> bool override; auto Send(const cpp::span& data) -> void override; + auto Log() -> void override; I2SAudioOutput(const I2SAudioOutput&) = delete; I2SAudioOutput& operator=(const I2SAudioOutput&) = delete; diff --git a/src/audio/include/stream_info.hpp b/src/audio/include/stream_info.hpp index 5622517f..5a36384c 100644 --- a/src/audio/include/stream_info.hpp +++ b/src/audio/include/stream_info.hpp @@ -17,12 +17,12 @@ namespace audio { struct StreamInfo { // The number of bytes that are available for consumption within this // stream's buffer. - std::size_t bytes_in_stream; + std::size_t bytes_in_stream{0}; // The total length of this stream, in case its source is finite (e.g. a // file on disk). May be absent for endless streams (internet streams, // generated audio, etc.) - std::optional length_bytes; + std::optional length_bytes{}; struct Encoded { // The codec that this stream is associated with. @@ -42,8 +42,8 @@ struct StreamInfo { bool operator==(const Pcm&) const = default; }; - typedef std::variant Format; - Format format; + typedef std::variant Format; + Format format{}; bool operator==(const StreamInfo&) const = default; }; @@ -91,8 +91,11 @@ class OutputStream { void add(std::size_t bytes) const { raw_->info->bytes_in_stream += bytes; } bool prepare(const StreamInfo::Format& new_format) { - if (new_format == raw_->info->format) { + if (std::holds_alternative(raw_->info->format)) { raw_->info->format = new_format; + raw_->info->bytes_in_stream = 0; + } + if (new_format == raw_->info->format) { return true; } if (raw_->is_incomplete) { -- cgit v1.2.3