目前正在使用C语言进行实时声音应用,我正在学习如何使用portaudio
。
我的第一个问题是,我真的不懂如何管理频道
我们承认我只希望通过portaudio
传递音频
我认为我的回调函数是:
static int fuzzCallback( const void *inputBuffer,
void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo* timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData )
{
SAMPLE *out = (SAMPLE*)outputBuffer;
const SAMPLE *in = (const SAMPLE*)inputBuffer;
(void) timeInfo; /* Prevent unused variable warnings. */
(void) statusFlags;
(void) userData;
*out++ = *in++; // Left channel
*out++ = *in++; // Right channel
return paContinue;
}
现在我们承认我想切换输入并将其发送到我的输出,即将input 1
发送到output 2
,将input 2
发送到output 1
。
如何使用portaudio
实现这一目标?我期待*out.1++ = *in.2++;
之类的内容,但无法找到有关此内容的任何信息。
提前感谢您的回答!
答案 0 :(得分:3)
sudo ip link delete tap#
和out
是in
的数组,其中信道是交错的。含义float
是L1,R1,L2,R2,L3,R3 ......输出相同。当您从输入复制到输出时,要交换频道,请更改索引。
in