audiorecply.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef __AUDIORECPLY_H__
  2. #define __AUDIORECPLY_H__
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include "audiostream.h"
  8. typedef struct audiorecply_t audiorecply_t;
  9. struct audiorecply_t
  10. {
  11. audiostream_t base;
  12. int ptime;
  13. int ctype;
  14. int clock;
  15. int utype;
  16. union {
  17. struct {
  18. int ellapsed;
  19. int dtmfterm;
  20. int maxtime;
  21. void *wav_handle;
  22. }rec;
  23. struct {
  24. char interdigit[16];
  25. void *wav_handle;
  26. }ply;
  27. struct {
  28. void *fax_state;
  29. int issender;
  30. int timeout;
  31. int ellapsed;
  32. int fin;
  33. int error;
  34. }fax;
  35. };
  36. apr_pool_t *pool;
  37. };
  38. apr_status_t audiorecply_create(apr_pool_t *pool, audioengine_t *engine, audiorecply_t **p_recply);
  39. apr_status_t audiorecply_destroy(audiorecply_t *recply);
  40. apr_status_t audiorecply_set_ptime(audiorecply_t *recply, int ptime);
  41. apr_status_t audiorecply_set_clock(audiorecply_t *recply, int clock);
  42. apr_status_t audiorecply_set_codec(audiorecply_t *recply, int ctype);
  43. apr_status_t audiorecply_init(audiorecply_t *recply);
  44. apr_status_t audiorecply_term(audiorecply_t *recply);
  45. // must en-brace with context lock and unlock
  46. apr_status_t audiorecply_start_play(audiorecply_t *recply, const char *interdigit, const char *url);
  47. apr_status_t audiorecply_start_record(audiorecply_t *recply, const char *url, int dtmfterm, int maxtime);
  48. apr_status_t audiorecply_start_send_fax(audiorecply_t *recply, const char *url, int timeout);
  49. apr_status_t audiorecply_start_recv_fax(audiorecply_t *recply, const char *url, int itmeout);
  50. apr_status_t audiorecply_end(audiorecply_t *recply);
  51. // for IVR functions
  52. #ifdef __cplusplus
  53. } // extern "C" {
  54. #endif
  55. #endif //__AUDIORECPLY_H__