summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_task.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-10 15:33:00 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-10 15:33:00 +1000
commitd8fc77101dcf80a3643a00b3446dca1e390ce997 (patch)
tree9e03881f3857c7b4c6a0b6e3a062947daecc69d1 /src/audio/include/audio_task.hpp
parent67caeb6e3cda44205ba8fe783274b20dc7ea216e (diff)
downloadtangara-fw-d8fc77101dcf80a3643a00b3446dca1e390ce997.tar.gz
Give codecs complete control of their input files
Diffstat (limited to 'src/audio/include/audio_task.hpp')
-rw-r--r--src/audio/include/audio_task.hpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp
index b27aa039..48f5502c 100644
--- a/src/audio/include/audio_task.hpp
+++ b/src/audio/include/audio_task.hpp
@@ -16,6 +16,8 @@
#include "pipeline.hpp"
#include "sink_mixer.hpp"
#include "stream_info.hpp"
+#include "track.hpp"
+#include "types.hpp"
namespace audio {
@@ -52,32 +54,27 @@ class AudioTask {
auto Main() -> void;
+ AudioTask(const AudioTask&) = delete;
+ AudioTask& operator=(const AudioTask&) = delete;
+
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&, const Duration&) -> bool;
- auto SendToSink(InputStream&) -> void;
+ auto BeginDecoding(std::shared_ptr<codecs::IStream>) -> bool;
+ auto ContinueDecoding() -> bool;
IAudioSource* source_;
IAudioSink* sink_;
+
+ std::shared_ptr<codecs::IStream> stream_;
std::unique_ptr<codecs::ICodec> codec_;
std::unique_ptr<SinkMixer> mixer_;
std::unique_ptr<Timer> timer_;
- bool has_begun_decoding_;
- std::optional<StreamInfo::Format> current_input_format_;
- std::optional<StreamInfo::Pcm> current_output_format_;
- std::optional<StreamInfo::Pcm> current_sink_format_;
+ std::optional<codecs::ICodec::OutputFormat> current_format_;
+ std::optional<IAudioSink::Format> current_sink_format_;
- std::unique_ptr<RawStream> codec_buffer_;
+ cpp::span<sample::Sample> codec_buffer_;
};
} // namespace audio