48 bool Init(SurroundFormat surround_format);
51 void SetStereoSpeakerMode(
bool enabled)
override;
52 size_t GetNumAvailableFramesInInputBuffer()
const override;
53 size_t AddInterleavedInput(
const int16* input_buffer_ptr,
size_t num_channels,
54 size_t num_frames)
override;
55 size_t AddInterleavedInput(
const float* input_buffer_ptr,
size_t num_channels,
56 size_t num_frames)
override;
57 size_t AddPlanarInput(
const int16*
const* input_buffer_ptrs,
58 size_t num_channels,
size_t num_frames)
override;
59 size_t AddPlanarInput(
const float*
const* input_buffer_ptrs,
60 size_t num_channels,
size_t num_frames)
override;
61 size_t GetAvailableFramesInStereoOutputBuffer()
const override;
62 size_t GetInterleavedStereoOutput(int16* output_buffer_ptr,
63 size_t num_frames)
override;
64 size_t GetInterleavedStereoOutput(
float* output_buffer_ptr,
65 size_t num_frames)
override;
66 size_t GetPlanarStereoOutput(int16** output_buffer_ptrs,
67 size_t num_frames)
override;
68 size_t GetPlanarStereoOutput(
float** output_buffer_ptrs,
69 size_t num_frames)
override;
70 bool TriggerProcessing()
override;
71 void Clear()
override;
72 void SetHeadRotation(
float w,
float x,
float y,
float z)
override;
94 template <
typename BufferType>
95 size_t AddInputBufferTemplated(
const BufferType input_buffer_ptr,
96 size_t num_channels,
size_t num_frames);
105 template <
typename BufferType>
106 size_t GetStereoOutputBufferTemplated(BufferType output_buffer_ptr,
114 static size_t GetExpectedNumChannelsFromSurroundFormat(
115 SurroundFormat surround_format);
121 void InitializeBinauralMono();
124 void InitializeBinauralStereo();
127 void InitializeBinauralSurround5dot1();
130 void InitializeBinauralSurround7dot1();
133 void InitializeAmbisonics();
136 void InitializeAmbisonicsWithNonDiegeticStereo();
139 SourceId CreateSoundObject(
float azimuth_deg);
142 void InitializeRoomReverb();
145 std::unique_ptr<ResonanceAudioApi> resonance_audio_api_;
148 const size_t frames_per_buffer_;
151 const int sample_rate_hz_;
154 SurroundFormat surround_format_;
157 size_t num_input_channels_;
160 std::unique_ptr<BufferPartitioner> buffer_partitioner_;
163 std::unique_ptr<ThreadsafeFifo<AudioBuffer>> input_audio_buffer_queue_;
169 std::unique_ptr<BufferUnpartitioner> buffer_unpartitioner_;
172 std::vector<SourceId> source_ids_;
175 size_t total_frames_buffered_;
178 size_t num_zero_padded_frames_;
181 std::vector<const float*> temp_planar_buffer_ptrs_;