#pragma once #include "block.h" namespace dsp { template class Sink : public block { public: Sink() {} Sink(stream* in) { init(in); } virtual ~Sink() {} virtual void init(stream* in) { _in = in; registerInput(_in); _block_init = true; } virtual void setInput(stream* in) { assert(_block_init); std::lock_guard lck(ctrlMtx); tempStop(); unregisterInput(_in); _in = in; registerInput(_in); tempStart(); } virtual int run() = 0; protected: stream* _in; }; }