Mooooore performance

pull/154/head
Ryzerth 2021-06-30 02:48:36 +02:00
rodzic 24892c854e
commit 8f4942bbe9
4 zmienionych plików z 7 dodań i 12 usunięć

Wyświetl plik

@ -361,10 +361,7 @@ private:
HackRFSourceModule* _this = (HackRFSourceModule*)transfer->rx_ctx;
int count = transfer->valid_length / 2;
int8_t* buffer = (int8_t*)transfer->buffer;
for (int i = 0; i < count; i++) {
_this->stream.writeBuf[i].re = (float)buffer[i * 2] / 128.0f;
_this->stream.writeBuf[i].im = (float)buffer[(i * 2) + 1] / 128.0f;
}
volk_8i_s32f_convert_32f((float*)_this->stream.writeBuf, buffer, 128.0f, count*2);
if (!_this->stream.swap(count)) { return -1; }
return 0;
}

Wyświetl plik

@ -235,6 +235,9 @@ private:
_this->stream.writeBuf[i].re = (float)buf[i * 2] / 32768.0f;
_this->stream.writeBuf[i].im = (float)buf[(i * 2) + 1] / 32768.0f;
}
volk_16i_s32f_convert_32f((float*)_this->stream.writeBuf, buf, 32768.0f, blockSize*2);
if (!_this->stream.swap(blockSize)) { break; };
}

Wyświetl plik

@ -313,20 +313,14 @@ private:
static void _audioHandler(dsp::stereo_t *data, int count, void *ctx) {
RecorderModule* _this = (RecorderModule*)ctx;
for (int i = 0; i < count; i++) {
_this->wavSampleBuf[(2*i)] = std::clamp<int>(data[i].l * 32767.0f, -32768, 32767);
_this->wavSampleBuf[(2*i) + 1] = std::clamp<int>(data[i].r * 32767.0f, -32768, 32767);
}
volk_32f_s32f_convert_16i(_this->wavSampleBuf, (float*)data, 32767.0f, count*2);
_this->audioWriter->writeSamples(_this->wavSampleBuf, count * 2 * sizeof(int16_t));
_this->samplesWritten += count;
}
static void _basebandHandler(dsp::complex_t *data, int count, void *ctx) {
RecorderModule* _this = (RecorderModule*)ctx;
for (int i = 0; i < count; i++) {
_this->wavSampleBuf[(2*i)] = data[i].re * 32767.0f;
_this->wavSampleBuf[(2*i) + 1] = data[i].im * 32767.0f;
}
volk_32f_s32f_convert_16i(_this->wavSampleBuf, (float*)data, 32767.0f, count*2);
_this->basebandWriter->writeSamples(_this->wavSampleBuf, count * 2 * sizeof(int16_t));
_this->samplesWritten += count;
}

Wyświetl plik

@ -913,6 +913,7 @@ private:
static void streamCB(short *xi, short *xq, sdrplay_api_StreamCbParamsT *params,
unsigned int numSamples, unsigned int reset, void *cbContext) {
SDRPlaySourceModule* _this = (SDRPlaySourceModule*)cbContext;
// TODO: Optimise using volk and math
if (!_this->running) { return; }
for (int i = 0; i < numSamples; i++) {
int id = _this->bufferIndex++;