diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index b0d5888ba..1022f0650 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -2995,8 +2995,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args) } cpu_iface = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU); - impl->dsp.cpu_flags = cpu_iface ? spa_cpu_get_flags(cpu_iface) : 0; - dsp_ops_init(&impl->dsp); + dsp_ops_init(&impl->dsp, cpu_iface ? spa_cpu_get_flags(cpu_iface) : 0); if (pw_properties_get(props, PW_KEY_NODE_GROUP) == NULL) pw_properties_setf(props, PW_KEY_NODE_GROUP, "filter-chain-%u-%u", pid, id); diff --git a/src/modules/module-filter-chain/dsp-ops.c b/src/modules/module-filter-chain/dsp-ops.c index 56eafe868..7a21177bc 100644 --- a/src/modules/module-filter-chain/dsp-ops.c +++ b/src/modules/module-filter-chain/dsp-ops.c @@ -84,14 +84,15 @@ static void impl_dsp_ops_free(struct dsp_ops *ops) spa_zero(*ops); } -int dsp_ops_init(struct dsp_ops *ops) +int dsp_ops_init(struct dsp_ops *ops, uint32_t cpu_flags) { const struct dsp_info *info; - info = find_dsp_info(ops->cpu_flags); + info = find_dsp_info(cpu_flags); if (info == NULL) return -ENOTSUP; + ops->cpu_flags = cpu_flags; ops->priv = info; ops->free = impl_dsp_ops_free; ops->funcs = info->funcs; diff --git a/src/modules/module-filter-chain/dsp-ops.h b/src/modules/module-filter-chain/dsp-ops.h index 676548025..a1a7ab90f 100644 --- a/src/modules/module-filter-chain/dsp-ops.h +++ b/src/modules/module-filter-chain/dsp-ops.h @@ -55,7 +55,7 @@ struct dsp_ops { const void *priv; }; -int dsp_ops_init(struct dsp_ops *ops); +int dsp_ops_init(struct dsp_ops *ops, uint32_t cpu_flags); #define dsp_ops_free(ops) (ops)->free(ops)