#pragma once #include #include #include #include #include "cbor.h" #include "result.hpp" #include "sys/_stdint.h" namespace audio { class StreamInfo { public: static auto Parse(CborValue& container) -> cpp::result; StreamInfo() = default; StreamInfo(const StreamInfo&) = default; ~StreamInfo() = default; auto Path() const -> const std::optional& { return path_; } auto Path(const std::string_view& d) -> void { path_ = d; } auto Channels() const -> const std::optional& { return channels_; } auto BitsPerSample(uint8_t bpp) -> void { bits_per_sample_ = bpp; } auto BitsPerSample() const -> const std::optional& { return bits_per_sample_; } auto SampleRate(uint16_t rate) -> void { sample_rate_ = rate; } auto SampleRate() const -> const std::optional& { return sample_rate_; } auto ChunkSize() const -> const std::optional& { return chunk_size_; } auto ChunkSize(std::size_t s) -> void { chunk_size_ = s; } auto Encode(CborEncoder& enc) -> std::optional; private: std::optional path_; std::optional channels_; std::optional bits_per_sample_; std::optional sample_rate_; std::optional chunk_size_; }; } // namespace audio