36 lines
718 B
C
Raw Normal View History

2020-06-22 16:45:57 +02:00
#pragma once
2022-06-15 16:08:28 +02:00
#include "block.h"
2020-06-22 16:45:57 +02:00
namespace dsp {
2020-11-02 03:57:44 +01:00
template <class T>
2022-06-15 16:08:28 +02:00
class Sink : public block {
2020-06-22 16:45:57 +02:00
public:
2022-06-15 16:08:28 +02:00
Sink() {}
2020-06-22 16:45:57 +02:00
2022-06-15 16:08:28 +02:00
Sink(stream<T>* in) { init(in); }
2020-06-22 16:45:57 +02:00
2022-06-15 16:08:28 +02:00
virtual ~Sink() {}
2020-11-02 16:16:21 +01:00
2022-06-15 16:08:28 +02:00
virtual void init(stream<T>* in) {
_in = in;
2022-06-15 16:08:28 +02:00
registerInput(_in);
_block_init = true;
}
2022-06-15 16:08:28 +02:00
virtual void setInput(stream<T>* in) {
assert(_block_init);
std::lock_guard<std::recursive_mutex> lck(ctrlMtx);
tempStop();
unregisterInput(_in);
_in = in;
2022-06-15 16:08:28 +02:00
registerInput(_in);
tempStart();
}
2022-06-15 16:08:28 +02:00
virtual int run() = 0;
2022-06-15 16:08:28 +02:00
protected:
stream<T>* _in;
};
2022-06-15 16:08:28 +02:00
}