summaryrefslogtreecommitdiff
path: root/src/codecs/include/codec.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-21 08:00:52 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-21 08:00:52 +1100
commit5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5 (patch)
tree3dbdcf42899c7e0689d83d0d340f89c4aa2bab6e /src/codecs/include/codec.hpp
parent52e03182926d04fc458df745b46153a02800edac (diff)
downloadtangara-fw-5f7444d7956a6cc517ada1b8b96c4f9cdd408fd5.tar.gz
WIP
Diffstat (limited to 'src/codecs/include/codec.hpp')
-rw-r--r--src/codecs/include/codec.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/codecs/include/codec.hpp b/src/codecs/include/codec.hpp
new file mode 100644
index 00000000..5e8763a6
--- /dev/null
+++ b/src/codecs/include/codec.hpp
@@ -0,0 +1,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