| 169 | |
| 170 | template<typename Host> |
| 171 | std::vector<MixerOptions::StageSpecification> |
| 172 | GetEffectStagesImpl(const Host &host) |
| 173 | { |
| 174 | auto &effects = RealtimeEffectList::Get(host); |
| 175 | if (!effects.IsActive()) |
| 176 | return {}; |
| 177 | std::vector<MixerOptions::StageSpecification> result; |
| 178 | for (size_t i = 0, count = effects.GetStatesCount(); i < count; ++i) { |
| 179 | const auto pState = effects.GetStateAt(i); |
| 180 | if (!pState->IsEnabled()) |
| 181 | continue; |
| 182 | const auto pEffect = pState->GetEffect(); |
| 183 | if (!pEffect) |
| 184 | continue; |
| 185 | const auto &settings = pState->GetSettings(); |
| 186 | if (!settings.has_value()) |
| 187 | continue; |
| 188 | auto &stage = result.emplace_back(MixerOptions::StageSpecification{ |
| 189 | [pEffect]{ return pEffect->MakeInstance(); }, |
| 190 | settings }); |
| 191 | } |
| 192 | return result; |
| 193 | } |
| 194 | |
| 195 | std::vector<MixerOptions::StageSpecification> |
| 196 | GetEffectStages(const WaveTrack& track) |
no test coverage detected