compressor.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "config.h"
  2. #include "AL/al.h"
  3. #include "AL/efx.h"
  4. #include "effects.h"
  5. #include "effects/base.h"
  6. namespace {
  7. void Compressor_setParami(EffectProps *props, ALenum param, int val)
  8. {
  9. switch(param)
  10. {
  11. case AL_COMPRESSOR_ONOFF:
  12. if(!(val >= AL_COMPRESSOR_MIN_ONOFF && val <= AL_COMPRESSOR_MAX_ONOFF))
  13. throw effect_exception{AL_INVALID_VALUE, "Compressor state out of range"};
  14. props->Compressor.OnOff = (val != AL_FALSE);
  15. break;
  16. default:
  17. throw effect_exception{AL_INVALID_ENUM, "Invalid compressor integer property 0x%04x",
  18. param};
  19. }
  20. }
  21. void Compressor_setParamiv(EffectProps *props, ALenum param, const int *vals)
  22. { Compressor_setParami(props, param, vals[0]); }
  23. void Compressor_setParamf(EffectProps*, ALenum param, float)
  24. { throw effect_exception{AL_INVALID_ENUM, "Invalid compressor float property 0x%04x", param}; }
  25. void Compressor_setParamfv(EffectProps*, ALenum param, const float*)
  26. {
  27. throw effect_exception{AL_INVALID_ENUM, "Invalid compressor float-vector property 0x%04x",
  28. param};
  29. }
  30. void Compressor_getParami(const EffectProps *props, ALenum param, int *val)
  31. {
  32. switch(param)
  33. {
  34. case AL_COMPRESSOR_ONOFF:
  35. *val = props->Compressor.OnOff;
  36. break;
  37. default:
  38. throw effect_exception{AL_INVALID_ENUM, "Invalid compressor integer property 0x%04x",
  39. param};
  40. }
  41. }
  42. void Compressor_getParamiv(const EffectProps *props, ALenum param, int *vals)
  43. { Compressor_getParami(props, param, vals); }
  44. void Compressor_getParamf(const EffectProps*, ALenum param, float*)
  45. { throw effect_exception{AL_INVALID_ENUM, "Invalid compressor float property 0x%04x", param}; }
  46. void Compressor_getParamfv(const EffectProps*, ALenum param, float*)
  47. {
  48. throw effect_exception{AL_INVALID_ENUM, "Invalid compressor float-vector property 0x%04x",
  49. param};
  50. }
  51. EffectProps genDefaultProps() noexcept
  52. {
  53. EffectProps props{};
  54. props.Compressor.OnOff = AL_COMPRESSOR_DEFAULT_ONOFF;
  55. return props;
  56. }
  57. } // namespace
  58. DEFINE_ALEFFECT_VTABLE(Compressor);
  59. const EffectProps CompressorEffectProps{genDefaultProps()};