123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761 |
- #ifndef __PJMEDIA_AUDIO_DEV_H__
- #define __PJMEDIA_AUDIO_DEV_H__
- #include <pjmedia-audiodev/config.h>
- #include <pjmedia-audiodev/errno.h>
- #include <pjmedia/format.h>
- #include <pjmedia/frame.h>
- #include <pjmedia/types.h>
- #include <pj/pool.h>
- PJ_BEGIN_DECL
- typedef pj_int32_t pjmedia_aud_dev_index;
- #define PJMEDIA_AUD_DEFAULT_CAPTURE_DEV -1
- #define PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV -2
- #define PJMEDIA_AUD_INVALID_DEV -3
- #define PJMEDIA_AUD_MAX_DRIVERS 16
- #define PJMEDIA_AUD_MAX_DEVS 64
- typedef struct pjmedia_aud_stream pjmedia_aud_stream;
- typedef struct pjmedia_aud_dev_factory pjmedia_aud_dev_factory;
- typedef pjmedia_aud_dev_factory*
- (*pjmedia_aud_dev_factory_create_func_ptr)(pj_pool_factory*);
- typedef struct pjmedia_aud_driver
- {
- pjmedia_aud_dev_factory_create_func_ptr create;
- pjmedia_aud_dev_factory *f;
- char name[32];
- unsigned dev_cnt;
- unsigned start_idx;
- int rec_dev_idx;
- int play_dev_idx;
- int dev_idx;
- } pjmedia_aud_driver;
- typedef struct pjmedia_aud_subsys
- {
- unsigned init_count;
- pj_pool_factory *pf;
- unsigned drv_cnt;
- pjmedia_aud_driver drv[PJMEDIA_AUD_MAX_DRIVERS];
- unsigned dev_cnt;
- pj_uint32_t dev_list[PJMEDIA_AUD_MAX_DEVS];
- } pjmedia_aud_subsys;
- typedef enum pjmedia_aud_dev_cap
- {
-
- PJMEDIA_AUD_DEV_CAP_EXT_FORMAT = 1,
-
- PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY = 2,
-
- PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY = 4,
-
- PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING = 8,
-
- PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING = 16,
-
- PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER = 32,
-
- PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER = 64,
-
- PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE = 128,
- PJMEDIA_AUD_DEV_CAP_INPUT_SOURCE = 128,
-
- PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE = 256,
-
- PJMEDIA_AUD_DEV_CAP_EC = 512,
-
- PJMEDIA_AUD_DEV_CAP_EC_TAIL = 1024,
-
- PJMEDIA_AUD_DEV_CAP_VAD = 2048,
-
- PJMEDIA_AUD_DEV_CAP_CNG = 4096,
-
- PJMEDIA_AUD_DEV_CAP_PLC = 8192,
-
-
- PJMEDIA_AUD_DEV_CAP_MAX = 16384
- } pjmedia_aud_dev_cap;
- typedef enum pjmedia_aud_dev_route
- {
-
- PJMEDIA_AUD_DEV_ROUTE_DEFAULT = 0,
-
- PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER = 1,
-
- PJMEDIA_AUD_DEV_ROUTE_EARPIECE = 2,
-
- PJMEDIA_AUD_DEV_ROUTE_BLUETOOTH = 4,
-
- PJMEDIA_AUD_DEV_ROUTE_CUSTOM = 128
- } pjmedia_aud_dev_route;
- typedef struct pjmedia_aud_dev_info
- {
-
- pjmedia_aud_dev_index id;
-
- char name[PJMEDIA_AUD_DEV_INFO_NAME_LEN];
-
- unsigned input_count;
-
- unsigned output_count;
-
- unsigned default_samples_per_sec;
-
- char driver[32];
-
- unsigned caps;
-
- unsigned routes;
-
- unsigned ext_fmt_cnt;
-
- pjmedia_format ext_fmt[8];
- } pjmedia_aud_dev_info;
- typedef pj_status_t (*pjmedia_aud_play_cb)(void *user_data,
- pjmedia_frame *frame);
- typedef pj_status_t (*pjmedia_aud_rec_cb)(void *user_data,
- pjmedia_frame *frame);
- typedef struct pjmedia_aud_param
- {
-
- pjmedia_dir dir;
-
- pjmedia_aud_dev_index rec_id;
-
- pjmedia_aud_dev_index play_id;
-
- unsigned clock_rate;
-
- unsigned channel_count;
-
- unsigned samples_per_frame;
-
- unsigned bits_per_sample;
-
- unsigned flags;
-
- pjmedia_format ext_fmt;
-
- unsigned input_latency_ms;
-
- unsigned output_latency_ms;
-
- unsigned input_vol;
-
- unsigned output_vol;
-
- pjmedia_aud_dev_route input_route;
-
- pjmedia_aud_dev_route output_route;
-
- pj_bool_t ec_enabled;
-
- unsigned ec_tail_ms;
-
- pj_bool_t plc_enabled;
-
- pj_bool_t cng_enabled;
-
- pj_bool_t vad_enabled;
- } pjmedia_aud_param;
- PJ_DECL(pjmedia_aud_subsys*) pjmedia_get_aud_subsys(void);
- PJ_DECL(pj_status_t) pjmedia_aud_driver_init(unsigned drv_idx,
- pj_bool_t refresh);
- PJ_DECL(void) pjmedia_aud_driver_deinit(unsigned drv_idx);
- PJ_DECL(const char*) pjmedia_aud_dev_cap_name(pjmedia_aud_dev_cap cap,
- const char **p_desc);
- PJ_DECL(pj_status_t) pjmedia_aud_param_set_cap(pjmedia_aud_param *param,
- pjmedia_aud_dev_cap cap,
- const void *pval);
- PJ_DECL(pj_status_t) pjmedia_aud_param_get_cap(const pjmedia_aud_param *param,
- pjmedia_aud_dev_cap cap,
- void *pval);
- PJ_DECL(pj_status_t) pjmedia_aud_dev_refresh(void);
- PJ_DECL(unsigned) pjmedia_aud_dev_count(void);
- PJ_DECL(pj_status_t) pjmedia_aud_dev_get_info(pjmedia_aud_dev_index id,
- pjmedia_aud_dev_info *info);
- PJ_DECL(pj_status_t) pjmedia_aud_dev_lookup(const char *drv_name,
- const char *dev_name,
- pjmedia_aud_dev_index *id);
- PJ_DECL(pj_status_t) pjmedia_aud_dev_default_param(pjmedia_aud_dev_index id,
- pjmedia_aud_param *param);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_create(const pjmedia_aud_param *param,
- pjmedia_aud_rec_cb rec_cb,
- pjmedia_aud_play_cb play_cb,
- void *user_data,
- pjmedia_aud_stream **p_strm);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_get_param(pjmedia_aud_stream *strm,
- pjmedia_aud_param *param);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_get_cap(pjmedia_aud_stream *strm,
- pjmedia_aud_dev_cap cap,
- void *value);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_set_cap(pjmedia_aud_stream *strm,
- pjmedia_aud_dev_cap cap,
- const void *value);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_start(pjmedia_aud_stream *strm);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_stop(pjmedia_aud_stream *strm);
- PJ_DECL(pj_status_t) pjmedia_aud_stream_destroy(pjmedia_aud_stream *strm);
- PJ_END_DECL
- #endif
|