diff options
Diffstat (limited to 'src/codecs/codec.hpp')
| -rw-r--r-- | src/codecs/codec.hpp | 22 |
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 |
