diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a66d2f..a39272d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,6 +257,7 @@ SET (cubicsdr_sources src/visual/SpectrumContext.cpp src/visual/WaterfallCanvas.cpp src/visual/WaterfallContext.cpp + src/process/VisualProcessor.cpp src/ui/GLPanel.cpp external/rtaudio/RtAudio.cpp external/lodepng/lodepng.cpp @@ -304,6 +305,7 @@ SET (cubicsdr_headers src/visual/SpectrumContext.h src/visual/WaterfallCanvas.h src/visual/WaterfallContext.h + src/process/VisualProcessor.h src/ui/GLPanel.h src/ui/UITestCanvas.cpp src/ui/UITestCanvas.h diff --git a/src/process/VisualProcessor.cpp b/src/process/VisualProcessor.cpp new file mode 100644 index 0000000..c19fe88 --- /dev/null +++ b/src/process/VisualProcessor.cpp @@ -0,0 +1 @@ +#include "VisualProcessor.h" diff --git a/src/process/VisualProcessor.h b/src/process/VisualProcessor.h new file mode 100644 index 0000000..1cc23bd --- /dev/null +++ b/src/process/VisualProcessor.h @@ -0,0 +1,41 @@ +#pragma once + +#include "CubicSDRDefs.h" +#include "ThreadQueue.h" + +typedef ThreadQueue VisualDataQueue; + +class VisualProcessor { +public: + void setInput(VisualDataQueue *vis_in) { + // set input queue + } + + void attachOutput(VisualDataQueue *vis_out) { + // attach an output queue + } + + void removeOutput(VisualDataQueue *vis_out) { + // remove an output queue + } + + void pushInput(ReferenceCounter *input) { + // push input data + } + + virtual void process() { + // process input to output + // distribute(output); + } + +protected: + void distribute(ReferenceCounter *output) { + // distribute outputs + } + + VisualDataQueue * input; + std::vector outputs; + + std::mutex busy_update; +}; +