/* * ---------------------------------------------------------------- * * ITA core libs * (c) Copyright Institute of Technical Acoustics (ITA) * RWTH Aachen University, Germany, 2015-2017 * * ---------------------------------------------------------------- * ____ __________ _______ * // / //__ ___/ // _ | * // / // / // /_| | * // / // / // ___ | * //__/ //__/ //__/ |__| * * ---------------------------------------------------------------- * */ #ifndef INCLUDE_WATCHER_ITA_CONVOLUTION #define INCLUDE_WATCHER_ITA_CONVOLUTION #include #include #include #include // Vorwärtsdeklarationen class ITAConvolutionImpl; /** * Diese Klasse definiert die Schnittstelle für schnelle (offline) Faltungen. * Die Funktionalität besteht darin zwei Signale möglichst schnell und effizient * miteinander zu falten. Die Eingaben und Ausgaben werden im Zeitbereich übergeben. * Instanzen der Klasse repräsentieren Faltungen eines bestimmten Typs * (bestimmte Eingabeparameter). Damit die maximale Leistung erreicht werden kann, * müssen vorher die Faltungsoperationen geplant werden. */ class ITA_CONVOLUTION_API ITAConvolution : public ITAUncopyable { public: // TODO: Flags static const int static const int DEFAULT_FLAGS = 0; //! Standardkonstruktor ITAConvolution(); //! Initialisierungskonstruktor (Arrays) ITAConvolution(int src1length, int src2length, int flags=DEFAULT_FLAGS); //! Destruktor virtual ~ITAConvolution(); //! Planungsmethode (Arrays) void plan(int src1length, int src2length, int flags=DEFAULT_FLAGS); //! Gibt zurück ob die Faltung schon geplant ist bool isPlanned() const; //! Faltungsmethode (Arrays) virtual void convolve(const float* src1, int src1length, const float* src2, int src2length, float* dest, int destlength); private: ITAConvolutionImpl* m_pImpl; }; #endif // INCLUDE_WATCHER_ITA_CONVOLUTION