2 * module-murphy-ivi -- PulseAudio module for providing audio routing support
3 * Copyright (c) 2012, Intel Corporation.
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.
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.
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,
20 #ifndef foomurphyuserdatafoo
21 #define foomurphyuserdatafoo
24 #include <pulsecore/core.h>
25 #include <pulsecore/client.h>
26 #include <pulsecore/protocol-native.h>
28 #include <murphy/domain-control/client.h>
30 #include "multiplex.h"
33 #define DIM(a) (sizeof(a)/sizeof((a)[0]))
35 #define PA_PROP_ZONES "zones"
36 #define PA_PROP_ZONE_NAME "zone.name"
37 #define PA_PROP_ROUTING_CLASS_NAME "routing.class.name"
38 #define PA_PROP_ROUTING_CLASS_ID "routing.class.id"
39 #define PA_PROP_ROUTING_METHOD "routing.method"
40 #define PA_PROP_ROUTING_TABLE "routing.table"
41 #define PA_PROP_NODE_INDEX "node.index"
42 #define PA_PROP_NODE_TYPE "node.type"
43 #define PA_PROP_NODE_ROLE "node.role"
44 #define PA_PROP_RESOURCE_SET_ID "resource.set.id"
45 #define PA_PROP_RESOURCE_SET_APPID "resource.set.appid"
46 #define PA_PROP_RESOURCE_SET_NAME "resource.set.name"
47 #define PA_PROP_RESOURCE_PRIORITY "resource.set.priority"
48 #define PA_PROP_RESOURCE_SET_FLAGS "resource.set.flags"
49 #define PA_PROP_RESOURCE_AUDIO_FLAGS "resource.audio.flags"
51 #define PA_ZONE_NAME_DEFAULT "driver"
53 #define PA_ROUTING_DEFAULT "default"
54 #define PA_ROUTING_EXPLICIT "explicit"
56 #define PA_RESOURCE_SET_ID_PID "pid"
58 #define MIR_VOLUME_MAX_ATTENUATION -120 /* dB */
60 typedef enum pa_value_type pa_value_type;
61 typedef struct pa_value pa_value;
62 typedef struct pa_null_sink pa_null_sink;
63 typedef struct pa_tracker pa_tracker;
64 typedef struct pa_audiomgr pa_audiomgr;
65 typedef struct pa_routerif pa_routerif;
66 typedef struct pa_discover pa_discover;
67 typedef struct pa_router pa_router;
68 typedef struct pa_constrain pa_constrain;
69 typedef struct pa_fader pa_fader;
70 typedef struct pa_scripting pa_scripting;
71 typedef struct pa_mir_volume pa_mir_volume;
72 typedef struct pa_mir_config pa_mir_config;
73 typedef struct pa_zoneset pa_zoneset;
74 typedef struct pa_nodeset pa_nodeset;
75 typedef struct pa_nodeset_resdef pa_nodeset_resdef;
76 typedef struct pa_nodeset_map pa_nodeset_map;
77 typedef struct pa_node_card pa_node_card;
78 typedef struct pa_card_hooks pa_card_hooks;
79 typedef struct pa_port_hooks pa_port_hooks;
80 typedef struct pa_sink_hooks pa_sink_hooks;
81 typedef struct pa_source_hooks pa_source_hooks;
82 typedef struct pa_sink_input_hooks pa_sink_input_hooks;
83 typedef struct pa_source_output_hooks pa_source_output_hooks;
84 typedef struct pa_extapi pa_extapi;
85 typedef struct pa_murphyif pa_murphyif;
87 typedef enum mir_direction mir_direction;
88 typedef enum mir_implement mir_implement;
89 typedef enum mir_location mir_location;
90 typedef enum mir_node_type mir_node_type;
91 typedef enum mir_privacy mir_privacy;
92 typedef struct mir_node mir_node;
93 typedef struct mir_zone mir_zone;
94 typedef struct mir_rtgroup mir_rtgroup;
95 typedef struct mir_rtentry mir_rtentry;
96 typedef struct mir_connection mir_connection;
97 typedef struct mir_constr_link mir_constr_link;
98 typedef struct mir_constr_def mir_constr_def;
99 typedef struct mir_vlim mir_vlim;
100 typedef struct mir_volume_suppress_arg mir_volume_suppress_arg;
102 typedef struct scripting_import scripting_import;
103 typedef struct scripting_node scripting_node;
104 typedef struct scripting_zone scripting_zone;
105 typedef struct scripting_resource scripting_resource;
106 typedef struct scripting_rtgroup scripting_rtgroup;
107 typedef struct scripting_apclass scripting_apclass;
108 typedef struct scripting_vollim scripting_vollim;
110 typedef enum am_method am_method;
111 typedef struct am_domainreg_data am_domainreg_data;
112 typedef struct am_nodereg_data am_nodereg_data;
113 typedef struct am_nodeunreg_data am_nodeunreg_data;
114 typedef struct am_ack_data am_ack_data;
115 typedef struct am_connect_data am_connect_data;
119 char *profile; /**< During profile change it contains the new profile
120 name. Otherwise it is NULL. When sink tracking
121 hooks called the card's active_profile still
122 points to the old profile */
128 pa_value_unknown = 0,
136 /* positive values are enumerations of pa_value_type
137 * negative values represent array dimensions,
138 * eg. -2 menas an array with two element
154 pa_null_sink *nullsink;
157 pa_audiomgr *audiomgr;
158 pa_routerif *routerif;
159 pa_discover *discover;
162 pa_constrain *constrain;
163 pa_multiplex *multiplex;
164 pa_loopback *loopback;
166 pa_scripting *scripting;
167 pa_mir_volume *volume;
168 pa_mir_config *config;
171 pa_native_protocol *protocol;
172 pa_murphyif *murphyif;
173 bool enable_multiplex;
181 * indent-tabs-mode: nil