diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-10 15:33:00 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-10 15:33:00 +1000 |
| commit | d8fc77101dcf80a3643a00b3446dca1e390ce997 (patch) | |
| tree | 9e03881f3857c7b4c6a0b6e3a062947daecc69d1 /src/audio/include/audio_task.hpp | |
| parent | 67caeb6e3cda44205ba8fe783274b20dc7ea216e (diff) | |
| download | tangara-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.hpp | 27 |
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 |
