From 9176ef187227ffb56c249c5f321cd1bf50d4cfcc Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 22 Nov 2022 17:05:02 +1100 Subject: Add cbor wrapper, and chunk streaming util --- src/audio/include/stream_info.hpp | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/audio/include/stream_info.hpp (limited to 'src/audio/include/stream_info.hpp') diff --git a/src/audio/include/stream_info.hpp b/src/audio/include/stream_info.hpp new file mode 100644 index 00000000..2b1429ea --- /dev/null +++ b/src/audio/include/stream_info.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include +#include +#include +#include "esp-idf/components/cbor/tinycbor/src/cbor.h" +#include "result.hpp" + +namespace audio { + +class StreamInfo { + public: + enum ParseError { + WRONG_TYPE, + MISSING_MAP, + }; + + static auto Create(const uint8_t *buffer, size_t length) -> cpp::result; + StreamInfo(CborValue& map); + + 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_; } + + enum EncodeError { + OUT_OF_MEMORY, + }; + + auto WriteToStream(CborEncoder encoder) -> cpp::result; + private: + + std::optional path_; + std::optional channels_; + std::optional bits_per_sample_; + std::optional sample_rate_; +}; + +} // namespace audio -- cgit v1.2.3