format: Fix channel map handling

Channel map handling in the extended API was broken. Thanks for Milos_SD
for pointing this out on IRC.
This commit is contained in:
Arun Raghavan 2011-05-20 19:21:02 +05:30
parent f4eccad1e6
commit 117c714594
2 changed files with 9 additions and 7 deletions

View file

@ -193,11 +193,9 @@ pa_bool_t pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, p
if (map) {
pa_channel_map_init(map);
if (!pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m))
goto out;
if (m && pa_channel_map_parse(map, m) == NULL)
goto out;
if (pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m))
if (pa_channel_map_parse(map, m) == NULL)
goto out;
}
ret = TRUE;
@ -281,7 +279,10 @@ pa_bool_t pa_format_info_get_prop_string(pa_format_info *f, const char *key, cha
pa_assert(key);
pa_assert(v);
pa_return_val_if_fail(str = pa_proplist_gets(f->plist, key), FALSE);
str = pa_proplist_gets(f->plist, key), FALSE;
if (!str)
return FALSE;
o = json_tokener_parse(str);
pa_return_val_if_fail(!is_error(o), FALSE);
if (json_object_get_type(o) != json_type_string) {

View file

@ -262,7 +262,8 @@ int pa_sink_input_new(
* to using the sample spec and channel map after all decisions w.r.t.
* routing are complete. */
pa_idxset *tmp = pa_idxset_new(NULL, NULL);
pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec, &data->channel_map);
pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec,
data->channel_map_is_set ? &data->channel_map : NULL);
pa_idxset_put(tmp, f, NULL);
pa_sink_input_new_data_set_formats(data, tmp);
}