pnmixer
Volume mixer for the system tray
audio.h
Go to the documentation of this file.
1 /* audio.h
2  * PNmixer is written by Nick Lanham, a fork of OBmixer
3  * which was programmed by Lee Ferrett, derived
4  * from the program "AbsVolume" by Paul Sherman
5  * This program is free software; you can redistribute
6  * it and/or modify it under the terms of the GNU General
7  * Public License v3. source code is available at
8  * <http://github.com/nicklan/pnmixer>
9  */
10 
17 #ifndef _AUDIO_H_
18 #define _AUDIO_H_
19 
20 #include <glib.h>
21 
22 /* High-level audio functions, no need to have a soundcard ready for that */
23 
24 GSList *audio_get_card_list(void);
25 GSList *audio_get_channel_list(const char *card);
26 
27 /* Soundcard management */
28 
29 typedef struct audio Audio;
30 
31 Audio *audio_new(void);
32 void audio_free(Audio *audio);
33 void audio_reload(Audio *audio);
34 
35 /* Audio status: card & channel name, mute & volume handling.
36  * Everyone who changes the volume must say who he is.
37  */
38 
39 enum audio_user {
44 };
45 
46 typedef enum audio_user AudioUser;
47 
48 const char *audio_get_card(Audio *audio);
49 const char *audio_get_channel(Audio *audio);
50 gboolean audio_has_mute(Audio *audio);
51 gboolean audio_is_muted(Audio *audio);
53 gdouble audio_get_volume(Audio *audio);
54 void audio_set_volume(Audio *audio, AudioUser user, gdouble volume, gint direction);
57 
58 /* Signal handling.
59  * The audio system sends signals out there when something happens.
60  */
61 
69 };
70 
72 
73 struct audio_event {
76  const gchar *card;
77  const gchar *channel;
78  gboolean has_mute;
79  gboolean muted;
80  gdouble volume;
81 };
82 
83 typedef struct audio_event AudioEvent;
84 
85 typedef void (*AudioCallback) (Audio *audio, AudioEvent *event, gpointer data);
86 
87 void audio_signals_connect(Audio *audio, AudioCallback callback, gpointer data);
88 void audio_signals_disconnect(Audio *audio, AudioCallback callback, gpointer data);
89 
90 #endif // _AUDIO_H
void audio_set_volume(Audio *audio, AudioUser user, gdouble volume, gint direction)
Definition: audio.c:500
void audio_signals_connect(Audio *audio, AudioCallback callback, gpointer data)
Definition: audio.c:337
gboolean audio_is_muted(Audio *audio)
Definition: audio.c:395
const gchar * card
Definition: audio.h:76
enum audio_signal AudioSignal
Definition: audio.h:71
enum audio_user AudioUser
Definition: audio.h:46
GSList * audio_get_channel_list(const char *card)
Definition: audio.c:739
void audio_lower_volume(Audio *audio, AudioUser user)
Definition: audio.c:516
static Audio * audio
Definition: main.c:40
const char * audio_get_channel(Audio *audio)
Definition: audio.c:366
audio_signal
Definition: audio.h:62
Audio * audio_new(void)
Definition: audio.c:710
void audio_free(Audio *audio)
Definition: audio.c:691
gboolean muted
Definition: audio.h:79
gboolean has_mute
Definition: audio.h:78
gdouble audio_get_volume(Audio *audio)
Definition: audio.c:437
void audio_signals_disconnect(Audio *audio, AudioCallback callback, gpointer data)
Definition: audio.c:318
GSList * audio_get_card_list(void)
Definition: audio.c:726
gboolean audio_has_mute(Audio *audio)
Definition: audio.c:378
void audio_reload(Audio *audio)
Definition: audio.c:669
Definition: audio.c:198
AudioUser user
Definition: audio.h:75
AudioSignal signal
Definition: audio.h:74
void(* AudioCallback)(Audio *audio, AudioEvent *event, gpointer data)
Definition: audio.h:85
const char * audio_get_card(Audio *audio)
Definition: audio.c:353
const gchar * channel
Definition: audio.h:77
void audio_raise_volume(Audio *audio, AudioUser user)
Definition: audio.c:536
void audio_toggle_mute(Audio *audio, AudioUser user)
Definition: audio.c:412
audio_user
Definition: audio.h:39
gdouble volume
Definition: audio.h:80