123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- #ifndef __AUDIO_PROCESSOR_H__
- #define __AUDIO_PROCESSOR_H__
- #include <zephyr.h>
- #include <acts_ringbuf.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define MAKE_AUDIO_PROCESSOR_MODULE_ID(A, B, C, D) \
- (((uint32_t)(A) << 24) | ((uint32_t)(B) << 16) | ((uint32_t)(C) << 8) | (D))
- #define MAKE_AUDIO_PROCESSOR_VERSION(major, minor, patchlevel) \
- (((uint32_t)((major) && 0xFF) << 24) | ((uint32_t)((minor) && 0xFF) << 16) | ((uint32_t)((patchlevel) && 0xFF) << 8))
- #define AUDIO_PROCESSOR_VER_MAJOR(ver) ((ver >> 24) & 0xFF)
- #define AUDIO_PROCESSOR_VER_MINOR(ver) ((ver >> 16) & 0xFF)
- #define AUDIO_PROCESSOR_VER_PATCHLEVEL(ver) ((ver >> 8) & 0xFF)
- #define MAX_AUDIO_CHANNELS (2)
- typedef enum {
- BTCALL_PREPROCESSOR_MODULE_ID = MAKE_AUDIO_PROCESSOR_MODULE_ID('B', 'T', 'C', 'R'),
- BTCALL_POSTPROCESSOR_MODULE_ID = MAKE_AUDIO_PROCESSOR_MODULE_ID('B', 'T', 'C', 'O'),
- MUSIC_POSTPROCESSOR_MODULE_ID = MAKE_AUDIO_PROCESSOR_MODULE_ID('M', 'U', 'S', 'O'),
- } audio_processor_module_id_e;
- typedef struct audio_preprocessor_init_param {
-
- uint8_t stream_type;
- uint8_t stream_effect;
- uint8_t sample_rate;
- uint8_t sample_bits;
- uint8_t frac_bits;
- uint8_t channels;
- uint8_t format;
-
- struct acts_ringbuf *inbufs[MAX_AUDIO_CHANNELS];
-
- struct acts_ringbuf *refbuf;
-
- struct acts_ringbuf *outbufs[MAX_AUDIO_CHANNELS];
-
- void *ext_param;
- } audio_preprocessor_init_param_t;
- typedef struct audio_postprocessor_init_param {
-
- uint8_t stream_type;
- uint8_t stream_effect;
- uint8_t sample_rate;
- uint8_t sample_bits;
- uint8_t frac_bits;
- uint8_t channels;
- uint8_t format;
-
- struct acts_ringbuf *inbufs[MAX_AUDIO_CHANNELS];
-
- struct acts_ringbuf *refbuf;
-
- struct acts_ringbuf *outbuf;
-
- void *ext_param;
- } audio_postprocessor_init_param_t;
- struct audio_processor_module;
- typedef struct audio_processor {
- const struct audio_processor_module *module;
- void *priv;
- } audio_processor_t;
- typedef struct audio_processor_module {
-
- uint32_t id;
-
- uint32_t version;
-
- const char *name;
-
- int (*initialize)(audio_processor_t *handle, void *init_param);
-
- int (*destroy)(audio_processor_t *handle);
-
- int (*process)(audio_processor_t *handle);
-
- int (*flush)(audio_processor_t *handle);
-
- int (*get_parameter)(audio_processor_t *handle, int pname, void *param, unsigned int psize);
-
- int (*set_parameter)(audio_processor_t *handle, int pname, void *param, unsigned int psize);
-
- int (*dump)(audio_processor_t *handle, int data_tag, struct acts_ringbuf *data_buf);
-
- #ifdef CONFIG_DSP
-
- int (*enable)(audio_processor_t *handle);
-
- int (*disable)(audio_processor_t *handle);
-
- int (*pause)(audio_processor_t *handle);
-
- int (*resume)(audio_processor_t *handle);
- #endif
- } audio_processor_module_t;
- void *audio_preprocessor_open(audio_preprocessor_init_param_t *init_param);
- void *audio_postprocessor_open(audio_postprocessor_init_param_t *init_param);
- int audio_processor_close(void *handle);
- int audio_processor_enable(void *handle);
- int audio_processor_disable(void *handle);
- int audio_processor_pause(void *handle);
- int audio_processor_resume(void *handle);
- int audio_processor_process(void *handle);
- int audio_processor_flush(void *handle);
- int audio_processor_get_parameter(void *handle, int pname, void *param, unsigned int psize);
- int audio_processor_set_parameter(void *handle, int pname, void *param, unsigned int psize);
- int audio_processor_dump(void *handle, int data_tag, struct acts_ringbuf *data_buf);
- int audio_preprocessor_register(audio_processor_module_t *module, uint8_t stream_type);
- int audio_preprocessor_unregister(audio_processor_module_t *module, uint8_t stream_type);
- int audio_postprocessor_register(audio_processor_module_t *module, uint8_t stream_type);
- int audio_postprocessor_unregister(audio_processor_module_t *module, uint8_t stream_type);
- #ifdef __cplusplus
- }
- #endif
- #endif
|