summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_decoder.hpp
diff options
context:
space:
mode:
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