#pragma once #include #include #include #include "cbor.h" #include "result.hpp" #include "cbor_decoder.hpp" #include "cbor_encoder.hpp" namespace audio { class StreamInfo { public: enum ParseError { WRONG_TYPE, MISSING_MAP, CBOR_ERROR, }; static auto Create(const uint8_t* buffer, size_t length) -> cpp::result; StreamInfo(cbor::MapDecoder*); StreamInfo() = default; StreamInfo(const StreamInfo&) = default; ~StreamInfo() = default; auto Path() const -> const std::optional& { return path_; } auto Channels() const -> const std::optional& { return channels_; } auto BitsPerSample() const -> const std::optional& { return bits_per_sample_; } auto SampleRate() const -> const std::optional& { return sample_rate_; } auto WriteToMap(cbor::Encoder& encoder) -> cpp::result; private: std::optional path_; std::optional channels_; std::optional bits_per_sample_; std::optional sample_rate_; }; } // namespace audio