#include "model/processor/strategies/Cri.h" #include "model/processor/BIP.h" #include #include Cri::Cri(const Context context,const QString kernelPath,const QObject *parent = Q_NULLPTR) : IProcessStrategy(context, kernelPath, "Cri", parent), _kernelFunctor(KernelFunctor(_kernel)) { memset(&_kernelParameters, 0, sizeof (Cri_t)); // _criBuffer = new Image2D()[CRI_MAX_BUFFER_SIZE]; } void Cri::cpuProcess(ScenGenOutput_t params) { if(params.criFilterMode.isUpdated) _kernelParameters.criFilterMode = params.criFilterMode.value; if(params.scenarioFrameNo.isUpdated) _kernelParameters.scenariFrameNo = params.scenarioFrameNo.value; if(params.frameCntr.isUpdated) _kernelParameters.frameCntr = params.frameCntr.value; } void Cri::finalize() { } Image* Cri::processKernel(Image *frames, Buffer* scratchPad) { auto format = frames->getImageInfo(); auto width = frames->getImageInfo(); auto height = frames->getImageInfo(); _criBuffer[_kernelParameters.scenariFrameNo] = static_cast(frames); auto imageOutput = new Image2D(_CLContext, CL_MEM_READ_WRITE, ImageFormat(format.image_channel_order, format.image_channel_data_type), width, height); delete frames; return imageOutput; }