1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-26 01:39:05 -05:00

Inf/Sup decimators fix (3): all decimators but by 64

This commit is contained in:
f4exb 2018-05-10 04:37:51 +02:00
parent f99f7cd598
commit 41319b63e5
2 changed files with 904 additions and 246 deletions

File diff suppressed because it is too large Load Diff

View File

@ -589,6 +589,40 @@ public:
advancePointer();
}
void myDecimateCen(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
{
storeSample32(x1, y1);
advancePointer();
storeSample32(x2, y2);
doFIR(&out[0], &out[1]);
advancePointer();
storeSample32(x3, y3);
advancePointer();
storeSample32(x4, y4);
doFIR(&out[2], &out[3]);
advancePointer();
}
void myDecimateCen(int32_t *in, int32_t *out)
{
storeSample32(in[0], in[1]);
advancePointer();
storeSample32(in[2], in[3]);
doFIR(&out[0], &out[1]);
advancePointer();
storeSample32(in[4], in[5]);
advancePointer();
storeSample32(in[6], in[7]);
doFIR(&out[2], &out[3]);
advancePointer();
}
void myDecimateInf(int32_t x1, int32_t y1, int32_t *x2, int32_t *y2, int32_t x3, int32_t y3, int32_t *x4, int32_t *y4)
{
storeSample32(-y1, x1);
@ -606,6 +640,23 @@ public:
advancePointer();
}
void myDecimateInf(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
{
storeSample32(-y1, x1);
advancePointer();
storeSample32(-x2, -y2);
doFIR(&out[0], &out[1]);
advancePointer();
storeSample32(y3, -x3);
advancePointer();
storeSample32(x4, y4);
doFIR(&out[2], &out[3]);
advancePointer();
}
void myDecimateSup(int32_t x1, int32_t y1, int32_t *x2, int32_t *y2, int32_t x3, int32_t y3, int32_t *x4, int32_t *y4)
{
storeSample32(y1, -x1);
@ -623,6 +674,23 @@ public:
advancePointer();
}
void myDecimateSup(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x3, int32_t y3, int32_t x4, int32_t y4, int32_t *out)
{
storeSample32(y1, -x1);
advancePointer();
storeSample32(-x2, -y2);
doFIR(&out[0], &out[1]);
advancePointer();
storeSample32(-y3, x3);
advancePointer();
storeSample32(x4, y4);
doFIR(&out[2], &out[3]);
advancePointer();
}
/** Simple zero stuffing and filter */
void myInterpolateZeroStuffing(Sample* sample1, Sample* sample2)
{