audiocache.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef __AUDIOCACHE_H__
  2. #define __AUDIOCACHE_H__
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include <apr_tables.h>
  8. #include "audiostream.h"
  9. #include "audiodriver.h"
  10. typedef struct audiocache_t {
  11. audiostream_t stream_base;
  12. audiodriver_t driver_base;
  13. audioframe_t pending_read;
  14. audioframe_t pending_write;
  15. apr_array_header_t *arr_istream;
  16. apr_array_header_t *arr_ostream;
  17. }audiocache_t;
  18. apr_status_t audiocache_create(apr_pool_t *pool,
  19. audioengine_t *engine,
  20. int istream_cnt, // additional read frame stream
  21. int ostream_cnt, // additional write frame stream
  22. audiocache_t **p_cache);
  23. void audiocache_destroy(audiocache_t *cache);
  24. static audiodriver_t* audiocache_get_driver(audiocache_t *cache) { return &cache->driver_base; }
  25. static audiostream_t* audiocache_get_stream(audiocache_t *cache) { return &cache->stream_base; }
  26. audiostream_t* audiocache_get_istream(audiocache_t *cache, int idx);
  27. audiostream_t* audiocache_get_ostream(audiocache_t *cache, int idx);
  28. #ifdef __cplusplus
  29. } // extern "C" {
  30. #endif
  31. #endif //__AUDIOCACHE_H__