fix: property inspector - read sample rate from node.latency, not node.rate
- node.rate was a PipeWire internal flag (always 1), not sample rate - Now reads from node.latency (format: '256/48000') for quantum + rate - Fallback to clock.rate if latency not available - Reuses rate field for ALSA period-size - Shows 'Latency: 256 samples @ 48000 Hz' and 'Period Size: 256'
This commit is contained in:
@@ -125,8 +125,26 @@ static void on_node_info(void *data, const struct pw_node_info *info) {
|
||||
str = spa_dict_lookup(info->props, "priority.driver");
|
||||
if (str) nobj->node.priority = atoi(str);
|
||||
|
||||
str = spa_dict_lookup(info->props, "node.rate");
|
||||
if (str) nobj->node.rate = (uint32_t)atoi(str);
|
||||
// Latency info
|
||||
str = spa_dict_lookup(info->props, "node.latency");
|
||||
if (str) {
|
||||
// Format: "256/48000" -> quantum=256 rate=48000
|
||||
uint32_t q = 0, r = 0;
|
||||
if (sscanf(str, "%u/%u", &q, &r) == 2) {
|
||||
nobj->node.quantum = q;
|
||||
nobj->node.sample_rate = r;
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: read clock rate from device props
|
||||
if (nobj->node.sample_rate == 0) {
|
||||
str = spa_dict_lookup(info->props, "clock.rate");
|
||||
if (str) nobj->node.sample_rate = (uint32_t)atoi(str);
|
||||
}
|
||||
|
||||
// ALSA latency
|
||||
str = spa_dict_lookup(info->props, "api.alsa.period-size");
|
||||
if (str) nobj->node.rate = (uint32_t)atoi(str); // reuse rate field for period-size
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user