mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-06 13:29:56 -05:00
merge r2105 from trunk
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/prepare-0.9.10@2159 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
b0a20498db
commit
b79c6b6bc0
13 changed files with 39 additions and 18 deletions
|
|
@ -615,8 +615,10 @@ snd_pcm_t *pa_alsa_open_by_device_string(
|
||||||
|
|
||||||
*dev = d;
|
*dev = d;
|
||||||
|
|
||||||
if (ss->channels != map->channels)
|
if (ss->channels != map->channels) {
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(map, ss->channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(map, ss->channels, PA_CHANNEL_MAP_ALSA);
|
pa_channel_map_init_auto(map, ss->channels, PA_CHANNEL_MAP_ALSA);
|
||||||
|
}
|
||||||
|
|
||||||
return pcm_handle;
|
return pcm_handle;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -988,8 +988,10 @@ int pa__init(pa_module*m) {
|
||||||
|
|
||||||
if (master_sink && ss.channels == master_sink->sample_spec.channels)
|
if (master_sink && ss.channels == master_sink->sample_spec.channels)
|
||||||
map = master_sink->channel_map;
|
map = master_sink->channel_map;
|
||||||
else
|
else {
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_channel_map_init_auto(&map, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
if ((pa_modargs_get_channel_map(ma, NULL, &map) < 0)) {
|
if ((pa_modargs_get_channel_map(ma, NULL, &map) < 0)) {
|
||||||
pa_log("Invalid channel map.");
|
pa_log("Invalid channel map.");
|
||||||
|
|
|
||||||
|
|
@ -333,6 +333,7 @@ int pa__init(pa_module*m) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
|
pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
|
||||||
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
|
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
|
||||||
pa_log("Failed to parse channel_map= argument.");
|
pa_log("Failed to parse channel_map= argument.");
|
||||||
|
|
|
||||||
|
|
@ -304,6 +304,7 @@ int pa__init(pa_module*m) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
|
pa_channel_map_init_auto(&map, channels, PA_CHANNEL_MAP_ALSA);
|
||||||
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
|
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
|
||||||
pa_log("failed to parse channel_map= argument.");
|
pa_log("failed to parse channel_map= argument.");
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,7 @@ static void resolver_cb(
|
||||||
pa_module *m;
|
pa_module *m;
|
||||||
|
|
||||||
ss = u->core->default_sample_spec;
|
ss = u->core->default_sample_spec;
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
||||||
|
|
||||||
for (l = txt; l; l = l->next) {
|
for (l = txt; l; l = l->next) {
|
||||||
|
|
@ -189,8 +190,10 @@ static void resolver_cb(
|
||||||
avahi_free(value);
|
avahi_free(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!channel_map_set && cm.channels != ss.channels)
|
if (!channel_map_set && cm.channels != ss.channels) {
|
||||||
|
pa_assert_se(pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_AUX));
|
||||||
pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_channel_map_init_auto(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
if (!pa_sample_spec_valid(&ss)) {
|
if (!pa_sample_spec_valid(&ss)) {
|
||||||
pa_log("Service '%s' contains an invalid sample specification.", name);
|
pa_log("Service '%s' contains an invalid sample specification.", name);
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@
|
||||||
pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map) {
|
pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map) {
|
||||||
pa_stream *s;
|
pa_stream *s;
|
||||||
int i;
|
int i;
|
||||||
|
pa_channel_map tmap;
|
||||||
|
|
||||||
pa_assert(c);
|
pa_assert(c);
|
||||||
pa_assert(PA_REFCNT_VALUE(c) >= 1);
|
pa_assert(PA_REFCNT_VALUE(c) >= 1);
|
||||||
|
|
@ -54,6 +55,9 @@ pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *
|
||||||
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 12 || (ss->format != PA_SAMPLE_S32LE || ss->format != PA_SAMPLE_S32NE), PA_ERR_NOTSUPPORTED);
|
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 12 || (ss->format != PA_SAMPLE_S32LE || ss->format != PA_SAMPLE_S32NE), PA_ERR_NOTSUPPORTED);
|
||||||
PA_CHECK_VALIDITY_RETURN_NULL(c, !map || (pa_channel_map_valid(map) && map->channels == ss->channels), PA_ERR_INVALID);
|
PA_CHECK_VALIDITY_RETURN_NULL(c, !map || (pa_channel_map_valid(map) && map->channels == ss->channels), PA_ERR_INVALID);
|
||||||
|
|
||||||
|
if (!map)
|
||||||
|
PA_CHECK_VALIDITY_RETURN_NULL(c, map = pa_channel_map_init_auto(&tmap, ss->channels, PA_CHANNEL_MAP_DEFAULT), PA_ERR_INVALID);
|
||||||
|
|
||||||
s = pa_xnew(pa_stream, 1);
|
s = pa_xnew(pa_stream, 1);
|
||||||
PA_REFCNT_INIT(s);
|
PA_REFCNT_INIT(s);
|
||||||
s->context = c;
|
s->context = c;
|
||||||
|
|
@ -81,12 +85,8 @@ pa_stream *pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *
|
||||||
s->direction = PA_STREAM_NODIRECTION;
|
s->direction = PA_STREAM_NODIRECTION;
|
||||||
s->name = pa_xstrdup(name);
|
s->name = pa_xstrdup(name);
|
||||||
s->sample_spec = *ss;
|
s->sample_spec = *ss;
|
||||||
s->flags = 0;
|
|
||||||
|
|
||||||
if (map)
|
|
||||||
s->channel_map = *map;
|
s->channel_map = *map;
|
||||||
else
|
s->flags = 0;
|
||||||
pa_channel_map_init_auto(&s->channel_map, ss->channels, PA_CHANNEL_MAP_DEFAULT);
|
|
||||||
|
|
||||||
s->channel = 0;
|
s->channel = 0;
|
||||||
s->channel_valid = 0;
|
s->channel_valid = 0;
|
||||||
|
|
|
||||||
|
|
@ -145,9 +145,16 @@ static pa_scache_entry* scache_add_item(pa_core *c, const char *name) {
|
||||||
int pa_scache_add_item(pa_core *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map, const pa_memchunk *chunk, uint32_t *idx) {
|
int pa_scache_add_item(pa_core *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map, const pa_memchunk *chunk, uint32_t *idx) {
|
||||||
pa_scache_entry *e;
|
pa_scache_entry *e;
|
||||||
char st[PA_SAMPLE_SPEC_SNPRINT_MAX];
|
char st[PA_SAMPLE_SPEC_SNPRINT_MAX];
|
||||||
|
pa_channel_map tmap;
|
||||||
|
|
||||||
pa_assert(c);
|
pa_assert(c);
|
||||||
pa_assert(name);
|
pa_assert(name);
|
||||||
|
pa_assert(!ss || pa_sample_spec_valid(ss));
|
||||||
|
pa_assert(!map || (pa_channel_map_valid(map) && ss && ss->channels == map->channels));
|
||||||
|
|
||||||
|
if (ss && !map)
|
||||||
|
if (!(map = pa_channel_map_init_auto(&tmap, ss->channels, PA_CHANNEL_MAP_DEFAULT)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (chunk && chunk->length > PA_SCACHE_ENTRY_SIZE_MAX)
|
if (chunk && chunk->length > PA_SCACHE_ENTRY_SIZE_MAX)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -155,9 +162,11 @@ int pa_scache_add_item(pa_core *c, const char *name, const pa_sample_spec *ss, c
|
||||||
if (!(e = scache_add_item(c, name)))
|
if (!(e = scache_add_item(c, name)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
memset(&e->sample_spec, 0, sizeof(e->sample_spec));
|
||||||
|
pa_channel_map_init(&e->channel_map);
|
||||||
|
|
||||||
if (ss) {
|
if (ss) {
|
||||||
e->sample_spec = *ss;
|
e->sample_spec = *ss;
|
||||||
pa_channel_map_init_auto(&e->channel_map, ss->channels, PA_CHANNEL_MAP_DEFAULT);
|
|
||||||
e->volume.channels = e->sample_spec.channels;
|
e->volume.channels = e->sample_spec.channels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -215,13 +215,13 @@ pa_resampler* pa_resampler_new(
|
||||||
|
|
||||||
if (am)
|
if (am)
|
||||||
r->i_cm = *am;
|
r->i_cm = *am;
|
||||||
else
|
else if (!pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT))
|
||||||
pa_channel_map_init_auto(&r->i_cm, r->i_ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
goto fail;
|
||||||
|
|
||||||
if (bm)
|
if (bm)
|
||||||
r->o_cm = *bm;
|
r->o_cm = *bm;
|
||||||
else
|
else if (!pa_channel_map_init_auto(&r->o_cm, r->o_ss.channels, PA_CHANNEL_MAP_DEFAULT))
|
||||||
pa_channel_map_init_auto(&r->o_cm, r->o_ss.channels, PA_CHANNEL_MAP_DEFAULT);
|
goto fail;
|
||||||
|
|
||||||
r->i_fz = pa_frame_size(a);
|
r->i_fz = pa_frame_size(a);
|
||||||
r->o_fz = pa_frame_size(b);
|
r->o_fz = pa_frame_size(b);
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ pa_sink_input* pa_sink_input_new(
|
||||||
if (data->sink->channel_map.channels == data->sample_spec.channels)
|
if (data->sink->channel_map.channels == data->sample_spec.channels)
|
||||||
data->channel_map = data->sink->channel_map;
|
data->channel_map = data->sink->channel_map;
|
||||||
else
|
else
|
||||||
pa_channel_map_init_auto(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_return_null_if_fail(pa_channel_map_init_auto(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT));
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_return_null_if_fail(pa_channel_map_valid(&data->channel_map));
|
pa_return_null_if_fail(pa_channel_map_valid(&data->channel_map));
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ pa_sink* pa_sink_new(
|
||||||
pa_return_null_if_fail(pa_sample_spec_valid(spec));
|
pa_return_null_if_fail(pa_sample_spec_valid(spec));
|
||||||
|
|
||||||
if (!map)
|
if (!map)
|
||||||
map = pa_channel_map_init_auto(&tmap, spec->channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_return_null_if_fail((map = pa_channel_map_init_auto(&tmap, spec->channels, PA_CHANNEL_MAP_DEFAULT)));
|
||||||
|
|
||||||
pa_return_null_if_fail(map && pa_channel_map_valid(map));
|
pa_return_null_if_fail(map && pa_channel_map_valid(map));
|
||||||
pa_return_null_if_fail(map->channels == spec->channels);
|
pa_return_null_if_fail(map->channels == spec->channels);
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,10 @@ int pa_sound_file_load(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (map)
|
if (map)
|
||||||
pa_channel_map_init_auto(map, ss->channels, PA_CHANNEL_MAP_DEFAULT);
|
if (!pa_channel_map_init_auto(map, ss->channels, PA_CHANNEL_MAP_DEFAULT)) {
|
||||||
|
pa_log("Unsupported channel map in file %s", fname);
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
if ((l = pa_frame_size(ss) * sfinfo.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
|
if ((l = pa_frame_size(ss) * sfinfo.frames) > PA_SCACHE_ENTRY_SIZE_MAX) {
|
||||||
pa_log("File too large");
|
pa_log("File too large");
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ pa_source_output* pa_source_output_new(
|
||||||
if (data->source->channel_map.channels == data->sample_spec.channels)
|
if (data->source->channel_map.channels == data->sample_spec.channels)
|
||||||
data->channel_map = data->source->channel_map;
|
data->channel_map = data->source->channel_map;
|
||||||
else
|
else
|
||||||
pa_channel_map_init_auto(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_return_null_if_fail(pa_channel_map_init_auto(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT));
|
||||||
}
|
}
|
||||||
|
|
||||||
pa_return_null_if_fail(pa_channel_map_valid(&data->channel_map));
|
pa_return_null_if_fail(pa_channel_map_valid(&data->channel_map));
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ pa_source* pa_source_new(
|
||||||
pa_return_null_if_fail(pa_sample_spec_valid(spec));
|
pa_return_null_if_fail(pa_sample_spec_valid(spec));
|
||||||
|
|
||||||
if (!map)
|
if (!map)
|
||||||
map = pa_channel_map_init_auto(&tmap, spec->channels, PA_CHANNEL_MAP_DEFAULT);
|
pa_return_null_if_fail(map = pa_channel_map_init_auto(&tmap, spec->channels, PA_CHANNEL_MAP_DEFAULT));
|
||||||
|
|
||||||
pa_return_null_if_fail(map && pa_channel_map_valid(map));
|
pa_return_null_if_fail(map && pa_channel_map_valid(map));
|
||||||
pa_return_null_if_fail(map->channels == spec->channels);
|
pa_return_null_if_fail(map->channels == spec->channels);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue