audiocontext.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef __AUDIOCONTEXT_H__
  2. #define __AUDIOCONTEXT_H__
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include "audioengine.h"
  8. #include "audiodriver.h"
  9. typedef struct audiocontext_t audiocontext_t;
  10. typedef struct audiostream_t audiostream_t;
  11. typedef struct audiodriver_t audiodriver_t;
  12. apr_status_t audiocontext_create(apr_pool_t *pool, audioengine_t *e, audiocontext_t **p_ctx);
  13. void audiocontext_destroy(audiocontext_t *ctx);
  14. audioengine_t *audiocontext_get_engine(audiocontext_t *ctx);
  15. apr_status_t audiocontext_lock(audiocontext_t *ctx);
  16. apr_status_t audiocontext_unlock(audiocontext_t *ctx);
  17. apr_status_t audiocontext_add_driver(audiocontext_t *ctx, audiodriver_t *dev);
  18. apr_status_t audiocontext_remove_driver(audiocontext_t *ctx, audiodriver_t *dev);
  19. apr_status_t audiocontext_add_stream(audiocontext_t *ctx, audiostream_t *stream);
  20. apr_status_t audiocontext_remove_stream(audiocontext_t *ctx, audiostream_t *stream);
  21. // stream event handler,
  22. // return 0: pass to next handler, 1: processed
  23. #ifdef _WIN32
  24. typedef int(__stdcall* audiocontext_event_handler)(audiocontext_t* ctx,
  25. void* user_data,
  26. int bstream,
  27. audiostream_t* stream,
  28. int evt,
  29. int param1,
  30. int param2);
  31. #else
  32. typedef int(__attribute__((__stdcall))* audiocontext_event_handler)(audiocontext_t* ctx,
  33. void* user_data,
  34. int bstream,
  35. audiostream_t* stream,
  36. int evt,
  37. int param1,
  38. int param2);
  39. #endif
  40. #define EVENT_HANDLER_PRIOIRY_HIGHEST 31
  41. #define EVENT_HANDLER_PRIOIRY_HIGH 15
  42. #define EVENT_HANDLER_PRIOIRY_MIDDLE 7
  43. #define EVENT_HANDLER_PRIOIRY_LOW 3
  44. #define EVENT_HANDLER_PRIOIRY_LOWEST 0
  45. apr_status_t audiocontext_put_stream_event(audiocontext_t *ctx, audiostream_t *stream, int evt, int param1, int param2);
  46. apr_status_t audiocontext_put_driver_event(audiocontext_t *ctx, audiodriver_t *driver, int evt, int param1, int param2);
  47. apr_status_t audiocontext_add_event_handler(audiocontext_t *ctx, int priority, audiocontext_event_handler handler, void *user_data);
  48. apr_status_t audiocontext_remove_event_handler(audiocontext_t *ctx, audiocontext_event_handler handler);
  49. #ifdef __cplusplus
  50. } // extern "C" {
  51. #endif
  52. #endif //__AUDIOCONTEXT_H__