/* * Copyright 2025 ayumi * * SPDX-License-Identifier: GPL-3.0-only */ #pragma once #include #include #include #include #include #include #include "wavpack.h" #include "sample.hpp" #include "codec.hpp" namespace codecs { class WavPackDecoder : public ICodec { public: WavPackDecoder(); ~WavPackDecoder(); auto OpenStream(std::shared_ptr input, uint32_t offset) -> cpp::result override; auto DecodeTo(std::span destination) -> cpp::result override; WavPackDecoder(const WavPackDecoder&) = delete; WavPackDecoder& operator=(const WavPackDecoder&) = delete; private: std::shared_ptr input_; WavpackContext wavpack_; int32_t *buf_; uint8_t bitdepth_; uint8_t channels_; size_t size_; }; } // namespace codecs