summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_decoder.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-01-26 15:02:57 +1100
committerjacqueline <me@jacqueline.id.au>2023-01-26 15:02:57 +1100
commitf6dcd845fc80da4e3043146e4362258dd8e0c0a1 (patch)
tree91410899a83fcc2dfb1eb3ab4837a11e401366fc /src/audio/include/audio_decoder.hpp
parente7f926e2c376ccd4f4a4d6f4b104f3c23b0059dc (diff)
downloadtangara-fw-f6dcd845fc80da4e3043146e4362258dd8e0c0a1.tar.gz
Switch from MessageBuffer to Queue for pipeline comms
Diffstat (limited to 'src/audio/include/audio_decoder.hpp')
-rw-r--r--src/audio/include/audio_decoder.hpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/audio/include/audio_decoder.hpp b/src/audio/include/audio_decoder.hpp
index 0a2df76d..a2591d25 100644
--- a/src/audio/include/audio_decoder.hpp
+++ b/src/audio/include/audio_decoder.hpp
@@ -4,6 +4,7 @@
#include <cstdint>
#include <memory>
+#include "chunk.hpp"
#include "ff.h"
#include "span.hpp"
@@ -30,11 +31,13 @@ class AudioDecoder : public IAudioElement {
return 1024;
}
+ auto HasUnprocessedInput() -> bool override;
+
auto ProcessStreamInfo(const StreamInfo& info)
-> cpp::result<void, AudioProcessingError> override;
auto ProcessChunk(const cpp::span<std::byte>& chunk)
-> cpp::result<std::size_t, AudioProcessingError> override;
- auto ProcessIdle() -> cpp::result<void, AudioProcessingError> override;
+ auto Process() -> cpp::result<void, AudioProcessingError> override;
AudioDecoder(const AudioDecoder&) = delete;
AudioDecoder& operator=(const AudioDecoder&) = delete;
@@ -42,8 +45,11 @@ class AudioDecoder : public IAudioElement {
private:
std::unique_ptr<codecs::ICodec> current_codec_;
std::optional<StreamInfo> stream_info_;
+ std::optional<ChunkReader> chunk_reader_;
- std::unique_ptr<ChunkWriter> chunk_writer_;
+ std::size_t chunk_size_;
+ bool has_samples_to_send_;
+ bool needs_more_input_;
};
} // namespace audio