]> code.delx.au - pulseaudio/blob - src/pulsecore/card.h
rename card config to card profile
[pulseaudio] / src / pulsecore / card.h
1 #ifndef foopulsecardhfoo
2 #define foopulsecardhfoo
3
4 /***
5 This file is part of PulseAudio.
6
7 Copyright 2009 Lennart Poettering
8
9 PulseAudio is free software; you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published
11 by the Free Software Foundation; either version 2 of the License,
12 or (at your option) any later version.
13
14 PulseAudio is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with PulseAudio; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 USA.
23 ***/
24
25 typedef struct pa_card pa_card;
26
27 #include <pulse/proplist.h>
28 #include <pulsecore/core.h>
29 #include <pulsecore/module.h>
30 #include <pulsecore/idxset.h>
31
32 typedef struct pa_card_profile {
33 char *name;
34
35 pa_bool_t optical_sink:1;
36 pa_bool_t optical_source:1;
37
38 unsigned n_sinks;
39 unsigned n_sources;
40
41 unsigned max_sink_channels;
42 unsigned max_source_channels;
43 } pa_card_profile;
44
45 struct pa_card {
46 uint32_t index;
47 pa_core *core;
48
49 char *name;
50
51 pa_proplist *proplist;
52 pa_module *module;
53 char *driver;
54
55 pa_idxset *sinks;
56 pa_idxset *sources;
57
58 pa_hashmap *profiles;
59 pa_card_profile *active_profile;
60
61 void *userdata;
62
63 int (*set_profile)(pa_card *c, pa_card_profile *profile);
64 };
65
66 typedef struct pa_card_new_data {
67 char *name;
68
69 pa_proplist *proplist;
70 const char *driver;
71 pa_module *module;
72
73 pa_hashmap *profiles;
74 pa_card_profile *active_profile;
75
76 pa_bool_t namereg_fail:1;
77 } pa_card_new_data;
78
79 pa_card_profile *pa_card_profile_new(const char *name);
80 void pa_card_profile_free(pa_card_profile *c);
81
82 pa_card_new_data *pa_card_new_data_init(pa_card_new_data *data);
83 void pa_card_new_data_set_name(pa_card_new_data *data, const char *name);
84 void pa_card_new_data_done(pa_card_new_data *data);
85
86 pa_card *pa_card_new(pa_core *c, pa_card_new_data *data);
87 void pa_card_free(pa_card *c);
88
89 int pa_card_set_profile(pa_card *c, const char *name);
90
91 #endif