#ifndef WSQ_H_INCLUDED
#define WSQ_H_INCLUDED

#include <Images/NImage.h>
#include <Images/NistCom.h>

#ifdef N_CPP
extern "C"
{
#endif

#define WSQ_DEFAULT_BIT_RATE 0.75f

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_WIN32_X86_LEGACY 10150
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_WIN64_X64_LEGACY 10151

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_WIN32_X86 10158
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_WIN64_X64 10157

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_DEBIAN_I386_LEGACY 10152
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_DEBIAN_AMD64_LEGACY 10153

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_LINUX_I386 10160
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_LINUX_AMD64 10159
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_LINUX_ARM 10166
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_LINUX_ARM64 10165

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_MACOSX_INTEL_LEGACY 10154
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_MACOSX_INTEL64_LEGACY 10155
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_MACOSX_POWERPC_LEGACY 10156

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_MACOSX_INTEL64 10163

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_ANDROID_ARM 10161
#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_ANDROID_ARM64 10162

#define WSQ_IMPLEMENTATION_NEUROTECHNOLOGY_IOS_ARM64 10164

#define WSQ_RECOVER_CORRUPT_FILE 0x000100000

N_DECLARE_OBJECT_TYPE(WsqInfo, NImageInfo)

NResult N_API WsqInfoGetBitRate(HWsqInfo hInfo, NFloat * pValue);
NResult N_API WsqInfoSetBitRate(HWsqInfo hInfo, NFloat value);
NResult N_API WsqInfoGetImplementationNumber(HWsqInfo hInfo, NUShort * pValue);
NResult N_API WsqInfoHasNistCom(HWsqInfo hInfo, NBool * pValue);
NResult N_API WsqInfoSetHasNistCom(HWsqInfo hInfo, NBool value);
NResult N_API WsqInfoGetNistCom(HWsqInfo hInfo, HNistCom * phValue);

#ifdef N_CPP
}
#endif

#endif // !WSQ_H_INCLUDED
