discovery: add support for stream output (i.e. source-ouput in PA terms)
[profile/ivi/pulseaudio-module-murphy-ivi.git] / murphy / userdata.h
1 /*
2  * module-murphy-ivi -- PulseAudio module for providing audio routing support
3  * Copyright (c) 2012, Intel Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU Lesser General Public License,
7  * version 2.1, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.
12  * See the GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston,
17  * MA 02110-1301 USA.
18  *
19  */
20 #ifndef foouserdatafoo
21 #define foouserdatafoo
22
23 #include <stdbool.h>
24 #include <pulsecore/core.h>
25
26 #include "multiplex.h"
27 #include "loopback.h"
28
29 #define DIM(a) (sizeof(a)/sizeof((a)[0]))
30
31 #define PA_PROP_ROUTING_CLASS_NAME     "routing.class.name"
32 #define PA_PROP_ROUTING_CLASS_ID       "routing.class.id"
33 #define PA_PROP_ROUTING_METHOD         "routing.method"
34 #define PA_PROP_ROUTING_TABLE          "routing.table"
35 #define PA_PROP_NODE_INDEX             "node.index"
36
37 #define PA_ROUTING_DEFAULT             "default"
38 #define PA_ROUTING_EXPLICIT            "explicit"
39
40 typedef struct pa_card                  pa_card;
41 typedef struct pa_sink                  pa_sink;
42
43 typedef struct pa_null_sink             pa_null_sink;
44 typedef struct pa_tracker               pa_tracker;
45 typedef struct pa_audiomgr              pa_audiomgr;
46 typedef struct pa_routerif              pa_routerif;
47 typedef struct pa_discover              pa_discover;
48 typedef struct pa_router                pa_router;
49 typedef struct pa_constrain             pa_constrain;
50 typedef struct pa_mir_volume            pa_mir_volume;
51 typedef struct pa_mir_config            pa_mir_config;
52 typedef struct pa_nodeset               pa_nodeset;
53 typedef struct pa_node_card             pa_node_card;
54 typedef struct pa_card_hooks            pa_card_hooks;
55 typedef struct pa_port_hooks            pa_port_hooks;
56 typedef struct pa_sink_hooks            pa_sink_hooks;
57 typedef struct pa_source_hooks          pa_source_hooks;
58 typedef struct pa_sink_input_hooks      pa_sink_input_hooks;
59 typedef struct pa_source_output_hooks   pa_source_output_hooks;
60
61
62 typedef enum   mir_direction            mir_direction;
63 typedef enum   mir_implement            mir_implement;
64 typedef enum   mir_location             mir_location;
65 typedef enum   mir_node_type            mir_node_type;
66 typedef enum   mir_privacy              mir_privacy; 
67 typedef struct mir_node                 mir_node;
68 typedef struct mir_rtgroup              mir_rtgroup;
69 typedef struct mir_rtentry              mir_rtentry;
70 typedef struct mir_connection           mir_connection;
71 typedef struct mir_constr_link          mir_constr_link;
72 typedef struct mir_constr_def           mir_constr_def;
73 typedef struct mir_vlim                 mir_vlim;
74 typedef struct mir_volume_suppress_arg  mir_volume_suppress_arg;
75
76 typedef enum   am_method                am_method;
77 typedef struct am_domainreg_data        am_domainreg_data;
78 typedef struct am_nodereg_data          am_nodereg_data;
79 typedef struct am_nodeunreg_data        am_nodeunreg_data;
80 typedef struct am_ack_data              am_ack_data;
81 typedef struct am_connect_data          am_connect_data;
82
83
84
85 typedef struct {
86     char *profile;    /**< During profile change it contains the new profile
87                            name. Otherwise it is NULL. When sink tracking
88                            hooks called the card's active_profile still
89                            points to the old profile */
90     uint32_t sink;
91     uint32_t source;
92 } pa_mir_state;
93
94
95 struct userdata {
96     pa_core       *core;
97     pa_module     *module;
98     pa_null_sink  *nullsink;
99     pa_nodeset    *nodeset;
100     pa_audiomgr   *audiomgr;
101     pa_routerif   *routerif;
102     pa_discover   *discover;
103     pa_tracker    *tracker;
104     pa_router     *router;
105     pa_constrain  *constrain;
106     pa_multiplex  *multiplex;
107     pa_loopback   *loopback;
108     pa_mir_volume *volume;
109     pa_mir_config *config;
110     pa_mir_state   state;
111 };
112
113 #endif
114
115 /*
116  * Local Variables:
117  * c-basic-offset: 4
118  * indent-tabs-mode: nil
119  * End:
120  *
121  */