volumecontrol: first part
[profile/ivi/pulseaudio-module-murphy-ivi.git] / murphy / volume.h
1 #ifndef foomirvolumefoo
2 #define foomirvolumefoo
3
4 #include <sys/types.h>
5
6 #include "userdata.h"
7 #include "list.h"
8
9 typedef double (*mir_volume_func_t)(struct userdata *, int, mir_node *, void*);
10
11
12 struct mir_vlim {
13     size_t         maxentry;    /**< length of the class table  */
14     size_t         nclass;      /**< number of classes (0 - maxentry) */
15     int           *classes;     /**< class table  */
16     uint32_t       stamp;
17 };
18
19 struct mir_volume_suppress_arg {
20     double attenuation;
21     struct {
22         size_t nclass;
23         int *classes;
24     } exception;
25 };
26
27
28 pa_mir_volume *pa_mir_volume_init(struct userdata *);
29 void pa_mir_volume_done(struct userdata *);
30
31 void mir_volume_add_class_limit(struct userdata *,int,mir_volume_func_t,void*);
32 void mir_volume_add_generic_limit(struct userdata *, mir_volume_func_t,void *);
33
34 void mir_volume_add_limiting_class(struct userdata *,mir_node *,int,uint32_t);
35 double mir_volume_apply_limits(struct userdata *, mir_node *, int, uint32_t);
36
37 double mir_volume_suppress(struct userdata *, int, mir_node *, void *);
38 double mir_volume_correction(struct userdata *, int, mir_node *, void *);
39
40 #endif  /* foomirvolumefoo */
41
42
43 /*
44  * Local Variables:
45  * c-basic-offset: 4
46  * indent-tabs-mode: nil
47  * End:
48  *
49  */