mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-29 11:08:35 -05:00
introduce default channel map in addition to the default sample spec
This commit is contained in:
parent
27bfa607b9
commit
4505bc9cc6
24 changed files with 180 additions and 147 deletions
|
|
@ -321,6 +321,8 @@ static int pa_cli_command_source_outputs(pa_core *c, pa_tokenizer *t, pa_strbuf
|
|||
}
|
||||
|
||||
static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
|
||||
char ss[PA_SAMPLE_SPEC_SNPRINT_MAX];
|
||||
char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
|
||||
char s[256];
|
||||
const pa_mempool_stat *stat;
|
||||
unsigned k;
|
||||
|
|
@ -363,7 +365,10 @@ static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
|
|||
pa_bytes_snprint(s, sizeof(s), (unsigned) pa_scache_total_size(c)));
|
||||
|
||||
pa_strbuf_printf(buf, "Default sample spec: %s\n",
|
||||
pa_sample_spec_snprint(s, sizeof(s), &c->default_sample_spec));
|
||||
pa_sample_spec_snprint(ss, sizeof(ss), &c->default_sample_spec));
|
||||
|
||||
pa_strbuf_printf(buf, "Default channel map: %s\n",
|
||||
pa_channel_map_snprint(cm, sizeof(cm), &c->default_channel_map));
|
||||
|
||||
def_sink = pa_namereg_get_default_sink(c);
|
||||
def_source = pa_namereg_get_default_source(c);
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ pa_core* pa_core_new(pa_mainloop_api *m, pa_bool_t shared, size_t shm_size) {
|
|||
c->default_sample_spec.format = PA_SAMPLE_S16NE;
|
||||
c->default_sample_spec.rate = 44100;
|
||||
c->default_sample_spec.channels = 2;
|
||||
pa_channel_map_init_extend(&c->default_channel_map, c->default_sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
|
||||
c->default_n_fragments = 4;
|
||||
c->default_fragment_size_msec = 25;
|
||||
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ struct pa_core {
|
|||
pa_source *default_source;
|
||||
pa_sink *default_sink;
|
||||
|
||||
pa_channel_map default_channel_map;
|
||||
pa_sample_spec default_sample_spec;
|
||||
unsigned default_n_fragments, default_fragment_size_msec;
|
||||
|
||||
|
|
|
|||
|
|
@ -274,11 +274,15 @@ int pa_modargs_get_sample_spec(pa_modargs *ma, pa_sample_spec *rss) {
|
|||
pa_assert(rss);
|
||||
|
||||
ss = *rss;
|
||||
if ((pa_modargs_get_value_u32(ma, "rate", &ss.rate)) < 0)
|
||||
if ((pa_modargs_get_value_u32(ma, "rate", &ss.rate)) < 0 ||
|
||||
ss.rate <= 0 ||
|
||||
ss.rate > PA_RATE_MAX)
|
||||
return -1;
|
||||
|
||||
channels = ss.channels;
|
||||
if ((pa_modargs_get_value_u32(ma, "channels", &channels)) < 0)
|
||||
if ((pa_modargs_get_value_u32(ma, "channels", &channels)) < 0 ||
|
||||
channels <= 0 ||
|
||||
channels >= PA_CHANNELS_MAX)
|
||||
return -1;
|
||||
ss.channels = (uint8_t) channels;
|
||||
|
||||
|
|
@ -314,7 +318,12 @@ int pa_modargs_get_channel_map(pa_modargs *ma, const char *name, pa_channel_map
|
|||
return 0;
|
||||
}
|
||||
|
||||
int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *rss, pa_channel_map *rmap, pa_channel_map_def_t def) {
|
||||
int pa_modargs_get_sample_spec_and_channel_map(
|
||||
pa_modargs *ma,
|
||||
pa_sample_spec *rss,
|
||||
pa_channel_map *rmap,
|
||||
pa_channel_map_def_t def) {
|
||||
|
||||
pa_sample_spec ss;
|
||||
pa_channel_map map;
|
||||
|
||||
|
|
@ -327,7 +336,10 @@ int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *r
|
|||
if (pa_modargs_get_sample_spec(ma, &ss) < 0)
|
||||
return -1;
|
||||
|
||||
pa_channel_map_init_extend(&map, ss.channels, def);
|
||||
map = *rmap;
|
||||
|
||||
if (ss.channels != map.channels)
|
||||
pa_channel_map_init_extend(&map, ss.channels, def);
|
||||
|
||||
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0)
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -3125,6 +3125,9 @@ static void command_get_server_info(pa_pdispatch *pd, uint32_t command, uint32_t
|
|||
|
||||
pa_tagstruct_putu32(reply, c->protocol->core->cookie);
|
||||
|
||||
if (c->version >= 15)
|
||||
pa_tagstruct_put_channel_map(reply, &c->protocol->core->default_channel_map);
|
||||
|
||||
pa_pstream_send_tagstruct(c->pstream, reply);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue