From d41f9f703375171d5766840c9edec32ff47bb25d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 29 Feb 2024 12:08:12 +1100 Subject: Use drflac instead of miniflac This one is fast as hell! Does seeking really good too. Thank u Doctor Flac. --- src/codecs/include/dr_flac.hpp | 46 +++++++++++++++++++++++++++++++++++++ src/codecs/include/miniflac.hpp | 51 ----------------------------------------- 2 files changed, 46 insertions(+), 51 deletions(-) create mode 100644 src/codecs/include/dr_flac.hpp delete mode 100644 src/codecs/include/miniflac.hpp (limited to 'src/codecs/include') diff --git a/src/codecs/include/dr_flac.hpp b/src/codecs/include/dr_flac.hpp new file mode 100644 index 00000000..8dcfdaf5 --- /dev/null +++ b/src/codecs/include/dr_flac.hpp @@ -0,0 +1,46 @@ +/* + * Copyright 2023 jacqueline + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +#include "dr_flac.h" +#include "sample.hpp" +#include "source_buffer.hpp" +#include "span.hpp" + +#include "codec.hpp" + +namespace codecs { + +class DrFlacDecoder : public ICodec { + public: + DrFlacDecoder(); + ~DrFlacDecoder(); + + auto OpenStream(std::shared_ptr input,uint32_t offset) + -> cpp::result override; + + auto DecodeTo(cpp::span destination) + -> cpp::result override; + + auto SeekTo(std::size_t target_sample) -> cpp::result override; + + DrFlacDecoder(const DrFlacDecoder&) = delete; + DrFlacDecoder& operator=(const DrFlacDecoder&) = delete; + + private: + std::shared_ptr input_; + drflac *flac_; +}; + +} // namespace codecs diff --git a/src/codecs/include/miniflac.hpp b/src/codecs/include/miniflac.hpp deleted file mode 100644 index d1daca2f..00000000 --- a/src/codecs/include/miniflac.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2023 jacqueline - * - * SPDX-License-Identifier: GPL-3.0-only - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -#include "miniflac.h" -#include "sample.hpp" -#include "source_buffer.hpp" -#include "span.hpp" - -#include "codec.hpp" - -namespace codecs { - -class MiniFlacDecoder : public ICodec { - public: - MiniFlacDecoder(); - ~MiniFlacDecoder(); - - auto OpenStream(std::shared_ptr input,uint32_t offset) - -> cpp::result override; - - auto DecodeTo(cpp::span destination) - -> cpp::result override; - - auto SeekTo(std::size_t target_sample) -> cpp::result override; - - MiniFlacDecoder(const MiniFlacDecoder&) = delete; - MiniFlacDecoder& operator=(const MiniFlacDecoder&) = delete; - - private: - std::shared_ptr input_; - SourceBuffer buffer_; - - std::unique_ptr flac_; - std::array samples_by_channel_; - std::optional current_sample_; -}; - -} // namespace codecs -- cgit v1.2.3