56 std::shared_ptr<SinkNode> GetSinkNode();
67 AudioBuffer* GetMutableAudioBuffer(SourceId source_id);
94 void CreateAmbisonicPannerSource(SourceId sound_object_source_id,
120 void CreateStereoSource(SourceId stereo_source_id);
128 void DestroySource(SourceId source_id);
163 void CreateAmbisonicSource(SourceId ambisonic_source_id,
size_t num_channels);
204 void CreateSoundObjectSource(SourceId sound_object_source_id,
205 int ambisonic_order,
bool enable_hrtf,
206 bool enable_direct_rendering);
211 void EnableRoomEffects(
bool enable);
233 size_t GetNumMaxAmbisonicChannels()
const;
238 bool GetRoomEffectsEnabled()
const;
242 void UpdateRoomReflections();
245 void UpdateRoomReverb();
275 void InitializeAmbisonicRendererGraph(
int ambisonic_order,
276 const std::string& sh_hrir_filename);
282 std::shared_ptr<BufferedSourceNode> LookupSourceNode(SourceId source_id);
307 void InitializeReflectionsGraph();
332 void InitializeReverbGraph();
335 bool room_effects_enabled_;
338 std::shared_ptr<GainMixerNode> reverb_gain_mixer_node_;
341 std::shared_ptr<ReflectionsNode> reflections_node_;
344 std::shared_ptr<GainMixerNode> reflections_gain_mixer_node_;
347 std::shared_ptr<ReverbNode> reverb_node_;
351 std::unique_ptr<Mixer> ambisonic_output_mixer_;
360 std::unique_ptr<AmbisonicLookupTable> lookup_table_;
370 std::unordered_map<int, std::shared_ptr<MixerNode>> ambisonic_mixer_nodes_;
373 std::shared_ptr<MixerNode> stereo_mixer_node_;
377 std::unordered_map<int, std::shared_ptr<AmbisonicMixingEncoderNode>>
378 ambisonic_mixing_encoder_nodes_;
382 std::shared_ptr<StereoMixingPannerNode> stereo_mixing_panner_node_;
385 std::shared_ptr<SinkNode> output_node_;
389 std::unordered_map<SourceId, std::shared_ptr<BufferedSourceNode>>