51 bool FillInterleavedOutputBuffer(
size_t num_channels,
size_t num_frames,
52 float* buffer_ptr)
override;
53 bool FillInterleavedOutputBuffer(
size_t num_channels,
size_t num_frames,
54 int16* buffer_ptr)
override;
55 bool FillPlanarOutputBuffer(
size_t num_channels,
size_t num_frames,
56 float*
const* buffer_ptr)
override;
57 bool FillPlanarOutputBuffer(
size_t num_channels,
size_t num_frames,
58 int16*
const* buffer_ptr)
override;
61 void SetHeadPosition(
float x,
float y,
float z)
override;
62 void SetHeadRotation(
float x,
float y,
float z,
float w)
override;
63 void SetMasterVolume(
float volume)
override;
64 void SetStereoSpeakerMode(
bool enabled)
override;
67 SourceId CreateAmbisonicSource(
size_t num_channels)
override;
68 SourceId CreateStereoSource(
size_t num_channels)
override;
69 SourceId CreateSoundObjectSource(RenderingMode rendering_mode)
override;
70 void DestroySource(SourceId source_id)
override;
73 void SetInterleavedBuffer(SourceId source_id,
const float* audio_buffer_ptr,
74 size_t num_channels,
size_t num_frames)
override;
75 void SetInterleavedBuffer(SourceId source_id,
const int16* audio_buffer_ptr,
76 size_t num_channels,
size_t num_frames)
override;
77 void SetPlanarBuffer(SourceId source_id,
const float*
const* audio_buffer_ptr,
78 size_t num_channels,
size_t num_frames)
override;
79 void SetPlanarBuffer(SourceId source_id,
const int16*
const* audio_buffer_ptr,
80 size_t num_channels,
size_t num_frames)
override;
83 void SetSourceDistanceAttenuation(SourceId source_id,
84 float distance_attenuation)
override;
85 void SetSourceDistanceModel(SourceId source_id, DistanceRolloffModel rolloff,
86 float min_distance,
float max_distance)
override;
87 void SetSourcePosition(SourceId source_id,
float x,
float y,
89 void SetSourceRoomEffectsGain(SourceId source_id,
90 float room_effects_gain)
override;
91 void SetSourceRotation(SourceId source_id,
float x,
float y,
float z,
93 void SetSourceVolume(SourceId source_id,
float volume)
override;
96 void SetSoundObjectDirectivity(SourceId sound_object_source_id,
float alpha,
97 float order)
override;
98 void SetSoundObjectListenerDirectivity(SourceId sound_object_source_id,
99 float alpha,
float order)
override;
100 void SetSoundObjectNearFieldEffectGain(SourceId sound_object_source_id,
101 float gain)
override;
102 void SetSoundObjectOcclusionIntensity(SourceId sound_object_source_id,
103 float intensity)
override;
104 void SetSoundObjectSpread(SourceId sound_object_source_id,
105 float spread_deg)
override;
108 void EnableRoomEffects(
bool enable)
override;
109 void SetReflectionProperties(
111 void SetReverbProperties(
const ReverbProperties& reverb_properties)
override;
120 const AudioBuffer* GetAmbisonicOutputBuffer()
const;
128 void ProcessNextBuffer();
140 template <
typename OutputType>
141 bool FillOutputBuffer(
size_t num_channels,
size_t num_frames,
142 OutputType buffer_ptr);
150 template <
typename SampleType>
151 void SetSourceBuffer(SourceId source_id, SampleType audio_buffer_ptr,
152 size_t num_input_channels,
size_t num_frames);
155 std::unique_ptr<GraphManager> graph_manager_;
165 std::atomic<int> source_id_counter_;