mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pulse: use format from node if available
And fall back to some defaults otherwise.
This commit is contained in:
parent
18b4aee677
commit
24755afee9
2 changed files with 28 additions and 16 deletions
|
|
@ -1103,6 +1103,8 @@ static int set_mask(pa_context *c, struct global *g)
|
||||||
g->node_info.device_id = SPA_ID_INVALID;
|
g->node_info.device_id = SPA_ID_INVALID;
|
||||||
|
|
||||||
ginfo = &node_info;
|
ginfo = &node_info;
|
||||||
|
g->node_info.sample_spec.format = PA_SAMPLE_S16NE;
|
||||||
|
g->node_info.sample_spec.rate = 44100;
|
||||||
g->node_info.volume = 1.0f;
|
g->node_info.volume = 1.0f;
|
||||||
g->node_info.mute = false;
|
g->node_info.mute = false;
|
||||||
g->node_info.base_volume = 1.0f;
|
g->node_info.base_volume = 1.0f;
|
||||||
|
|
|
||||||
|
|
@ -104,12 +104,14 @@ static int sink_callback(pa_context *c, struct global *g, struct sink_data *d)
|
||||||
else
|
else
|
||||||
i.description = "Unknown";
|
i.description = "Unknown";
|
||||||
|
|
||||||
i.sample_spec.format = PA_SAMPLE_S16LE;
|
i.sample_spec = g->node_info.sample_spec;
|
||||||
i.sample_spec.rate = 44100;
|
|
||||||
if (g->node_info.n_channel_volumes)
|
if (g->node_info.n_channel_volumes)
|
||||||
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
||||||
else
|
else
|
||||||
i.sample_spec.channels = 2;
|
i.sample_spec.channels = 2;
|
||||||
|
if (i.sample_spec.channels == g->node_info.channel_map.channels)
|
||||||
|
i.channel_map = g->node_info.channel_map;
|
||||||
|
else
|
||||||
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
||||||
i.owner_module = 0;
|
i.owner_module = 0;
|
||||||
i.volume.channels = i.sample_spec.channels;
|
i.volume.channels = i.sample_spec.channels;
|
||||||
|
|
@ -843,12 +845,14 @@ static int source_callback(pa_context *c, struct global *g, struct source_data *
|
||||||
i.description = str;
|
i.description = str;
|
||||||
else
|
else
|
||||||
i.description = "unknown";
|
i.description = "unknown";
|
||||||
i.sample_spec.format = PA_SAMPLE_S16LE;
|
i.sample_spec = g->node_info.sample_spec;
|
||||||
i.sample_spec.rate = 44100;
|
|
||||||
if (g->node_info.n_channel_volumes)
|
if (g->node_info.n_channel_volumes)
|
||||||
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
||||||
else
|
else
|
||||||
i.sample_spec.channels = 2;
|
i.sample_spec.channels = 2;
|
||||||
|
if (i.sample_spec.channels == g->node_info.channel_map.channels)
|
||||||
|
i.channel_map = g->node_info.channel_map;
|
||||||
|
else
|
||||||
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
||||||
i.owner_module = 0;
|
i.owner_module = 0;
|
||||||
i.volume.channels = i.sample_spec.channels;
|
i.volume.channels = i.sample_spec.channels;
|
||||||
|
|
@ -1913,11 +1917,14 @@ static int sink_input_callback(pa_context *c, struct sink_input_data *d, struct
|
||||||
i.format = s->format;
|
i.format = s->format;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
i.sample_spec.format = PA_SAMPLE_S16LE;
|
i.sample_spec = g->node_info.sample_spec;
|
||||||
i.sample_spec.rate = 44100;
|
if (g->node_info.n_channel_volumes)
|
||||||
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
||||||
if (i.sample_spec.channels == 0)
|
else
|
||||||
i.sample_spec.channels = 2;
|
i.sample_spec.channels = 2;
|
||||||
|
if (i.sample_spec.channels == g->node_info.channel_map.channels)
|
||||||
|
i.channel_map = g->node_info.channel_map;
|
||||||
|
else
|
||||||
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
||||||
ii[0].encoding = PA_ENCODING_PCM;
|
ii[0].encoding = PA_ENCODING_PCM;
|
||||||
ii[0].plist = pa_proplist_new();
|
ii[0].plist = pa_proplist_new();
|
||||||
|
|
@ -2324,11 +2331,14 @@ static int source_output_callback(struct source_output_data *d, pa_context *c, s
|
||||||
i.format = s->format;
|
i.format = s->format;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
i.sample_spec.format = PA_SAMPLE_S16LE;
|
i.sample_spec = g->node_info.sample_spec;
|
||||||
i.sample_spec.rate = 44100;
|
if (g->node_info.n_channel_volumes)
|
||||||
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
i.sample_spec.channels = g->node_info.n_channel_volumes;
|
||||||
if (i.sample_spec.channels == 0)
|
else
|
||||||
i.sample_spec.channels = 2;
|
i.sample_spec.channels = 2;
|
||||||
|
if (i.sample_spec.channels == g->node_info.channel_map.channels)
|
||||||
|
i.channel_map = g->node_info.channel_map;
|
||||||
|
else
|
||||||
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
pa_channel_map_init_auto(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_OSS);
|
||||||
ii[0].encoding = PA_ENCODING_PCM;
|
ii[0].encoding = PA_ENCODING_PCM;
|
||||||
ii[0].plist = pa_proplist_new();
|
ii[0].plist = pa_proplist_new();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue