summaryrefslogtreecommitdiffstats
path: root/src/modules/alsa
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-01-20 20:35:18 +0100
committerLennart Poettering <lennart@poettering.net>2009-01-20 20:35:18 +0100
commit7368a6e6be5dbbdc8e13003ef6841fe3fe1840bc (patch)
tree0c1fbef18992fcdb5d782f4988d54e25e8e00b10 /src/modules/alsa
parentb3a043fd3179fcb60730466ae43f16ffe14a9b4c (diff)
add priority logic to find best default profile
Diffstat (limited to 'src/modules/alsa')
-rw-r--r--src/modules/alsa/alsa-util.c35
-rw-r--r--src/modules/alsa/alsa-util.h1
-rw-r--r--src/modules/alsa/module-alsa-card.c1
3 files changed, 25 insertions, 12 deletions
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 65221764..eb7042b8 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -495,62 +495,72 @@ static const struct pa_alsa_profile_info device_table[] = {
{{ 1, { PA_CHANNEL_POSITION_MONO }},
"hw",
"Analog Mono",
- "analog-mono" },
+ "analog-mono",
+ 1 },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"front",
"Analog Stereo",
- "analog-stereo" },
+ "analog-stereo",
+ 10 },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"iec958",
"IEC958 Digital Stereo",
- "iec958-stereo" },
+ "iec958-stereo",
+ 5 },
{{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }},
"hdmi",
"HDMI Digital Stereo",
- "hdmi-stereo"},
+ "hdmi-stereo",
+ 4 },
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
"surround40",
"Analog Surround 4.0",
- "analog-surround-40" },
+ "analog-surround-40",
+ 7 },
{{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }},
"a52",
"IEC958/AC3 Digital Surround 4.0",
- "iec958-ac3-surround-40" },
+ "iec958-ac3-surround-40",
+ 2 },
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_LFE }},
"surround41",
"Analog Surround 4.1",
- "analog-surround-41"},
+ "analog-surround-41",
+ 7 },
{{ 5, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_CENTER }},
"surround50",
"Analog Surround 5.0",
- "analog-surround-50" },
+ "analog-surround-50",
+ 7 },
{{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE }},
"surround51",
"Analog Surround 5.1",
- "analog-surround-51" },
+ "analog-surround-51",
+ 8 },
{{ 6, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_CENTER,
PA_CHANNEL_POSITION_FRONT_RIGHT, PA_CHANNEL_POSITION_REAR_LEFT,
PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_LFE}},
"a52",
"IEC958/AC3 Digital Surround 5.1",
- "iec958-ac3-surround-51" },
+ "iec958-ac3-surround-51",
+ 3 },
{{ 8, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT,
PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT,
@@ -558,9 +568,10 @@ static const struct pa_alsa_profile_info device_table[] = {
PA_CHANNEL_POSITION_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_RIGHT }},
"surround71",
"Analog Surround 7.1",
- "analog-surround-71" },
+ "analog-surround-71",
+ 7 },
- {{ 0, { 0 }}, NULL, NULL, NULL }
+ {{ 0, { 0 }}, NULL, NULL, NULL, 0 }
};
static pa_bool_t channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index f58ec8e0..59656252 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -86,6 +86,7 @@ typedef struct pa_alsa_profile_info {
const char *alsa_name;
const char *description;
const char *name;
+ unsigned priority;
} pa_alsa_profile_info;
int pa_alsa_probe_profiles(
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index ac6083de..6c947c06 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -108,6 +108,7 @@ static void enumerate_cb(
pa_xfree(t);
pa_xfree(n);
+ p->priority = (sink ? sink->priority : 0)*100 + (source ? source->priority : 0);
p->n_sinks = !!sink;
p->n_sources = !!source;