summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_task.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-07-26 17:11:23 +1000
committerjacqueline <me@jacqueline.id.au>2023-07-26 17:11:23 +1000
commit9b1b401dcb986a26d10bcc898be670653acc2d3f (patch)
tree697b14553dc75ddaab060406cd62ee4b08f05e9e /src/audio/include/audio_task.hpp
parentf94be3db2f2bb6c1b359744cb915683095e4ee80 (diff)
downloadtangara-fw-9b1b401dcb986a26d10bcc898be670653acc2d3f.tar.gz
big cleanup of new encoder + stream buffer types
Diffstat (limited to 'src/audio/include/audio_task.hpp')
-rw-r--r--src/audio/include/audio_task.hpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp
index f80c8878..ae4c2221 100644
--- a/src/audio/include/audio_task.hpp
+++ b/src/audio/include/audio_task.hpp
@@ -14,6 +14,7 @@
#include "audio_source.hpp"
#include "codec.hpp"
#include "pipeline.hpp"
+#include "stream_info.hpp"
namespace audio {
@@ -27,10 +28,13 @@ class Timer {
auto AddBytes(std::size_t) -> void;
private:
+ auto bytes_to_samples(uint32_t) -> uint32_t;
+
StreamInfo::Pcm format_;
uint32_t current_seconds_;
uint32_t current_sample_in_second_;
+
uint32_t total_duration_seconds_;
};
@@ -43,14 +47,24 @@ class AudioTask {
private:
AudioTask(IAudioSource* source, IAudioSink* sink);
+ auto HandleNewStream(const InputStream&) -> bool;
+
+ auto BeginDecoding(InputStream&) -> bool;
+ auto ContinueDecoding(InputStream&) -> bool;
+ auto FinishDecoding(InputStream&) -> void;
+
+ auto ForwardPcmStream(StreamInfo::Pcm&, cpp::span<const std::byte>) -> bool;
+
+ auto ConfigureSink(const StreamInfo::Pcm&) -> bool;
+
IAudioSource* source_;
IAudioSink* sink_;
std::unique_ptr<codecs::ICodec> codec_;
std::unique_ptr<Timer> timer_;
- bool is_new_stream_;
+ bool has_begun_decoding_;
std::optional<StreamInfo::Format> current_input_format_;
- std::optional<StreamInfo::Format> current_output_format_;
+ std::optional<StreamInfo::Pcm> current_output_format_;
std::byte* sample_buffer_;
std::size_t sample_buffer_len_;