17#ifndef RESONANCE_AUDIO_UTILS_PLANAR_INTERLEAVED_CONVERSION_H_
18#define RESONANCE_AUDIO_UTILS_PLANAR_INTERLEAVED_CONVERSION_H_
22#include "base/integral_types.h"
23#include "base/audio_buffer.h"
24#include "base/logging.h"
36void PlanarFromInterleaved(
const float* interleaved_buffer,
37 size_t num_input_frames,
size_t num_input_channels,
38 const std::vector<float*>& planar_buffer_ptr,
39 size_t num_output_frames);
49void PlanarFromInterleaved(
const int16* interleaved_buffer,
50 size_t num_input_frames,
size_t num_input_channels,
51 const std::vector<float*>& planar_buffer_ptr,
52 size_t num_output_frames);
62void FillAudioBuffer(
const float* interleaved_buffer,
size_t num_input_frames,
63 size_t num_input_channels, AudioBuffer* output);
73void FillAudioBuffer(
const int16* interleaved_buffer,
size_t num_input_frames,
74 size_t num_input_channels, AudioBuffer* output);
83void FillAudioBuffer(
const std::vector<float>& interleaved_buffer,
84 size_t num_input_channels, AudioBuffer* output);
93void FillAudioBuffer(
const std::vector<int16>& interleaved_buffer,
94 size_t num_input_channels, AudioBuffer* output);
104void FillAudioBuffer(
const float*
const* planar_ptrs,
size_t num_input_frames,
105 size_t num_input_channels, AudioBuffer* output);
115void FillAudioBuffer(
const int16*
const* planar_ptrs,
size_t num_input_frames,
116 size_t num_input_channels, AudioBuffer* output);
129void FillAudioBufferWithOffset(
const float* interleaved_buffer,
130 size_t num_input_frames,
131 size_t num_input_channels,
132 size_t input_frame_offset,
133 size_t output_frame_offset,
134 size_t num_frames_to_copy, AudioBuffer* output);
147void FillAudioBufferWithOffset(
const int16* interleaved_buffer,
148 size_t num_input_frames,
149 size_t num_input_channels,
150 size_t input_frame_offset,
151 size_t output_frame_offset,
152 size_t num_frames_to_copy, AudioBuffer* output);
165void FillAudioBufferWithOffset(
const float*
const* planar_ptrs,
166 size_t num_input_frames,
167 size_t num_input_channels,
168 size_t input_frame_offset,
169 size_t output_frame_offset,
170 size_t num_frames_to_copy, AudioBuffer* output);
183void FillAudioBufferWithOffset(
const int16*
const* planar_ptrs,
184 size_t num_input_frames,
185 size_t num_input_channels,
186 size_t input_frame_offset,
187 size_t output_frame_offset,
188 size_t num_frames_to_copy, AudioBuffer* output);
202void FillAudioBufferWithChannelRemapping(
const int16* interleaved_buffer,
203 size_t num_input_frames,
204 size_t num_input_channels,
205 const std::vector<size_t>& channel_map,
206 AudioBuffer* output);
220void FillAudioBufferWithChannelRemapping(
const float* interleaved_buffer,
221 size_t num_input_frames,
222 size_t num_input_channels,
223 const std::vector<size_t>& channel_map,
224 AudioBuffer* output);
237void FillAudioBufferWithChannelRemapping(
const float*
const* planar_ptr,
238 size_t num_input_frames,
239 size_t num_input_channels,
240 const std::vector<size_t>& channel_map,
241 AudioBuffer* output);
254void FillAudioBufferWithChannelRemapping(
const int16*
const* planar_ptr,
255 size_t num_input_frames,
256 size_t num_input_channels,
257 const std::vector<size_t>& channel_map,
258 AudioBuffer* output);
266void FillExternalBuffer(
const AudioBuffer& input, std::vector<float>* output);
274void FillExternalBuffer(
const AudioBuffer& input, std::vector<int16>* output);
284void FillExternalBuffer(
const AudioBuffer& input,
285 float*
const* planar_output_ptrs,
286 size_t num_output_frames,
size_t num_output_channels);
296void FillExternalBuffer(
const AudioBuffer& input,
297 int16*
const* planar_output_ptrs,
298 size_t num_output_frames,
size_t num_output_channels);
308void FillExternalBuffer(
const AudioBuffer& input,
309 int16* interleaved_output_buffer,
310 size_t num_output_frames,
size_t num_output_channels);
320void FillExternalBuffer(
const AudioBuffer& input,
321 float* interleaved_output_buffer,
322 size_t num_output_frames,
size_t num_output_channels);
335void FillExternalBufferWithOffset(
const AudioBuffer& input,
336 size_t input_offset_frames,
337 int16*
const* planar_output_ptrs,
338 size_t num_output_frames,
339 size_t num_output_channels,
340 size_t output_offset_frames,
341 size_t num_frames_convert_and_copy);
354void FillExternalBufferWithOffset(
const AudioBuffer& input,
355 size_t input_offset_frames,
356 float*
const* planar_output_ptrs,
357 size_t num_output_frames,
358 size_t num_output_channels,
359 size_t output_offset_frames,
360 size_t num_frames_convert_and_copy);
373void FillExternalBufferWithOffset(
const AudioBuffer& input,
374 size_t input_offset_frames,
375 int16* interleaved_output_buffer,
376 size_t num_output_frames,
377 size_t num_output_channels,
378 size_t output_offset_frames,
379 size_t num_frames_convert_and_copy);
392void FillExternalBufferWithOffset(
const AudioBuffer& input,
393 size_t input_offset_frames,
394 float* interleaved_output_buffer,
395 size_t num_output_frames,
396 size_t num_output_channels,
397 size_t output_offset_frames,
398 size_t num_frames_convert_and_copy);
406void GetRawChannelDataPointersFromAudioBuffer(
407 AudioBuffer* audio_buffer, std::vector<float*>* channel_ptr_vector);
415void GetRawChannelDataPointersFromAudioBuffer(
416 const AudioBuffer& audio_buffer,
417 std::vector<const float*>* channel_ptr_vector);