mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-04 13:29:59 -05:00
export pa_channel_map_superset()
This commit is contained in:
parent
7368a6e6be
commit
04e9214065
4 changed files with 24 additions and 20 deletions
|
|
@ -18,6 +18,7 @@ pa_channel_map_init_mono;
|
||||||
pa_channel_map_init_stereo;
|
pa_channel_map_init_stereo;
|
||||||
pa_channel_map_parse;
|
pa_channel_map_parse;
|
||||||
pa_channel_map_snprint;
|
pa_channel_map_snprint;
|
||||||
|
pa_channel_map_superset;
|
||||||
pa_channel_map_valid;
|
pa_channel_map_valid;
|
||||||
pa_channel_position_to_pretty_string;
|
pa_channel_position_to_pretty_string;
|
||||||
pa_channel_position_to_string;
|
pa_channel_position_to_string;
|
||||||
|
|
|
||||||
|
|
@ -574,25 +574,6 @@ static const struct pa_alsa_profile_info device_table[] = {
|
||||||
{{ 0, { 0 }}, NULL, NULL, NULL, 0 }
|
{{ 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(
|
snd_pcm_t *pa_alsa_open_by_device_id(
|
||||||
const char *dev_id,
|
const char *dev_id,
|
||||||
char **dev,
|
char **dev,
|
||||||
|
|
@ -629,7 +610,7 @@ snd_pcm_t *pa_alsa_open_by_device_id(
|
||||||
i = 0;
|
i = 0;
|
||||||
for (;;) {
|
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_sample_spec try_ss;
|
||||||
|
|
||||||
pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
|
pa_log_debug("Checking for %s (%s)", device_table[i].name, device_table[i].alsa_name);
|
||||||
|
|
|
||||||
|
|
@ -577,3 +577,22 @@ int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *s
|
||||||
|
|
||||||
return map->channels == ss->channels;
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,9 @@ int pa_channel_map_valid(const pa_channel_map *map) PA_GCC_PURE;
|
||||||
* the specified sample spec. \since 0.9.12 */
|
* 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;
|
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
|
PA_C_DECL_END
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue