#pragma once #include "ehs/EHS.h" #include "ehs/Str.h" #include "ehs/io/File.h" namespace ehs { class Audio; class EHS_LIB_IO AudioCodec { private: Str_8 id; UInt_64 hashExt; Str_8 ext; Endianness endianness; bool (*encodeCb)(const AudioCodec* const, Serializer<UInt_64>&, const Audio*); bool (*decodeCb)(const AudioCodec* const, Serializer<UInt_64>&, Audio*); public: AudioCodec(); AudioCodec(Str_8 id, Str_8 ext, const Endianness end, bool (*encodeCb)(const AudioCodec* const, Serializer<UInt_64>&, const Audio*), bool (*decodeCb)(const AudioCodec* const, Serializer<UInt_64>&, Audio*)); AudioCodec(AudioCodec&& codec) noexcept; AudioCodec(const AudioCodec& codec); AudioCodec& operator=(AudioCodec&& codec) noexcept; AudioCodec& operator=(const AudioCodec& codec); Str_8 GetId() const; UInt_64 GetHashExt() const; Str_8 GetExt() const; Endianness GetEndianness() const; bool Encode(Serializer<UInt_64>& out, const Audio* in) const; bool Decode(Serializer<UInt_64>& in, Audio* out) const; }; }