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