update for beta release
[framework/uifw/e17.git] / src / modules / mixer / Pulse.h
1 #ifndef PULSE_H
2 #define PULSE_H
3
4 #include <Eina.h>
5 #include <inttypes.h>
6
7 #define PULSE_SUCCESS (void*)1
8
9 extern int PULSE_EVENT_CONNECTED;
10 extern int PULSE_EVENT_DISCONNECTED;
11 extern int PULSE_EVENT_CHANGE;
12 typedef struct Pulse Pulse;
13 typedef uint32_t Pulse_Tag_Id;
14 typedef struct Pulse_Sink Pulse_Sink;
15 typedef struct Pulse_Sink Pulse_Source;
16 typedef void (*Pulse_Cb)(Pulse *, Pulse_Tag_Id, void *);
17
18 typedef struct Pulse_Sink_Port_Info {
19     const char *name;                   /**< Name of this port */
20     const char *description;            /**< Description of this port */
21     uint32_t priority;                  /**< The higher this value is the more useful this port is as a default */
22 } Pulse_Sink_Port_Info;
23
24 int pulse_init(void);
25 void pulse_shutdown(void);
26
27 Pulse *pulse_new(void);
28 Eina_Bool pulse_connect(Pulse *conn);
29 void pulse_free(Pulse *conn);
30 void pulse_cb_set(Pulse *conn, uint32_t tagnum, Pulse_Cb cb);
31
32 uint32_t pulse_cards_get(Pulse *conn);
33 #define pulse_sinks_get(conn) pulse_types_get((conn), EINA_FALSE)
34 #define pulse_sources_get(conn) pulse_types_get((conn), EINA_TRUE)
35 uint32_t pulse_types_get(Pulse *conn, Eina_Bool source);
36 #define pulse_sink_get(conn, idx) pulse_type_get((conn), (idx), EINA_FALSE)
37 #define pulse_source_get(conn, idx) pulse_type_get((conn), (idx), EINA_FALSE)
38 uint32_t pulse_type_get(Pulse *conn, uint32_t idx, Eina_Bool source);
39 #define pulse_sink_mute_set(conn, idx, mute) pulse_type_mute_set((conn), (idx), (mute), EINA_FALSE)
40 #define pulse_source_mute_set(conn, idx, mute) pulse_type_mute_set((conn), (idx), (mute), EINA_TRUE)
41 uint32_t pulse_type_mute_set(Pulse *conn, uint32_t idx, Eina_Bool mute, Eina_Bool source);
42 #define pulse_sink_volume_set(conn, idx, channels, vol) pulse_type_volume_set((conn), (idx), (channels), (vol), EINA_FALSE)
43 #define pulse_source_volume_set(conn, idx, channels, vol) pulse_type_volume_set((conn), (idx), (channels), (vol), EINA_TRUE)
44 uint32_t pulse_type_volume_set(Pulse *conn, uint32_t sink_num, uint8_t channels, double vol, Eina_Bool source);
45
46 void pulse_sink_free(Pulse_Sink *sink);
47 const char *pulse_sink_name_get(Pulse_Sink *sink);
48 const char *pulse_sink_desc_get(Pulse_Sink *sink);
49 uint32_t pulse_sink_idx_get(Pulse_Sink *sink);
50 Eina_Bool pulse_sink_muted_get(Pulse_Sink *sink);
51 double pulse_sink_avg_get_pct(Pulse_Sink *sink);
52 float pulse_sink_balance_get(Pulse_Sink *sink);
53 uint8_t pulse_sink_channels_count(Pulse_Sink *sink);
54 Eina_List *pulse_sink_channel_names_get(Pulse_Sink *sink);
55 Eina_Bool pulse_sinks_watch(Pulse *conn);
56
57 const Eina_List *pulse_sink_ports_get(Pulse_Sink *sink);
58 const char *pulse_sink_port_active_get(Pulse_Sink *sink);
59 #define pulse_source_channel_volume_set pulse_sink_channel_volume_set
60 uint32_t pulse_sink_channel_volume_set(Pulse *conn, Pulse_Sink *sink, uint32_t id, double vol);
61 uint32_t pulse_sink_port_set(Pulse *conn, Pulse_Sink *sink, const char *port);
62 double pulse_sink_channel_volume_get(Pulse_Sink *sink, unsigned int id);
63 float pulse_sink_channel_balance_get(Pulse_Sink *sink, unsigned int id);
64 float pulse_sink_channel_depth_get(Pulse_Sink *sink, unsigned int id);
65 unsigned int pulse_sink_channel_name_get_id(Pulse_Sink *sink, const char *name);
66 const char *pulse_sink_channel_id_get_name(Pulse_Sink *sink, unsigned int id);
67
68 #endif