summaryrefslogtreecommitdiff
path: root/backends/pulse/pulse-helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'backends/pulse/pulse-helpers.c')
-rw-r--r--backends/pulse/pulse-helpers.c91
1 files changed, 42 insertions, 49 deletions
diff --git a/backends/pulse/pulse-helpers.c b/backends/pulse/pulse-helpers.c
index 73f8cdb..671c3e2 100644
--- a/backends/pulse/pulse-helpers.c
+++ b/backends/pulse/pulse-helpers.c
@@ -24,58 +24,51 @@
#include "pulse-helpers.h"
-typedef struct {
- MateMixerChannelPosition mm_position;
- pa_channel_position_t pa_position;
-} PositionMap;
-
-// XXX optimize
-static PositionMap const position_map[] = {
- { MATE_MIXER_CHANNEL_UNKNOWN, PA_CHANNEL_POSITION_INVALID },
- { MATE_MIXER_CHANNEL_MONO, PA_CHANNEL_POSITION_MONO },
- { MATE_MIXER_CHANNEL_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_LEFT },
- { MATE_MIXER_CHANNEL_FRONT_RIGHT, PA_CHANNEL_POSITION_FRONT_RIGHT },
- { MATE_MIXER_CHANNEL_FRONT_CENTER, PA_CHANNEL_POSITION_FRONT_CENTER },
- { MATE_MIXER_CHANNEL_LFE, PA_CHANNEL_POSITION_LFE },
- { MATE_MIXER_CHANNEL_BACK_LEFT, PA_CHANNEL_POSITION_REAR_LEFT },
- { MATE_MIXER_CHANNEL_BACK_RIGHT, PA_CHANNEL_POSITION_REAR_RIGHT },
- { MATE_MIXER_CHANNEL_BACK_CENTER, PA_CHANNEL_POSITION_REAR_CENTER },
- { MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER, PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER },
- { MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER, PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER },
- { MATE_MIXER_CHANNEL_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_LEFT },
- { MATE_MIXER_CHANNEL_SIDE_RIGHT, PA_CHANNEL_POSITION_SIDE_RIGHT },
- { MATE_MIXER_CHANNEL_TOP_FRONT_LEFT, PA_CHANNEL_POSITION_TOP_FRONT_LEFT },
- { MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT, PA_CHANNEL_POSITION_TOP_FRONT_RIGHT },
- { MATE_MIXER_CHANNEL_TOP_FRONT_CENTER, PA_CHANNEL_POSITION_TOP_FRONT_CENTER },
- { MATE_MIXER_CHANNEL_TOP_CENTER, PA_CHANNEL_POSITION_TOP_CENTER },
- { MATE_MIXER_CHANNEL_TOP_BACK_LEFT, PA_CHANNEL_POSITION_TOP_REAR_LEFT },
- { MATE_MIXER_CHANNEL_TOP_BACK_RIGHT, PA_CHANNEL_POSITION_TOP_REAR_RIGHT },
- { MATE_MIXER_CHANNEL_TOP_BACK_CENTER, PA_CHANNEL_POSITION_TOP_REAR_CENTER },
-};
-
-MateMixerChannelPosition
-pulse_convert_position_from_pulse (pa_channel_position_t position)
+const MateMixerChannelPosition pulse_channel_map_from[PA_CHANNEL_POSITION_MAX] =
{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (position_map); i++) {
- if (position == position_map[i].pa_position)
- return position_map[i].mm_position;
- }
- return MATE_MIXER_CHANNEL_UNKNOWN;
-}
+ [PA_CHANNEL_POSITION_MONO] = MATE_MIXER_CHANNEL_MONO,
+ [PA_CHANNEL_POSITION_FRONT_LEFT] = MATE_MIXER_CHANNEL_FRONT_LEFT,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT] = MATE_MIXER_CHANNEL_FRONT_RIGHT,
+ [PA_CHANNEL_POSITION_FRONT_CENTER] = MATE_MIXER_CHANNEL_FRONT_CENTER,
+ [PA_CHANNEL_POSITION_LFE] = MATE_MIXER_CHANNEL_LFE,
+ [PA_CHANNEL_POSITION_REAR_LEFT] = MATE_MIXER_CHANNEL_BACK_LEFT,
+ [PA_CHANNEL_POSITION_REAR_RIGHT] = MATE_MIXER_CHANNEL_BACK_RIGHT,
+ [PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER] = MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER,
+ [PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER] = MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER,
+ [PA_CHANNEL_POSITION_SIDE_LEFT] = MATE_MIXER_CHANNEL_SIDE_LEFT,
+ [PA_CHANNEL_POSITION_SIDE_RIGHT] = MATE_MIXER_CHANNEL_SIDE_RIGHT,
+ [PA_CHANNEL_POSITION_TOP_FRONT_LEFT] = MATE_MIXER_CHANNEL_TOP_FRONT_LEFT,
+ [PA_CHANNEL_POSITION_TOP_FRONT_RIGHT] = MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT,
+ [PA_CHANNEL_POSITION_TOP_FRONT_CENTER] = MATE_MIXER_CHANNEL_TOP_FRONT_CENTER,
+ [PA_CHANNEL_POSITION_TOP_CENTER] = MATE_MIXER_CHANNEL_TOP_CENTER,
+ [PA_CHANNEL_POSITION_TOP_REAR_LEFT] = MATE_MIXER_CHANNEL_TOP_BACK_LEFT,
+ [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = MATE_MIXER_CHANNEL_TOP_BACK_RIGHT,
+ [PA_CHANNEL_POSITION_TOP_REAR_CENTER] = MATE_MIXER_CHANNEL_TOP_BACK_CENTER
+};
-pa_channel_position_t
-pulse_convert_position_to_pulse (MateMixerChannelPosition position)
+const pa_channel_position_t pulse_channel_map_to[MATE_MIXER_CHANNEL_MAX] =
{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (position_map); i++) {
- if (position == position_map[i].mm_position)
- return position_map[i].pa_position;
- }
- return PA_CHANNEL_POSITION_INVALID;
-}
+ [MATE_MIXER_CHANNEL_UNKNOWN] = PA_CHANNEL_POSITION_INVALID,
+ [MATE_MIXER_CHANNEL_MONO] = PA_CHANNEL_POSITION_MONO,
+ [MATE_MIXER_CHANNEL_FRONT_LEFT] = PA_CHANNEL_POSITION_FRONT_LEFT,
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT] = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ [MATE_MIXER_CHANNEL_FRONT_CENTER] = PA_CHANNEL_POSITION_FRONT_CENTER,
+ [MATE_MIXER_CHANNEL_LFE] = PA_CHANNEL_POSITION_LFE,
+ [MATE_MIXER_CHANNEL_BACK_LEFT] = PA_CHANNEL_POSITION_REAR_LEFT,
+ [MATE_MIXER_CHANNEL_BACK_RIGHT] = PA_CHANNEL_POSITION_REAR_RIGHT,
+ [MATE_MIXER_CHANNEL_BACK_CENTER] = PA_CHANNEL_POSITION_REAR_CENTER,
+ [MATE_MIXER_CHANNEL_FRONT_LEFT_CENTER] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
+ [MATE_MIXER_CHANNEL_FRONT_RIGHT_CENTER] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+ [MATE_MIXER_CHANNEL_SIDE_LEFT] = PA_CHANNEL_POSITION_SIDE_LEFT,
+ [MATE_MIXER_CHANNEL_SIDE_RIGHT] = PA_CHANNEL_POSITION_SIDE_RIGHT,
+ [MATE_MIXER_CHANNEL_TOP_FRONT_LEFT] = PA_CHANNEL_POSITION_TOP_FRONT_LEFT,
+ [MATE_MIXER_CHANNEL_TOP_FRONT_RIGHT] = PA_CHANNEL_POSITION_TOP_FRONT_RIGHT,
+ [MATE_MIXER_CHANNEL_TOP_FRONT_CENTER] = PA_CHANNEL_POSITION_TOP_FRONT_CENTER,
+ [MATE_MIXER_CHANNEL_TOP_CENTER] = PA_CHANNEL_POSITION_TOP_CENTER,
+ [MATE_MIXER_CHANNEL_TOP_BACK_LEFT] = PA_CHANNEL_POSITION_TOP_REAR_LEFT,
+ [MATE_MIXER_CHANNEL_TOP_BACK_RIGHT] = PA_CHANNEL_POSITION_TOP_REAR_RIGHT,
+ [MATE_MIXER_CHANNEL_TOP_BACK_CENTER] = PA_CHANNEL_POSITION_TOP_REAR_CENTER
+};
MateMixerStreamControlMediaRole
pulse_convert_media_role_name (const gchar *name)