router: support for multiplex routing with combine module
[profile/ivi/pulseaudio-module-murphy-ivi.git] / murphy / multiplex.h
1 #ifndef foomultiplexfoo
2 #define foomultiplexfoo
3
4 #include <pulsecore/core.h>
5 #include <pulsecore/sink-input.h>
6
7 #include "list.h"
8
9 typedef struct pa_muxnode pa_muxnode;
10
11 typedef struct pa_multiplex {
12     PA_LLIST_HEAD(pa_muxnode, muxnodes);
13 } pa_multiplex;
14
15
16 struct pa_muxnode {
17     PA_LLIST_FIELDS(pa_muxnode);
18     uint32_t   module_index;
19     uint32_t   sink_index;
20     uint32_t   defstream_index;
21 };
22
23 pa_multiplex *pa_multiplex_init(void);
24
25 void pa_multiplex_done(pa_multiplex *, pa_core *);
26
27 pa_muxnode *pa_multiplex_create(pa_multiplex *, pa_core *, uint32_t,
28                                 pa_channel_map *, const char *, int);
29 void pa_multiplex_destroy(pa_multiplex *, pa_core *, pa_muxnode *);
30
31 pa_muxnode *pa_multiplex_find(pa_multiplex *, uint32_t);
32
33 pa_bool_t pa_multiplex_remove_default_route(pa_core *,pa_muxnode *,pa_bool_t);
34 pa_bool_t pa_multiplex_change_default_route(pa_core *,pa_muxnode *,pa_sink *);
35
36 pa_bool_t pa_multiplex_add_explicit_route(pa_core*, pa_muxnode*, pa_sink*,int);
37 pa_bool_t pa_multiplex_remove_explicit_route(pa_core *, pa_muxnode *, pa_sink *);
38
39 pa_bool_t pa_multiplex_duplicate_route(pa_core *, pa_muxnode *,
40                                        pa_sink_input *, pa_sink *);
41
42 int pa_multiplex_print(pa_muxnode *, char *, int);
43
44
45 #endif /* foomultiplexfoo */
46
47 /*
48  * Local Variables:
49  * c-basic-offset: 4
50  * indent-tabs-mode: nil
51  * End:
52  *
53  */