audiocontext.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. typedef int (__stdcall *audiocontext_event_handler)(audiocontext_t *ctx,
  24. void *user_data,
  25. int bstream,
  26. audiostream_t *stream,
  27. int evt,
  28. int param1,
  29. int param2);
  30. #define EVENT_HANDLER_PRIOIRY_HIGHEST 31
  31. #define EVENT_HANDLER_PRIOIRY_HIGH 15
  32. #define EVENT_HANDLER_PRIOIRY_MIDDLE 7
  33. #define EVENT_HANDLER_PRIOIRY_LOW 3
  34. #define EVENT_HANDLER_PRIOIRY_LOWEST 0
  35. apr_status_t audiocontext_put_stream_event(audiocontext_t *ctx, audiostream_t *stream, int evt, int param1, int param2);
  36. apr_status_t audiocontext_put_driver_event(audiocontext_t *ctx, audiodriver_t *driver, int evt, int param1, int param2);
  37. apr_status_t audiocontext_add_event_handler(audiocontext_t *ctx, int priority, audiocontext_event_handler handler, void *user_data);
  38. apr_status_t audiocontext_remove_event_handler(audiocontext_t *ctx, audiocontext_event_handler handler);
  39. #ifdef __cplusplus
  40. } // extern "C" {
  41. #endif
  42. #endif //__AUDIOCONTEXT_H__