mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-10 13:30:05 -05:00
audioconvert2: emit param change when volume changes
This commit is contained in:
parent
0ec41e60ef
commit
194b8e2d97
1 changed files with 14 additions and 9 deletions
|
|
@ -1012,11 +1012,8 @@ static int impl_node_set_param(void *object, uint32_t id, uint32_t flags,
|
|||
break;
|
||||
}
|
||||
case SPA_PARAM_Props:
|
||||
if (apply_props(this, param) > 0) {
|
||||
this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS;
|
||||
this->params[IDX_Props].user++;
|
||||
if (apply_props(this, param) > 0)
|
||||
emit_node_info(this, false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -ENOENT;
|
||||
|
|
@ -1127,10 +1124,11 @@ static uint64_t default_mask(uint32_t channels)
|
|||
return mask;
|
||||
}
|
||||
|
||||
static void fix_volumes(struct volumes *vols, uint32_t channels)
|
||||
static void fix_volumes(struct impl *this, struct volumes *vols, uint32_t channels)
|
||||
{
|
||||
float s;
|
||||
uint32_t i;
|
||||
spa_log_debug(this->log, "%p %d -> %d", this, vols->n_volumes, channels);
|
||||
if (vols->n_volumes > 0) {
|
||||
s = 0.0f;
|
||||
for (i = 0; i < vols->n_volumes; i++)
|
||||
|
|
@ -1171,11 +1169,11 @@ static int remap_volumes(struct impl *this, const struct spa_audio_info *info)
|
|||
if (target == 0)
|
||||
return 0;
|
||||
if (p->channel.n_volumes != target)
|
||||
fix_volumes(&p->channel, target);
|
||||
fix_volumes(this, &p->channel, target);
|
||||
if (p->soft.n_volumes != target)
|
||||
fix_volumes(&p->soft, target);
|
||||
fix_volumes(this, &p->soft, target);
|
||||
if (p->monitor.n_volumes != target)
|
||||
fix_volumes(&p->monitor, target);
|
||||
fix_volumes(this, &p->monitor, target);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -1187,6 +1185,8 @@ static void set_volume(struct impl *this)
|
|||
float volumes[SPA_AUDIO_MAX_CHANNELS];
|
||||
struct dir *dir = &this->dir[this->direction];
|
||||
|
||||
spa_log_debug(this->log, "%p", this);
|
||||
|
||||
if (dir->have_format)
|
||||
remap_volumes(this, &dir->format);
|
||||
|
||||
|
|
@ -1203,6 +1203,9 @@ static void set_volume(struct impl *this)
|
|||
|
||||
channelmix_set_volume(&this->mix, this->props.volume, vol->mute,
|
||||
vol->n_volumes, volumes);
|
||||
|
||||
this->info.change_mask |= SPA_NODE_CHANGE_MASK_PARAMS;
|
||||
this->params[IDX_Props].user++;
|
||||
}
|
||||
|
||||
static int setup_channelmix(struct impl *this)
|
||||
|
|
@ -1255,7 +1258,6 @@ static int setup_channelmix(struct impl *this)
|
|||
spa_log_debug(this->log, "%p: got channelmix features %08x:%08x flags:%08x",
|
||||
this, this->cpu_flags, this->mix.cpu_flags,
|
||||
this->mix.flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1388,6 +1390,9 @@ static int setup_convert(struct impl *this)
|
|||
this->tmp_datas[1][i] = SPA_PTROFF(this->tmp2, this->empty_size * i, void);
|
||||
this->tmp_datas[1][i] = SPA_PTR_ALIGN(this->tmp_datas[1][i], MAX_ALIGN, void);
|
||||
}
|
||||
|
||||
emit_node_info(this, false);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue