1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
for (int s = 0; s < nFrames; ++s, ++in1, ++in2, ++out1, ++out2)
{
if(current_buf == 0)
{
*out1 = outdata1[pos_in_data] + outdata2[pos_in_data + 512];
*out2 = outdata1[pos_in_data] + outdata2[pos_in_data + 512];
indata1[pos_in_data] = *in1;
if(++pos_in_data > 512)
{
memset(indata1 + 512, 0, sizeof(kiss_fft_scalar) * 512);
kiss_fftr(fftcfg, indata1, sdata);
kiss_fftri(ifftcfg, sdata, outdata1);
for(int i = 0; i < 1024; ++i)
outdata1[i] = outdata1[i] / 1024.;
pos_in_data = 0;
current_buf = 1;
}
}
else
{
*out1 = outdata2[pos_in_data] + outdata1[pos_in_data + 512];
*out2 = outdata2[pos_in_data] + outdata1[pos_in_data + 512];
indata2[pos_in_data] = *in1;
if(++pos_in_data > 512)
{
memset(indata2 + 512, 0, sizeof(kiss_fft_scalar) * 512);
kiss_fftr(fftcfg, indata2, sdata);
kiss_fftri(ifftcfg, sdata, outdata2);
for(int i = 0; i < 1024; ++i)
outdata2[i] = outdata2[i] / 1024.;
pos_in_data = 0;
current_buf = 0;
}
}
} |
Partager