#ifndef CRI_H
#define CRI_H

#include <QObject>
#include <QMetaType>

#include "model/processor/IProcessStrategy.h"
#include "utils/OpenCLHelper.h"

#define CRI_MAX_BUFFER_SIZE     16


typedef struct Cri_t
{
 cl_int criFilterMode;
 cl_int frameCntr;
 cl_int scenariFrameNo;
}Cri_t;


class Cri : public IProcessStrategy
{
    Q_OBJECT
public:
   Q_INVOKABLE Cri(const Context context, const QString kernelPath, const QObject *parent);
   virtual void cpuProcess(ScenGenOutput_t parameters) override;
   virtual void finalize() override;

private:
   KernelFunctor<Image2DArray, Image2D, Cri_t> _kernelFunctor;
   virtual Image* processKernel(Image *frames, Buffer* scratchPad) override;
   Cri_t _kernelParameters;
   Image2D* _criBuffer[CRI_MAX_BUFFER_SIZE];
};
#endif // CRI_H