Reorganized project again.

This commit is contained in:
2023-12-17 15:56:13 -08:00
parent 54b9e82789
commit 3acb78f247
250 changed files with 1586 additions and 1586 deletions

109
src/io/audio/AudioCodec.cpp Normal file
View File

@@ -0,0 +1,109 @@
#include "io/audio/AudioCodec.h"
namespace ehs
{
AudioCodec::AudioCodec()
: hashExt(0), endianness(Endianness::LE), encodeCb(nullptr), decodeCb(nullptr)
{
}
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*))
: id(std::move(id)), hashExt(ext.Hash_64()), ext(std::move(ext)), endianness(end), encodeCb(encodeCb), decodeCb(decodeCb)
{
}
AudioCodec::AudioCodec(AudioCodec&& codec) noexcept
: id(std::move(codec.id)), hashExt(codec.hashExt), ext(std::move(codec.ext)), endianness(codec.endianness),
encodeCb(codec.encodeCb), decodeCb(codec.decodeCb)
{
codec.hashExt = 0;
codec.endianness = Endianness::LE;
codec.encodeCb = nullptr;
codec.decodeCb = nullptr;
}
AudioCodec::AudioCodec(const AudioCodec& codec)
: id(codec.id), hashExt(codec.hashExt), ext(codec.ext), endianness(codec.endianness), encodeCb(codec.encodeCb),
decodeCb(codec.decodeCb)
{
}
AudioCodec& AudioCodec::operator=(AudioCodec&& codec) noexcept
{
if (this == &codec)
return *this;
id = std::move(codec.id);
hashExt = codec.hashExt;
ext = std::move(codec.ext);
endianness = codec.endianness;
encodeCb = codec.encodeCb;
decodeCb = codec.decodeCb;
codec.hashExt = 0;
codec.endianness = Endianness::LE;
codec.encodeCb = nullptr;
codec.decodeCb = nullptr;
return *this;
}
AudioCodec& AudioCodec::operator=(const AudioCodec& codec)
{
if (this == &codec)
return *this;
id = codec.id;
hashExt = codec.hashExt;
ext = codec.ext;
endianness = codec.endianness;
encodeCb = codec.encodeCb;
decodeCb = codec.decodeCb;
return *this;
}
Str_8 AudioCodec::GetId() const
{
return id;
}
UInt_64 AudioCodec::GetHashExt() const
{
return hashExt;
}
Str_8 AudioCodec::GetExt() const
{
return ext;
}
Endianness AudioCodec::GetEndianness() const
{
return endianness;
}
bool AudioCodec::Encode(Serializer<UInt_64>& out, const Audio* in) const
{
if (!encodeCb)
{
EHS_LOG_INT("Error", 0, "Encoding is not supported for the " + id + " format.");
return false;
}
return encodeCb(this, out, in);
}
bool AudioCodec::Decode(Serializer<UInt_64>& in, Audio* out) const
{
if (!decodeCb)
{
EHS_LOG_INT("Error", 0, "Decoding is not supported for the " + id + " format.");
return false;
}
return decodeCb(this, in, out);
}
}