Esempio n. 1
0
void iqconverter_int16_process(iqconveter_int16_t *cnv, int16_t *samples, int len)
{
	int i;

	for (i = 0; i < len; i += 4)
	{
		samples[i + 0] = -samples[i + 0];
		samples[i + 1] = -samples[i + 1] >> 1;
		//samples[i + 2] = samples[i + 2];
		samples[i + 3] = samples[i + 3] >> 1;
	}

	fir_interleaved(cnv, samples, len);
	delay_interleaved(cnv, samples + 1, len);
}
Esempio n. 2
0
static void translate_fs_4(iqconverter_int16_t *cnv, int16_t *samples, int len)
{
    int i;

    for (i = 0; i < len; i += 4)
    {
        samples[i + 0] = -samples[i + 0];
        samples[i + 1] = -samples[i + 1] >> 1;
        //samples[i + 2] = samples[i + 2];
        samples[i + 3] = samples[i + 3] >> 1;
    }

    fir_interleaved(cnv, samples, len);
    delay_interleaved(cnv, samples + 1, len);
}
Esempio n. 3
0
static void translate_fs_4(iqconverter_float_t *cnv, float *samples, int len)
{
	int i;
	float hbc = cnv->hbc;

#if defined(USE_SSE2)

	float *buf = samples;
	__m128 vec;
	__m128 rot = _mm_set_ps(hbc, 1.0f, -hbc, -1.0f);

	for (i = 0; i < len / 4; i++, buf +=4)
	{
		vec = _mm_loadu_ps(buf);
		vec = _mm_mul_ps(vec, rot);
		_mm_storeu_ps(buf, vec);
	}

#else

	int j;

	for (i = 0; i < len / 4; i++)
	{
		j = i << 2;
		samples[j + 0] = -samples[j + 0];
		samples[j + 1] = -samples[j + 1] * hbc;
		//samples[j + 2] = samples[j + 2];
		samples[j + 3] = samples[j + 3] * hbc;
	}

#endif

	fir_interleaved(cnv, samples, len);
	delay_interleaved(cnv, samples + 1, len);
}