mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
pulse-server: place the final sample rate as property
Use the final negotiated sample rate as node.rate to suggest a rate for the graph.
This commit is contained in:
parent
d6a2b21fbe
commit
e420b9c93c
1 changed files with 16 additions and 12 deletions
|
|
@ -448,8 +448,8 @@ static uint64_t set_playback_buffer_attr(struct stream *s, struct buffer_attr *a
|
||||||
{
|
{
|
||||||
struct spa_fraction lat;
|
struct spa_fraction lat;
|
||||||
uint64_t lat_usec;
|
uint64_t lat_usec;
|
||||||
struct spa_dict_item items[5];
|
struct spa_dict_item items[6];
|
||||||
char latency[32];
|
char latency[32], rate[32];
|
||||||
char attr_maxlength[32];
|
char attr_maxlength[32];
|
||||||
char attr_tlength[32];
|
char attr_tlength[32];
|
||||||
char attr_prebuf[32];
|
char attr_prebuf[32];
|
||||||
|
|
@ -466,17 +466,19 @@ static uint64_t set_playback_buffer_attr(struct stream *s, struct buffer_attr *a
|
||||||
lat_usec = lat.num * SPA_USEC_PER_SEC / lat.denom;
|
lat_usec = lat.num * SPA_USEC_PER_SEC / lat.denom;
|
||||||
|
|
||||||
snprintf(latency, sizeof(latency), "%u/%u", lat.num, lat.denom);
|
snprintf(latency, sizeof(latency), "%u/%u", lat.num, lat.denom);
|
||||||
|
snprintf(rate, sizeof(rate), "1/%u", lat.denom);
|
||||||
snprintf(attr_maxlength, sizeof(attr_maxlength), "%u", s->attr.maxlength);
|
snprintf(attr_maxlength, sizeof(attr_maxlength), "%u", s->attr.maxlength);
|
||||||
snprintf(attr_tlength, sizeof(attr_tlength), "%u", s->attr.tlength);
|
snprintf(attr_tlength, sizeof(attr_tlength), "%u", s->attr.tlength);
|
||||||
snprintf(attr_prebuf, sizeof(attr_prebuf), "%u", s->attr.prebuf);
|
snprintf(attr_prebuf, sizeof(attr_prebuf), "%u", s->attr.prebuf);
|
||||||
snprintf(attr_minreq, sizeof(attr_minreq), "%u", s->attr.minreq);
|
snprintf(attr_minreq, sizeof(attr_minreq), "%u", s->attr.minreq);
|
||||||
|
|
||||||
items[0] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_LATENCY, latency);
|
items[0] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_LATENCY, latency);
|
||||||
items[1] = SPA_DICT_ITEM_INIT("pulse.attr.maxlength", attr_maxlength);
|
items[1] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_RATE, rate);
|
||||||
items[2] = SPA_DICT_ITEM_INIT("pulse.attr.tlength", attr_tlength);
|
items[2] = SPA_DICT_ITEM_INIT("pulse.attr.maxlength", attr_maxlength);
|
||||||
items[3] = SPA_DICT_ITEM_INIT("pulse.attr.prebuf", attr_prebuf);
|
items[3] = SPA_DICT_ITEM_INIT("pulse.attr.tlength", attr_tlength);
|
||||||
items[4] = SPA_DICT_ITEM_INIT("pulse.attr.minreq", attr_minreq);
|
items[4] = SPA_DICT_ITEM_INIT("pulse.attr.prebuf", attr_prebuf);
|
||||||
pw_stream_update_properties(s->stream, &SPA_DICT_INIT(items, 5));
|
items[5] = SPA_DICT_ITEM_INIT("pulse.attr.minreq", attr_minreq);
|
||||||
|
pw_stream_update_properties(s->stream, &SPA_DICT_INIT(items, 6));
|
||||||
|
|
||||||
if (s->attr.prebuf > 0)
|
if (s->attr.prebuf > 0)
|
||||||
s->in_prebuf = true;
|
s->in_prebuf = true;
|
||||||
|
|
@ -597,8 +599,8 @@ static uint32_t fix_record_buffer_attr(struct stream *s, struct buffer_attr *att
|
||||||
|
|
||||||
static uint64_t set_record_buffer_attr(struct stream *s, struct buffer_attr *attr)
|
static uint64_t set_record_buffer_attr(struct stream *s, struct buffer_attr *attr)
|
||||||
{
|
{
|
||||||
struct spa_dict_item items[3];
|
struct spa_dict_item items[4];
|
||||||
char latency[32];
|
char latency[32], rate[32];
|
||||||
char attr_maxlength[32];
|
char attr_maxlength[32];
|
||||||
char attr_fragsize[32];
|
char attr_fragsize[32];
|
||||||
struct spa_fraction lat;
|
struct spa_fraction lat;
|
||||||
|
|
@ -613,14 +615,16 @@ static uint64_t set_record_buffer_attr(struct stream *s, struct buffer_attr *att
|
||||||
lat_usec = lat.num * SPA_USEC_PER_SEC / lat.denom;
|
lat_usec = lat.num * SPA_USEC_PER_SEC / lat.denom;
|
||||||
|
|
||||||
snprintf(latency, sizeof(latency), "%u/%u", lat.num, lat.denom);
|
snprintf(latency, sizeof(latency), "%u/%u", lat.num, lat.denom);
|
||||||
|
snprintf(rate, sizeof(rate), "1/%u", lat.denom);
|
||||||
|
|
||||||
snprintf(attr_maxlength, sizeof(attr_maxlength), "%u", s->attr.maxlength);
|
snprintf(attr_maxlength, sizeof(attr_maxlength), "%u", s->attr.maxlength);
|
||||||
snprintf(attr_fragsize, sizeof(attr_fragsize), "%u", s->attr.fragsize);
|
snprintf(attr_fragsize, sizeof(attr_fragsize), "%u", s->attr.fragsize);
|
||||||
|
|
||||||
items[0] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_LATENCY, latency);
|
items[0] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_LATENCY, latency);
|
||||||
items[1] = SPA_DICT_ITEM_INIT("pulse.attr.maxlength", attr_maxlength);
|
items[1] = SPA_DICT_ITEM_INIT(PW_KEY_NODE_RATE, rate);
|
||||||
items[2] = SPA_DICT_ITEM_INIT("pulse.attr.fragsize", attr_fragsize);
|
items[2] = SPA_DICT_ITEM_INIT("pulse.attr.maxlength", attr_maxlength);
|
||||||
pw_stream_update_properties(s->stream, &SPA_DICT_INIT(items, 3));
|
items[3] = SPA_DICT_ITEM_INIT("pulse.attr.fragsize", attr_fragsize);
|
||||||
|
pw_stream_update_properties(s->stream, &SPA_DICT_INIT(items, 4));
|
||||||
|
|
||||||
return lat_usec;
|
return lat_usec;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue