summaryrefslogtreecommitdiff
path: root/src/codecs
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-17 17:36:37 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-17 17:36:37 +1100
commitacd6d7890051b9253007941733ea37e4011b1b5e (patch)
tree5a542b3c98fe2a37dd9c10d9093a6e46b2267875 /src/codecs
parentddcbcad6d4771e0ec8228dc1848ebd1dfe303a0b (diff)
downloadtangara-fw-acd6d7890051b9253007941733ea37e4011b1b5e.tar.gz
Progress on own pipeline. Still very WIP
Diffstat (limited to 'src/codecs')
-rw-r--r--src/codecs/codec.hpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/codecs/codec.hpp b/src/codecs/codec.hpp
index 24ba9cfe..5e8763a6 100644
--- a/src/codecs/codec.hpp
+++ b/src/codecs/codec.hpp
@@ -2,16 +2,28 @@
#include <cstddef>
#include <cstdint>
+
+#include "result.hpp"
+
namespace codecs {
- class IAudioDecoder {
+ enum CreateCodecError {};
+
+ auto CreateCodecForExtension(std::string extension) -> cpp::result<std::unique_ptr<ICodec>, CreateCodecError>;
+
+ class ICodec {
public:
- virtual ~IAudioDecoder() {}
+ virtual ~ICodec() {}
+
+ virtual auto CanHandleExtension(std::string extension) -> bool = 0;
+
+ enum Error {};
- virtual auto ProcessData(
+ virtual auto Process(
uint8_t *input,
- size_t input_len,
- uint8_t *output) -> size_t = 0;
+ std::size_t input_len,
+ uint8_t *output,
+ std::size_t output_length) -> cpp::result<size_t, Error> = 0;
};
} // namespace codecs