如何在PortAudio回调函数中通过SoundCard输出通道1/2和3/4发送音频?

时间:2014-03-18 03:36:24

标签: c signal-processing portaudio

这是我简单的回调。 PA使用8ins / 8outs检测我的声卡。我想将音频流同时发送到1/2和3/4等输出通道。我怎么能在回调中做到这一点?谢谢

int audioCallback ( const void* input, void* output, unsigned long samples,
                       const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void* userData)
    {
        const float *in = ( const float*)input;
        float *out = (float*)output;

        paTestData *data = (paTestData*)userData;


        for (int i = 0; i < samples; ++i)
        {

            *out++ = *in++; // left Channel(1)
            *out++ = *in++; // right Channel(2)

        }


        return paContinue;
    }

1 个答案:

答案 0 :(得分:0)

您的示例表明您的输入流是立体声,请尝试以下操作:

s1 = * in ++; s2 = * in ++;

* out ++ = s1; //频道1 * out ++ = s2; //频道2 * out ++ = s1; //频道3 * out ++ = s2; //频道4

结果应该是通道1和3播放相同的信号,通道2和4播放相同的信号

在大多数情况下,通道在输出缓冲区中交错。否则,其他信道对可以由不同的设备表示。