23 #include "iirfilter.h"
49 order_(order), normalisation_convention_(normalisation),
50 ordering_convention_(ordering) {}
62 const Int num_samples,
63 const mcl::Point& point,
65 Buffer& output_buffer) noexcept;
99 const bool energy_decoding,
100 const Time cut_off_frequency,
101 const std::vector<Angle>& loudspeaker_angles,
102 const bool near_field_correction,
103 const Length loudspeakers_distance,
104 const Time sampling_frequency,
105 const Speed sound_speed,
106 const HoaOrdering ordering_convention = HoaOrdering::Acn);
118 static mcl::Matrix<Sample>
119 ModeMatchingDec(
Int order,
const std::vector<Angle>& loudspeaker_angles);
125 static mcl::Matrix<Sample>
126 MaxEnergyDec(
Int order,
const std::vector<Angle>& loudspeaker_angles);
133 static Sample MaxEnergyDecWeight(
Int index,
Int order) {
137 std::vector<Sample> GetFrame(
const Int order,
const Int sample_id,
138 const Buffer& buffer);
150 static mcl::IirFilter NFCFilter(
const Int order,
151 const Length loudspeaker_distance,
152 const Time sampling_frequency,
153 const Length sound_speed);
161 static mcl::IirFilter CrossoverFilterLow(
const Time cut_off_frequency,
162 const Time sampling_frequency);
163 static mcl::IirFilter CrossoverFilterHigh(
const Time cut_off_frequency,
164 const Time sampling_frequency);
166 std::vector<Angle> loudspeaker_angles_;
167 Int num_loudspeakers_;
168 bool near_field_correction_;
169 Length loudspeakers_distance_;
170 bool energy_decoding_;
176 std::vector<mcl::IirFilter> nfc_filters_;
178 std::vector<mcl::IirFilter> crossover_filters_high_;
179 std::vector<mcl::IirFilter> crossover_filters_low_;
182 mcl::Matrix<Sample> mode_matching_matrix_;
185 mcl::Matrix<Sample> max_energy_matrix_;
187 Time sampling_frequency_;