#include "file_source.h" #include "dsp/block.h" #include "dsp/block_helpers.h" #include namespace satdump { namespace ndsp { template FileSourceBlock::FileSourceBlock() : Block("file_source_" + getShortTypeName(), {}, // {{"out", getTypeSampleType()}}) { } template FileSourceBlock::~FileSourceBlock() { } template bool FileSourceBlock::work() { if (!d_eof && !file_reader.eof() && !work_should_exit) { auto oblk = outputs[0].fifo->newBufferSamples(d_buffer_size, sizeof(T)); T *obuf = oblk.template getSamples(); file_reader.read((char *)obuf, d_buffer_size * sizeof(T)); oblk.size = d_buffer_size; outputs[0].fifo->wait_enqueue(oblk); d_progress = file_reader.tellg(); } else { d_eof = true; outputs[0].fifo->wait_enqueue(outputs[0].fifo->newBufferTerminator()); return true; } return false; } template class FileSourceBlock; template class FileSourceBlock; template class FileSourceBlock; template class FileSourceBlock; template class FileSourceBlock; } // namespace ndsp } // namespace satdump