1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- #ifdef _WIN32
- #ifdef LIBAUDIOMGR_EXPORTS
- #define LIBAUDIOMGR_API __declspec(dllexport)
- #else
- #define LIBAUDIOMGR_API __declspec(dllimport)
- #endif
- # elif ( defined(__GNUC__) && __GNUC__ >= 4 )
- #define LIBAUDIOMGR_API __attribute__((visibility("default")))
- #else // RVC_OS_WIN
- #define LIBAUDIOMGR_API
- #endif // RVC_OS_WIN
- #include <stddef.h>
- #include <stdarg.h>
- #ifndef MAX_PATH
- #define MAX_PATH 260
- #endif
- typedef struct audiocap_param_s
- {
- /** callbacks */
- int ideviceid;
- int isamprate;
- int ichannels;
- int isampleformat;
- double flatency;
- /* called from inner thread, should not block, can be null */
- void (*on_audio_callback)(const void* input, unsigned long audiolen,void* userdata);
- void* user_data;
- }audiocap_param_t;
- #pragma pack(1)
- typedef struct rvc_audio_device_s
- {
- int id; /*audo device id*/
- int channels; /*max channels*/
- int samprate; /*default samplerate*/
- double low_latency; /*default low latency*/
- double high_latency; /*default high latency*/
- char name[MAX_PATH]; /*device name*/
- char description[MAX_PATH]; /*device description*/
- } rvc_audio_device_t;
- #pragma pack()
- typedef struct audiomgr_callback_s{
- void (*debug)(void* user_data, const char* fmt, va_list arg);
- void (*on_audio_mgr_failed)();
- void (*on_audio_mgr_excption)();
- void* user_data;
- }audiomgr_callback_t;
- class IAudioMgr
- {
- public:
- virtual int audio_mgr_initialize() = 0;
- virtual int audio_mgr_terminate() = 0;
- /**/
- virtual int audio_get_device_count(bool binput) = 0;
- #ifdef _WIN32
- virtual int audio_get_device_name(char* pstrbuf, size_t ulen, bool binput, unsigned int uindex) = 0;
- #else
- virtual int audio_get_device_name(char* pstrbuf, size_t ulen, bool binput, int index) = 0;
- #endif
- virtual int audio_get_device_id(const char* pstrname, bool binput) = 0;
- virtual rvc_audio_device_t* audio_get_device_infos(bool binput, int index) = 0;
-
- virtual int audio_get_device_volume(int* ivolume, const char* pstrname, bool binput) = 0;
- virtual int audio_set_device_volume(int ivolume, const char* pstrname, bool binput) = 0;
- virtual int set_audio_capture_params(audiocap_param_t* param) = 0;
- virtual int start_audio_capture() = 0;
- virtual int stop_audio_capture() = 0;
-
- virtual int audio_mgr_destroy() = 0;
- };
- extern "C" LIBAUDIOMGR_API IAudioMgr* CreateAudioMgrObj(audiomgr_callback_t* pCallback);
- extern "C" LIBAUDIOMGR_API void DestroyIAudioMgrObj(IAudioMgr* pIAudioMgr);
|