satdump/src-core/dsp/io/file_source.cpp

44 lines
1.1 KiB
C++
Raw Normal View History

2025-03-09 10:16:40 +01:00
#include "file_source.h"
namespace satdump
{
namespace ndsp
{
FileSourceBlock::FileSourceBlock()
2025-03-22 16:24:29 +01:00
: Block("file_source_cc", {}, {{"out", DSP_SAMPLE_TYPE_CF32}})
2025-03-09 10:16:40 +01:00
{
}
FileSourceBlock::~FileSourceBlock()
{
}
bool FileSourceBlock::work()
{
2025-03-10 20:05:31 +01:00
if (!baseband_reader.is_eof() && !work_should_exit)
2025-03-09 10:16:40 +01:00
{
auto oblk = DSPBuffer::newBufferSamples<complex_t>(d_buffer_size);
complex_t *obuf = oblk.getSamples<complex_t>();
int read = baseband_reader.read_samples(obuf, d_buffer_size);
if (d_iq_swap)
for (int i = 0; i < read; i++)
obuf[i] = complex_t(obuf[i].imag, obuf[i].real);
oblk.size = read;
outputs[0].fifo->wait_enqueue(oblk);
d_progress = baseband_reader.progress;
}
else
{
d_eof = true;
outputs[0].fifo->wait_enqueue(DSPBuffer::newBufferTerminator());
return true;
}
return false;
}
}
}