diff options
Diffstat (limited to 'src/audio/include/audio_task.hpp')
| -rw-r--r-- | src/audio/include/audio_task.hpp | 18 |
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_; |
