#ifndef __AUDIODRIVER_H__ #define __AUDIODRIVER_H__ #pragma once #ifdef __cplusplus extern "C" { #endif #define EVT_DRIVER_BASE 0x00001000 #define DRIVER_EVT_DTMF_RECV (EVT_DRIVER_BASE + 0) // receive dtmf #define DRIVER_EVT_DTMF_SENT (EVT_DRIVER_BASE + 1) // send dtmf finished typedef struct audiodriver_vtbl_t { void (*process_frame)(void *self); }audiodriver_vtbl_t; typedef struct audiodriver_t audiodriver_t; typedef struct audiocontext_t audiocontext_t; typedef struct audioengine_t audioengine_t; struct audiodriver_t { audiodriver_vtbl_t *vtbl; void *user_data; #ifdef _WIN32 int (__stdcall *event_handler)(audiodriver_t* driver, void* user_data, int evt, int param1, int param2); #else int (__attribute__((__stdcall))*event_handler)(audiodriver_t* driver, void* user_data, int evt, int param1, int param2); #endif audioengine_t *engine; audiocontext_t *ctx; }; void audiodriver_init(audioengine_t *engine, audiodriver_vtbl_t *vtbl, audiodriver_t *drv); void audiodriver_raise_event(audiodriver_t *driver, int evt, int param1, int param2); #ifdef __cplusplus } // extern "C" { #endif #endif //__AUDIODRIVER_H__