这是我的简单回调。 PA检测到我的声卡为8进8出。我想同时将音频流发送到输出通道,例如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;
    }

最佳答案

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

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

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

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

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

关于c - 如何通过PortAudio Callback功能中的SoundCard输出 channel 1/2和3/4发送音频?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22469873/

10-16 04:23