#pragma once #ifdef _WIN32 #ifdef LIBAUDIONS_EXPORTS #define IAUDIONSINTERFACE_API __declspec(dllexport) #else #define IAUDIONSINTERFACE_API __declspec(dllimport) #endif # elif ( defined(__GNUC__) && __GNUC__ >= 4 ) #define IAUDIONSINTERFACE_API __attribute__((visibility("default"))) #else // RVC_OS_WIN #define IAUDIONSINTERFACE_API #endif // RVC_OS_WIN #include #include typedef struct audions_callback_s { void (*debug)(void* user_data, const char* fmt, va_list arg); void* user_data; }audions_callback_t; class IAudioNs { public: virtual int SetNsParams(uint32_t uSampleRate, uint32_t uAudioCapturePeroid, int iMode) = 0; virtual int NsProcess(char* pDst, uint32_t uDstLen, char* pSrc, uint32_t uSrcLen) = 0; virtual void ReleaseObj() = 0; }; extern "C" IAUDIONSINTERFACE_API IAudioNs* CreateIAudioNsObj(audions_callback_t* pCallback); extern "C" IAUDIONSINTERFACE_API void DestroyIAudioNsObj(IAudioNs* pIAudioNs);