Mono to Stereo conversion

If you just want interleaved stereo samples then you could use a function like this:

void interleave(const uint16_t * in_L,     // mono input buffer (left channel)
                const uint16_t * in_R,     // mono input buffer (right channel)
                uint16_t * out,            // stereo output buffer
                const size_t num_samples)  // number of samples
{
    for (size_t i = 0; i < num_samples; ++i)
    {
        out[i * 2] = in_L[i];
        out[i * 2 + 1] = in_R[i];
    }
}

To generate stereo from a single mono buffer then you would just pass the same pointer for in_L and in_R, e.g.

interleave(mono_buffer, mono_buffer, stereo_buffer, num_samples);

Pass to both channels the same pointer? If that violates restrict rules, use memcpy()?

Sorry, but your question is otherwise to broad. API? OS? CPUArchitectures?

Tags:

Algorithm

C

Audio