/* * 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 = {}, // sample rate * channels * bits per sample / bits per kb .bitrate_kbps = 48000 * 1 * 16 / 1024, }; } 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