adding NO_PROCESSING (i.e. just preview) mode

This commit is contained in:
Andrey Pavlenko
2015-08-27 13:28:09 +03:00
parent 016011fdf8
commit 43b76e548b
5 changed files with 23 additions and 4 deletions

View File

@@ -79,6 +79,7 @@ void dumpCLinfo()
cl::Context theContext;
cl::CommandQueue theQueue;
cl::Program theProgB2B, theProgI2B, theProgI2I;
bool haveOpenCL = false;
void initCL()
{
@@ -100,6 +101,7 @@ void initCL()
try
{
haveOpenCL = false;
cl::Platform p = cl::Platform::getDefault();
std::string ext = p.getInfo<CL_PLATFORM_EXTENSIONS>();
if(ext.find("cl_khr_gl_sharing") == std::string::npos)
@@ -124,6 +126,7 @@ void initCL()
LOGD("OpenCV+OpenCL works OK!");
else
LOGE("Can't init OpenCV with OpenCL TAPI");
haveOpenCL = true;
}
catch(cl::Error& e)
{
@@ -147,6 +150,8 @@ void closeCL()
#define GL_TEXTURE_2D 0x0DE1
void procOCL_I2I(int texIn, int texOut, int w, int h)
{
if(!haveOpenCL) return;
LOGD("procOCL_I2I(%d, %d, %d, %d)", texIn, texOut, w, h);
cl::ImageGL imgIn (theContext, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, texIn);
cl::ImageGL imgOut(theContext, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, texOut);
@@ -179,6 +184,8 @@ void procOCL_I2I(int texIn, int texOut, int w, int h)
void procOCL_OCV(int tex, int w, int h)
{
if(!haveOpenCL) return;
int64_t t = getTimeMs();
cl::ImageGL imgIn (theContext, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, tex);
std::vector < cl::Memory > images(1, imgIn);

View File

@@ -63,9 +63,9 @@ GLuint FBO = 0;
GLuint texOES = 0;
int texWidth = 0, texHeight = 0;
enum ProcMode {PROC_MODE_CPU=1, PROC_MODE_OCL_DIRECT=2, PROC_MODE_OCL_OCV=3};
enum ProcMode {PROC_MODE_NO_PROC=0, PROC_MODE_CPU=1, PROC_MODE_OCL_DIRECT=2, PROC_MODE_OCL_OCV=3};
ProcMode procMode = PROC_MODE_CPU;
ProcMode procMode = PROC_MODE_NO_PROC;
static inline void deleteTex(GLuint* tex)
{
@@ -298,6 +298,7 @@ extern "C" void drawFrame()
switch(procMode)
{
case PROC_MODE_NO_PROC: drawFrameOrig(); break;
case PROC_MODE_CPU: drawFrameProcCPU(); break;
case PROC_MODE_OCL_DIRECT: drawFrameProcOCL(); break;
case PROC_MODE_OCL_OCV: drawFrameProcOCLOCV(); break;
@@ -366,6 +367,7 @@ extern "C" void setProcessingMode(int mode)
{
switch(mode)
{
case PROC_MODE_NO_PROC: procMode = PROC_MODE_NO_PROC; break;
case PROC_MODE_CPU: procMode = PROC_MODE_CPU; break;
case PROC_MODE_OCL_DIRECT: procMode = PROC_MODE_OCL_DIRECT; break;
case PROC_MODE_OCL_OCV: procMode = PROC_MODE_OCL_OCV; break;