From 2bba7d602744ccd6dab26940661f0fdfbf231af8 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sun, 25 Dec 2016 21:34:03 +0100 Subject: Refactor flowgraph and puncturing rules --- src/ModPlugin.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) (limited to 'src/ModPlugin.h') diff --git a/src/ModPlugin.h b/src/ModPlugin.h index 215951a..bdc3843 100644 --- a/src/ModPlugin.h +++ b/src/ModPlugin.h @@ -1,6 +1,11 @@ /* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Her Majesty the Queen in Right of Canada (Communications Research Center Canada) + + Copyright (C) 2016 + Matthias P. Braendli, matthias.braendli@mpb.li + + http://opendigitalradio.org */ /* This file is part of ODR-DabMod. @@ -30,16 +35,52 @@ #include #include -#ifdef DEBUG -# include -#endif - class ModPlugin { public: - virtual int process(std::vector dataIn, + virtual int process( + std::vector dataIn, std::vector dataOut) = 0; virtual const char* name() = 0; }; +/* Inputs are sources, the output buffers without reading any */ +class ModInput : public ModPlugin +{ +public: + virtual int process( + std::vector dataIn, + std::vector dataOut); + virtual int process(Buffer* dataOut) = 0; +}; + +/* Codecs are 1-input 1-output flowgraph plugins */ +class ModCodec : public ModPlugin +{ +public: + virtual int process( + std::vector dataIn, + std::vector dataOut); + virtual int process(Buffer* const dataIn, Buffer* dataOut) = 0; +}; + +/* Muxes are N-input 1-output flowgraph plugins */ +class ModMux : public ModPlugin +{ +public: + virtual int process( + std::vector dataIn, + std::vector dataOut); + virtual int process(std::vector dataIn, Buffer* dataOut) = 0; +}; + +/* Outputs do not create any output buffers */ +class ModOutput : public ModPlugin +{ +public: + virtual int process( + std::vector dataIn, + std::vector dataOut); + virtual int process(Buffer* dataIn) = 0; +}; -- cgit v1.2.3