From c1f7adf22700a268ce16ebcdda49aee6e71b53ff Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 16 May 2024 12:20:50 +1000 Subject: Add a 'decoder' for streams already in our native format --- src/codecs/native.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/codecs/native.cpp (limited to 'src/codecs/native.cpp') diff --git a/src/codecs/native.cpp b/src/codecs/native.cpp new file mode 100644 index 00000000..124434e8 --- /dev/null +++ b/src/codecs/native.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2023 jacqueline + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#include "native.hpp" + +#include +#include +#include + +#include "esp_heap_caps.h" +#include "mad.h" + +#include "codec.hpp" +#include "esp_log.h" +#include "result.hpp" +#include "sample.hpp" +#include "types.hpp" + +namespace codecs { + +NativeDecoder::NativeDecoder() : input_() {} + +auto NativeDecoder::OpenStream(std::shared_ptr input, uint32_t offset) + -> cpp::result { + input_ = input; + return OutputFormat{ + .num_channels = 1, + .sample_rate_hz = 48000, + .total_samples = {}, + }; +} + +auto NativeDecoder::DecodeTo(std::span output) + -> cpp::result { + size_t bytes = input_->Read({ + reinterpret_cast(output.data()), + output.size_bytes(), + }); + return OutputInfo{ + .samples_written = bytes / sizeof(sample::Sample), + .is_stream_finished = false, + }; +} + +} // namespace codecs -- cgit v1.2.3