diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-15 10:33:46 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-15 10:33:46 +1000 |
| commit | a2c1dfbabddc2b4abaf8bf27c9ed9d1b99594859 (patch) | |
| tree | 47fa6b1a0d4d6f1160b8d60d04ee9f6d67e10ce4 /src/codecs/include/foxenflac.hpp | |
| parent | 1238437717a49924cb45a12b934b3108c402e864 (diff) | |
| download | tangara-fw-a2c1dfbabddc2b4abaf8bf27c9ed9d1b99594859.tar.gz | |
Add vorbis and flac decoders, flesh out codec interface
vorbis doesn't quite work yet, not sure why. will pick it up again
later.
Diffstat (limited to 'src/codecs/include/foxenflac.hpp')
| -rw-r--r-- | src/codecs/include/foxenflac.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/codecs/include/foxenflac.hpp b/src/codecs/include/foxenflac.hpp new file mode 100644 index 00000000..cce1b762 --- /dev/null +++ b/src/codecs/include/foxenflac.hpp @@ -0,0 +1,38 @@ +/* + * Copyright 2023 jacqueline <me@jacqueline.id.au> + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include <cstddef> +#include <cstdint> +#include <memory> +#include <optional> +#include <string> +#include <utility> + +#include "foxen/flac.h" +#include "span.hpp" + +#include "codec.hpp" + +namespace codecs { + +class FoxenFlacDecoder : public ICodec { + public: + FoxenFlacDecoder(); + ~FoxenFlacDecoder(); + + auto BeginStream(cpp::span<const std::byte>) -> Result<OutputFormat> override; + auto ContinueStream(cpp::span<const std::byte>, cpp::span<std::byte>) + -> Result<OutputInfo> override; + auto SeekStream(cpp::span<const std::byte> input, std::size_t target_sample) + -> Result<void> override; + + private: + fx_flac_t* flac_; +}; + +} // namespace codecs |
