pa_channel_map_init_stereo;
pa_channel_map_parse;
pa_channel_map_snprint;
+pa_channel_map_superset;
pa_channel_map_valid;
pa_channel_position_to_pretty_string;
pa_channel_position_to_string;
{{ 0, { 0 }}, NULL, NULL, NULL, 0 }
};
-static pa_bool_t channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
- pa_bool_t in_a[PA_CHANNEL_POSITION_MAX];
- unsigned i;
-
- pa_assert(a);
- pa_assert(b);
-
- memset(in_a, 0, sizeof(in_a));
-
- for (i = 0; i < a->channels; i++)
- in_a[a->map[i]] = TRUE;
-
- for (i = 0; i < b->channels; i++)
- if (!in_a[b->map[i]])
- return FALSE;
-
- return TRUE;
-}
-
snd_pcm_t *pa_alsa_open_by_device_id(
const char *dev_id,
char **dev,
i = 0;
for (;;) {
- if ((direction > 0) == channel_map_superset(&device_table[i].map, map)) {
+ if ((direction > 0) == pa_channel_map_superset(&device_table[i].map, map)) {
pa_sample_spec try_ss;
pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
return map->channels == ss->channels;
}
+
+int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
+ pa_bool_t in_a[PA_CHANNEL_POSITION_MAX];
+ unsigned i;
+
+ pa_assert(a);
+ pa_assert(b);
+
+ memset(in_a, 0, sizeof(in_a));
+
+ for (i = 0; i < a->channels; i++)
+ in_a[a->map[i]] = TRUE;
+
+ for (i = 0; i < b->channels; i++)
+ if (!in_a[b->map[i]])
+ return 0;
+
+ return 1;
+}
* the specified sample spec. \since 0.9.12 */
int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *ss) PA_GCC_PURE;
+/** Returns non-zero if every channel defined in b is also defined in a. \since 0.9.15 */
+int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) PA_GCC_PURE;
+
PA_C_DECL_END
#endif