summaryrefslogtreecommitdiff
path: root/mate-volume-control/src/mvc-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-volume-control/src/mvc-helpers.c')
-rw-r--r--mate-volume-control/src/mvc-helpers.c118
1 files changed, 57 insertions, 61 deletions
diff --git a/mate-volume-control/src/mvc-helpers.c b/mate-volume-control/src/mvc-helpers.c
index 7488743..4f572fc 100644
--- a/mate-volume-control/src/mvc-helpers.c
+++ b/mate-volume-control/src/mvc-helpers.c
@@ -26,77 +26,73 @@
#include <libmatemixer/matemixer.h>
-#ifdef HAVE_PULSEAUDIO
-#include <pulse/pulseaudio.h>
-#endif
-
#include "mvc-helpers.h"
-#ifdef HAVE_PULSEAUDIO
-static pa_channel_position_t
-position_to_pulse (MateMixerChannelPosition position)
-{
- switch (position) {
- case MATE_MIXER_CHANNEL_MONO:
- return PA_CHANNEL_POSITION_MONO;
- case MATE_MIXER_CHANNEL_FRONT_LEFT:
- return PA_CHANNEL_POSITION_FRONT_LEFT;
- case MATE_MIXER_CHANNEL_FRONT_RIGHT:
- return PA_CHANNEL_POSITION_FRONT_RIGHT;
- case MATE_MIXER_CHANNEL_FRONT_CENTER:
- return PA_CHANNEL_POSITION_FRONT_CENTER;
- case MATE_MIXER_CHANNEL_LFE:
- return PA_CHANNEL_POSITION_LFE;
- case MATE_MIXER_CHANNEL_BACK_LEFT:
- return PA_CHANNEL_POSITION_REAR_LEFT;
- case MATE_MIXER_CHANNEL_BACK_RIGHT:
- return PA_CHANNEL_POSITION_REAR_RIGHT;
- case MATE_MIXER_CHANNEL_BACK_CENTER:
- return PA_CHANNEL_POSITION_REAR_CENTER;
- case MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER:
- return PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
- case MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER:
- return PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
- case MATE_MIXER_CHANNEL_SIDE_LEFT:
- return PA_CHANNEL_POSITION_SIDE_LEFT;
- case MATE_MIXER_CHANNEL_SIDE_RIGHT:
- return PA_CHANNEL_POSITION_SIDE_RIGHT;
- case MATE_MIXER_CHANNEL_TOP_FRONT_LEFT:
- return PA_CHANNEL_POSITION_TOP_FRONT_LEFT;
- case MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT:
- return PA_CHANNEL_POSITION_TOP_FRONT_RIGHT;
- case MATE_MIXER_CHANNEL_TOP_FRONT_CENTER:
- return PA_CHANNEL_POSITION_TOP_FRONT_CENTER;
- case MATE_MIXER_CHANNEL_TOP_CENTER:
- return PA_CHANNEL_POSITION_TOP_CENTER;
- case MATE_MIXER_CHANNEL_TOP_BACK_LEFT:
- return PA_CHANNEL_POSITION_TOP_REAR_LEFT;
- case MATE_MIXER_CHANNEL_TOP_BACK_RIGHT:
- return PA_CHANNEL_POSITION_TOP_REAR_RIGHT;
- case MATE_MIXER_CHANNEL_TOP_BACK_CENTER:
- return PA_CHANNEL_POSITION_TOP_REAR_CENTER;
- default:
- return PA_CHANNEL_POSITION_INVALID;
- }
-}
-#endif
+/* libcanberra requires a PulseAudio channel name to be given to its
+ * CA_PROP_CANBERRA_FORCE_CHANNEL property.
+ *
+ * The strings here are copied from PulseAudio source code to avoid depending
+ * on libpulse. */
+static const gchar *pulse_position[MATE_MIXER_CHANNEL_MAX] = {
+ [MATE_MIXER_CHANNEL_MONO] = "mono",
+ [MATE_MIXER_CHANNEL_FRONT_LEFT] = "front-left",
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT] = "front-right",
+ [MATE_MIXER_CHANNEL_FRONT_CENTER] = "front-center",
+ [MATE_MIXER_CHANNEL_LFE] = "lfe",
+ [MATE_MIXER_CHANNEL_BACK_LEFT] = "rear-left",
+ [MATE_MIXER_CHANNEL_BACK_RIGHT] = "rear-right",
+ [MATE_MIXER_CHANNEL_BACK_CENTER] = "rear-center",
+ [MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER] = "front-left-of-center",
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER] = "front-right-of-center",
+ [MATE_MIXER_CHANNEL_SIDE_LEFT] = "side-left",
+ [MATE_MIXER_CHANNEL_SIDE_RIGHT] = "side-right",
+ [MATE_MIXER_CHANNEL_TOP_FRONT_LEFT] = "top-front-left",
+ [MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT] = "top-front-right",
+ [MATE_MIXER_CHANNEL_TOP_FRONT_CENTER] = "top-front-center",
+ [MATE_MIXER_CHANNEL_TOP_CENTER] = "top-center",
+ [MATE_MIXER_CHANNEL_TOP_BACK_LEFT] = "top-rear-left",
+ [MATE_MIXER_CHANNEL_TOP_BACK_RIGHT] = "top-rear-right",
+ [MATE_MIXER_CHANNEL_TOP_BACK_CENTER] = "top-rear-center"
+};
+
+static const gchar *pretty_position[MATE_MIXER_CHANNEL_MAX] = {
+ [MATE_MIXER_CHANNEL_UNKNOWN] = N_("Unknown"),
+ /* Speaker channel names */
+ [MATE_MIXER_CHANNEL_MONO] = N_("Mono"),
+ [MATE_MIXER_CHANNEL_FRONT_LEFT] = N_("Front Left"),
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT] = N_("Front Right"),
+ [MATE_MIXER_CHANNEL_FRONT_CENTER] = N_("Front Center"),
+ [MATE_MIXER_CHANNEL_LFE] = N_("LFE"),
+ [MATE_MIXER_CHANNEL_BACK_LEFT] = N_("Rear Left"),
+ [MATE_MIXER_CHANNEL_BACK_RIGHT] = N_("Rear Right"),
+ [MATE_MIXER_CHANNEL_BACK_CENTER] = N_("Rear Center"),
+ [MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER] = N_("Front Left of Center"),
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER] = N_("Front Right of Center"),
+ [MATE_MIXER_CHANNEL_SIDE_LEFT] = N_("Side Left"),
+ [MATE_MIXER_CHANNEL_SIDE_RIGHT] = N_("Side Right"),
+ [MATE_MIXER_CHANNEL_TOP_FRONT_LEFT] = N_("Top Front Left"),
+ [MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT] = N_("Top Front Right"),
+ [MATE_MIXER_CHANNEL_TOP_FRONT_CENTER] = N_("Top Front Center"),
+ [MATE_MIXER_CHANNEL_TOP_CENTER] = N_("Top Center"),
+ [MATE_MIXER_CHANNEL_TOP_BACK_LEFT] = N_("Top Rear Left"),
+ [MATE_MIXER_CHANNEL_TOP_BACK_RIGHT] = N_("Top Rear Right"),
+ [MATE_MIXER_CHANNEL_TOP_BACK_CENTER] = N_("Top Rear Center")
+};
const gchar *
-mvc_channel_position_to_string (MateMixerChannelPosition position)
+mvc_channel_position_to_pulse_string (MateMixerChannelPosition position)
{
-#ifdef HAVE_PULSEAUDIO
- return pa_channel_position_to_string (position_to_pulse (position));
-#endif
- return NULL;
+ g_return_val_if_fail (position >= 0 && position < MATE_MIXER_CHANNEL_MAX, NULL);
+
+ return pulse_position[position];
}
const gchar *
mvc_channel_position_to_pretty_string (MateMixerChannelPosition position)
{
-#ifdef HAVE_PULSEAUDIO
- return pa_channel_position_to_pretty_string (position_to_pulse (position));
-#endif
- return NULL;
+ g_return_val_if_fail (position >= 0 && position < MATE_MIXER_CHANNEL_MAX, NULL);
+
+ return pretty_position[position];
}
const gchar *