blob: 5e8763a6a47d709e54537b32a8baba47a506a0f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#pragma once
#include <cstddef>
#include <cstdint>
#include "result.hpp"
namespace codecs {
enum CreateCodecError {};
auto CreateCodecForExtension(std::string extension) -> cpp::result<std::unique_ptr<ICodec>, CreateCodecError>;
class ICodec {
public:
virtual ~ICodec() {}
virtual auto CanHandleExtension(std::string extension) -> bool = 0;
enum Error {};
virtual auto Process(
uint8_t *input,
std::size_t input_len,
uint8_t *output,
std::size_t output_length) -> cpp::result<size_t, Error> = 0;
};
} // namespace codecs
|