Inline a couple dispatch calls
[openal-soft.git] / al / eax_effect.h
blob45315ca6b0c3f88e90a025e8f71c3a026880ad99
1 #ifndef EAX_EFFECT_INCLUDED
2 #define EAX_EFFECT_INCLUDED
5 #include <memory>
7 #include "AL/al.h"
8 #include "core/effects/base.h"
9 #include "eax_eax_call.h"
11 class EaxEffect
13 public:
14 EaxEffect(ALenum type) : al_effect_type_{type} { }
15 virtual ~EaxEffect() = default;
17 const ALenum al_effect_type_;
18 EffectProps al_effect_props_{};
20 virtual void dispatch(const EaxEaxCall& eax_call) = 0;
22 // Returns "true" if any immediated property was changed.
23 // [[nodiscard]]
24 virtual bool apply_deferred() = 0;
25 }; // EaxEffect
28 using EaxEffectUPtr = std::unique_ptr<EaxEffect>;
30 EaxEffectUPtr eax_create_eax_null_effect();
31 EaxEffectUPtr eax_create_eax_chorus_effect();
32 EaxEffectUPtr eax_create_eax_distortion_effect();
33 EaxEffectUPtr eax_create_eax_echo_effect();
34 EaxEffectUPtr eax_create_eax_flanger_effect();
35 EaxEffectUPtr eax_create_eax_frequency_shifter_effect();
36 EaxEffectUPtr eax_create_eax_vocal_morpher_effect();
37 EaxEffectUPtr eax_create_eax_pitch_shifter_effect();
38 EaxEffectUPtr eax_create_eax_ring_modulator_effect();
39 EaxEffectUPtr eax_create_eax_auto_wah_effect();
40 EaxEffectUPtr eax_create_eax_compressor_effect();
41 EaxEffectUPtr eax_create_eax_equalizer_effect();
42 EaxEffectUPtr eax_create_eax_reverb_effect();
44 #endif // !EAX_EFFECT_INCLUDED