76 : room_position{0.0f, 0.0f, 0.0f},
77 room_rotation{0.0f, 0.0f, 0.0f, 1.0f},
78 room_dimensions{0.0f, 0.0f, 0.0f},
79 cutoff_frequency(0.0f),
80 coefficients{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
84 float room_position[3];
87 float room_rotation[4];
90 float room_dimensions[3];
93 float cutoff_frequency;
102 float coefficients[6];
145 typedef int SourceId;
149 static const SourceId kInvalidSourceId = -1;
159 virtual bool FillInterleavedOutputBuffer(
size_t num_channels,
161 float* buffer_ptr) = 0;
169 virtual bool FillInterleavedOutputBuffer(
size_t num_channels,
171 int16* buffer_ptr) = 0;
180 virtual bool FillPlanarOutputBuffer(
size_t num_channels,
size_t num_frames,
181 float*
const* buffer_ptr) = 0;
190 virtual bool FillPlanarOutputBuffer(
size_t num_channels,
size_t num_frames,
191 int16*
const* buffer_ptr) = 0;
198 virtual void SetHeadPosition(
float x,
float y,
float z) = 0;
206 virtual void SetHeadRotation(
float x,
float y,
float z,
float w) = 0;
212 virtual void SetMasterVolume(
float volume) = 0;
223 virtual void SetStereoSpeakerMode(
bool enabled) = 0;
229 virtual SourceId CreateAmbisonicSource(
size_t num_channels) = 0;
236 virtual SourceId CreateStereoSource(
size_t num_channels) = 0;
242 virtual SourceId CreateSoundObjectSource(RenderingMode rendering_mode) = 0;
247 virtual void DestroySource(SourceId
id) = 0;
255 virtual void SetInterleavedBuffer(SourceId source_id,
256 const float* audio_buffer_ptr,
257 size_t num_channels,
size_t num_frames) = 0;
265 virtual void SetInterleavedBuffer(SourceId source_id,
266 const int16* audio_buffer_ptr,
267 size_t num_channels,
size_t num_frames) = 0;
276 virtual void SetPlanarBuffer(SourceId source_id,
277 const float*
const* audio_buffer_ptr,
278 size_t num_channels,
size_t num_frames) = 0;
287 virtual void SetPlanarBuffer(SourceId source_id,
288 const int16*
const* audio_buffer_ptr,
289 size_t num_channels,
size_t num_frames) = 0;
297 virtual void SetSourceDistanceAttenuation(SourceId source_id,
298 float distance_attenuation) = 0;
308 virtual void SetSourceDistanceModel(SourceId source_id,
309 DistanceRolloffModel rolloff,
311 float max_distance) = 0;
321 virtual void SetSourcePosition(SourceId source_id,
float x,
float y,
329 virtual void SetSourceRoomEffectsGain(SourceId source_id,
330 float room_effects_gain) = 0;
339 virtual void SetSourceRotation(SourceId source_id,
float x,
float y,
float z,
347 virtual void SetSourceVolume(SourceId source_id,
float volume) = 0;
357 virtual void SetSoundObjectDirectivity(SourceId sound_object_source_id,
358 float alpha,
float order) = 0;
371 virtual void SetSoundObjectListenerDirectivity(
372 SourceId sound_object_source_id,
float alpha,
float order) = 0;
379 virtual void SetSoundObjectNearFieldEffectGain(
380 SourceId sound_object_source_id,
float gain) = 0;
387 virtual void SetSoundObjectOcclusionIntensity(SourceId sound_object_source_id,
388 float intensity) = 0;
394 virtual void SetSoundObjectSpread(SourceId sound_object_source_id,
395 float spread_deg) = 0;
398 virtual void EnableRoomEffects(
bool enable) = 0;
403 virtual void SetReflectionProperties(
409 virtual void SetReverbProperties(