Idź do dokumentacji tego pliku.
37 #define WATCHER_AUDIO(x) int x(int type, int fd, string_t buf, void *data)
40 #define __AINIT(a, way, args...) a ? a->control_handler(AUDIO_CONTROL_SET, way, NULL, args, NULL) : NULL
41 #define __CINIT(c, args...) c ? c->control_handler(AUDIO_CONTROL_SET, AUDIO_RDWR, NULL, args, NULL) : NULL
43 #define __AINIT_F(name, way, args...) __AINIT((audio_find(name)), way, args)
44 #define __CINIT_F(name, args...) __CINIT((codec_find(name)), args)
47 #define CODEC_RECODE(x) int x(int type, string_t input, string_t output, void *data)
48 #define AUDIO_CONTROL(x) audio_io_t *x(audio_control_t type, audio_way_t way, audio_io_t *aio, ...)
49 #define CODEC_CONTROL(x) audio_codec_t *x(audio_control_t type, audio_way_t way, audio_codec_t *aco, ...)
51 #define AUDIO_DEFINE(x)\
52 extern AUDIO_CONTROL(x##_audio_control);\
53 extern WATCHER_AUDIO(x##_audio_read); \
54 extern WATCHER_AUDIO(x##_audio_write); \
55 audio_t x##_audio = { \
57 .control_handler= (void*) x##_audio_control, \
58 .read_handler = x##_audio_read, \
59 .write_handler = x##_audio_write, \
62 #define CODEC_DEFINE(x)\
63 extern CODEC_CONTROL(x##_codec_control);\
64 extern CODEC_RECODE(x##_codec_code); \
65 extern CODEC_RECODE(x##_codec_decode); \
66 codec_t x##_codec = { \
68 .control_handler= (void*) x##_codec_control, \
69 .code_handler = x##_codec_code, \
70 .decode_handler = x##_codec_decode, \