From 8d73ad32492403d20d505a9eeac8fa2a1e88cf0c Mon Sep 17 00:00:00 2001 From: Yinhang Liu Date: Fri, 15 Sep 2017 16:57:05 +0800 Subject: standard-OCL: add CLVideoBuffer class * support CLVideoBuffer path [WIP] --- modules/ocl/cl_utils.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'modules/ocl/cl_utils.cpp') diff --git a/modules/ocl/cl_utils.cpp b/modules/ocl/cl_utils.cpp index 9583989..e2a927b 100644 --- a/modules/ocl/cl_utils.cpp +++ b/modules/ocl/cl_utils.cpp @@ -61,8 +61,13 @@ convert_to_clbuffer ( { SmartPtr cl_buf; - SmartPtr bo_buf = buf.dynamic_cast_ptr (); - cl_buf = new CLVaBuffer (context, bo_buf); + SmartPtr cl_video_buf = buf.dynamic_cast_ptr (); + if (cl_video_buf.ptr ()) { + cl_buf = cl_video_buf->get_cl_buffer (); + } else { + SmartPtr bo_buf = buf.dynamic_cast_ptr (); + cl_buf = new CLVaBuffer (context, bo_buf); + } XCAM_FAIL_RETURN (WARNING, cl_buf.ptr (), NULL, "convert to clbuffer failed"); return cl_buf; @@ -78,8 +83,14 @@ convert_to_climage ( { SmartPtr cl_image; - SmartPtr bo_buf = buf.dynamic_cast_ptr (); - cl_image = new CLVaImage (context, bo_buf, desc, offset); + SmartPtr cl_video_buf = buf.dynamic_cast_ptr (); + if (cl_video_buf.ptr ()) { + SmartPtr cl_buf = cl_video_buf->get_cl_buffer (); + cl_image = new CLImage2D (context, desc, flags, cl_buf); + } else { + SmartPtr bo_buf = buf.dynamic_cast_ptr (); + cl_image = new CLVaImage (context, bo_buf, desc, offset); + } XCAM_FAIL_RETURN (WARNING, cl_image.ptr (), NULL, "convert to climage failed"); return cl_image; -- cgit v1.2.3