|
|
- #ifndef AMBDEC_H
- #define AMBDEC_H
-
- #include <array>
- #include <string>
-
- #include "ambidefs.h"
- #include "vector.h"
-
- /* Helpers to read .ambdec configuration files. */
-
- enum class AmbDecScale {
- N3D,
- SN3D,
- FuMa,
- };
- struct AmbDecConf {
- std::string Description;
- int Version{0}; /* Must be 3 */
-
- unsigned int ChanMask{0u};
- unsigned int FreqBands{0u}; /* Must be 1 or 2 */
- AmbDecScale CoeffScale{};
-
- float XOverFreq{0.0f};
- float XOverRatio{0.0f};
-
- struct SpeakerConf {
- std::string Name;
- float Distance{0.0f};
- float Azimuth{0.0f};
- float Elevation{0.0f};
- std::string Connection;
- };
- al::vector<SpeakerConf> Speakers;
-
- using CoeffArray = std::array<float,MAX_AMBI_CHANNELS>;
- /* Unused when FreqBands == 1 */
- float LFOrderGain[MAX_AMBI_ORDER+1]{};
- al::vector<CoeffArray> LFMatrix;
-
- float HFOrderGain[MAX_AMBI_ORDER+1]{};
- al::vector<CoeffArray> HFMatrix;
-
- int load(const char *fname) noexcept;
- };
-
- #endif /* AMBDEC_H */
|