AudioFormat audio_format;
audio_format.bits_per_sample = 32;
- audio_format.num_channels = 2;
+ audio_format.num_channels = 8;
FrameAllocator::Frame audio_frame = audio_frame_allocator->alloc_frame();
if (audio_frame.data != nullptr) {
const unsigned num_stereo_samples = audio_sample_frequency / fps;
- assert(audio_frame.size >= 2 * sizeof(int32_t) * num_stereo_samples);
- audio_frame.len = 2 * sizeof(int32_t) * num_stereo_samples;
+ assert(audio_frame.size >= audio_format.num_channels * sizeof(int32_t) * num_stereo_samples);
+ audio_frame.len = audio_format.num_channels * sizeof(int32_t) * num_stereo_samples;
if (audio_sin == 0.0f) {
// Silence.
memset(audio_frame.data, 0, audio_frame.len);
} else {
- make_tone((int32_t *)audio_frame.data, num_stereo_samples);
+ make_tone((int32_t *)audio_frame.data, num_stereo_samples, audio_format.num_channels);
}
}
}
}
-void FakeCapture::make_tone(int32_t *out, unsigned num_stereo_samples)
+void FakeCapture::make_tone(int32_t *out, unsigned num_stereo_samples, unsigned num_channels)
{
int32_t *ptr = out;
float r = audio_real, i = audio_imag;
for (unsigned sample_num = 0; sample_num < num_stereo_samples; ++sample_num) {
int32_t s = lrintf(r);
- *ptr++ = s;
- *ptr++ = s;
+ for (unsigned i = 0; i < num_channels; ++i) {
+ *ptr++ = s;
+ }
// Rotate the phaser by one sample.
float new_r = r * audio_cos - i * audio_sin;