router: Fix for multiplex default routing
[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_add_default_route(pa_core *, pa_muxnode *,pa_sink *,int);
34 pa_bool_t pa_multiplex_remove_default_route(pa_core *,pa_muxnode *,pa_bool_t);
35 pa_bool_t pa_multiplex_change_default_route(pa_core *,pa_muxnode *,pa_sink *);
36
37 pa_bool_t pa_multiplex_add_explicit_route(pa_core*, pa_muxnode*, pa_sink*,int);
38 pa_bool_t pa_multiplex_remove_explicit_route(pa_core *, pa_muxnode *, pa_sink *);
39
40 pa_bool_t pa_multiplex_duplicate_route(pa_core *, pa_muxnode *,
41                                        pa_sink_input *, pa_sink *);
42
43 int pa_multiplex_print(pa_muxnode *, char *, int);
44
45
46 #endif /* foomultiplexfoo */
47
48 /*
49  * Local Variables:
50  * c-basic-offset: 4
51  * indent-tabs-mode: nil
52  * End:
53  *
54  */