Code cleanup
authorDjordje Senicic <d-senicic1@ti.com>
Wed, 23 Mar 2016 00:31:45 +0000 (20:31 -0400)
committerDjordje Senicic <d-senicic1@ti.com>
Wed, 23 Mar 2016 00:31:45 +0000 (20:31 -0400)
src/gstdsp66videokernel.c
src/gstdsp66videokernel.h
src/kernels/oclconv/oclconv.cpp

index b273e4b3e42bf393b5645a047b6795c3dd584243..525c7684c048536ae5bedae9b4b55b2203931c8b 100644 (file)
@@ -55,42 +55,41 @@ enum
   PROP_KERNELTYPE
 };
 
-#define GST_TYPE_VIDEO_KERNEL_SIZE (gst_dsp66_video_kernel_size_get_type())
-#define GST_TYPE_VIDEO_KERNELTYPE_SIZE (gst_dsp66_video_kerneltype_size_get_type())
+#define GST_TYPE_VIDEO_KERNEL_FILTERSIZE (gst_dsp66_video_kernel_filtersize_get_type())
+#define GST_TYPE_VIDEO_KERNELTYPE (gst_dsp66_video_kerneltype_get_type())
 
-static const GEnumValue dsp66_video_kernel_sizes[] = {
-  {GST_DSP66_VIDEO_KERNEL_SIZE_5, "Kernel of 5 neighbour pixels", "5"},
-  {GST_DSP66_VIDEO_KERNEL_SIZE_9, "Kernel of 9 neighbour pixels", "9"},
+static const GEnumValue dsp66_video_kernel_filtersizes[] = {
+  {GST_DSP66_VIDEO_KERNEL_FILTERSIZE_5, "Kernel of 5 neighbour pixels", "5"},
+  {GST_DSP66_VIDEO_KERNEL_FILTERSIZE_9, "Kernel of 9 neighbour pixels", "9"},
   {0, NULL, NULL},
 };
-static const GEnumValue dsp66_video_kerneltype_sizes[] = {
+static const GEnumValue dsp66_video_kerneltype[] = {
   {GST_DSP66_VIDEO_KERNELTYPE_MEDIAN, "Kernel median", "0"},
   {GST_DSP66_VIDEO_KERNELTYPE_SOBEL, "Kernel sobel", "1"},
   {0, NULL, NULL},
 };
 
 static GType
-gst_dsp66_video_kernel_size_get_type (void)
+gst_dsp66_video_kernel_filtersize_get_type (void)
 {
-  static GType dsp66_video_kernel_size_type = 0;
+  static GType dsp66_video_kernel_filtersize_type = 0;
 
-  if (!dsp66_video_kernel_size_type) {
-    dsp66_video_kernel_size_type = g_enum_register_static ("GstDsp66VideoKernelSize",
-        dsp66_video_kernel_sizes);
+  if (!dsp66_video_kernel_filtersize_type) {
+    dsp66_video_kernel_filtersize_type = g_enum_register_static ("GstDsp66VideoKernelFilterSize",
+        dsp66_video_kernel_filtersizes);
   }
-  return dsp66_video_kernel_size_type;
+  return dsp66_video_kernel_filtersize_type;
 }
 
 static GType
-gst_dsp66_video_kerneltype_size_get_type (void)
+gst_dsp66_video_kerneltype_get_type (void)
 {
-  static GType dsp66_video_kerneltype_size_type = 0;
+  static GType dsp66_video_kerneltype_type = 0;
 
-  if (!dsp66_video_kerneltype_size_type) {
-    dsp66_video_kerneltype_size_type = g_enum_register_static ("GstDsp66VideoKernelTypeSize",
-        dsp66_video_kerneltype_sizes);
+  if (!dsp66_video_kerneltype_type) {
+    dsp66_video_kerneltype_type = g_enum_register_static ("GstDsp66VideoKernelType", dsp66_video_kerneltype);
   }
-  return dsp66_video_kerneltype_size_type;
+  return dsp66_video_kerneltype_type;
 }
 
 #define gst_dsp66_video_kernel_parent_class parent_class
@@ -119,13 +118,13 @@ gst_dsp66_video_kernel_class_init (GstDsp66VideoKernelClass * klass)
   gobject_class->get_property = gst_dsp66_video_kernel_get_property;
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FILTERSIZE,
-      g_param_spec_enum ("filtersize", "Filtersize", "The size of the filter (5 or 9)",
-          GST_TYPE_VIDEO_KERNEL_SIZE, DEFAULT_FILTERSIZE,
+      g_param_spec_enum ("filtersize", "Filtersize", "The size of the filter (5,9,25)",
+          GST_TYPE_VIDEO_KERNEL_FILTERSIZE, DEFAULT_FILTERSIZE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_KERNELTYPE,
-      g_param_spec_enum ("kerneltype", "Kerneltype", "Type of kernel (0=median, 1=sobel)",
-          GST_TYPE_VIDEO_KERNELTYPE_SIZE, DEFAULT_KERNELTYPE,
+      g_param_spec_enum ("kerneltype", "Kerneltype", "Type of kernel (0=median, 1=sobel 2=conv 3=arbitrary)",
+          GST_TYPE_VIDEO_KERNELTYPE, DEFAULT_KERNELTYPE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_LUM_ONLY,
@@ -137,7 +136,7 @@ gst_dsp66_video_kernel_class_init (GstDsp66VideoKernelClass * klass)
       gst_static_pad_template_get (&dsp66_video_kernel_sink_factory));
   gst_element_class_add_pad_template (gstelement_class,
       gst_static_pad_template_get (&dsp66_video_kernel_src_factory));
-  gst_element_class_set_static_metadata (gstelement_class, "Video kernels (choose: kerneltype, filtersize, lum-only)",
+  gst_element_class_set_static_metadata (gstelement_class, "Video kernels (choose: kerneltype, filtersize, lum-only, kernelname (opt))",
       "Video Kernel",
       "Apply a kernel via DSP C66 offload to an image",
       "based on work by: Wim Taymans <wim.taymans@gmail.com>");
@@ -171,7 +170,7 @@ gst_dsp66_video_kernel_transform_frame (GstVideoFilter * filter,
 {
   GstDsp66VideoKernel *kernel = GST_DSP66_VIDEO_KERNEL (filter);
 
-    if(imgproc (kernel->kerneltype, kernel->filtersize,
+    if(imgproc (kernel->kerneltype, kernel->filtersize, kernel->arbkernel,
         GST_VIDEO_FRAME_PLANE_DATA (out_frame, 0),
         GST_VIDEO_FRAME_PLANE_STRIDE (out_frame, 0),
         GST_VIDEO_FRAME_PLANE_DATA (in_frame, 0),
@@ -243,6 +242,9 @@ gst_dsp66_video_kernel_get_property (GObject * object, guint prop_id, GValue * v
     case PROP_LUM_ONLY:
       g_value_set_boolean (value, kernel->lum_only);
       break;
+    case PROP_KERNELTYPE:
+      g_value_set_enum (value, kernel->kerneltype);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
index 3c35ae2bb882fbb2f2f34c11fc123ff4bab432e7..7cb2c72958ff6091f5fd0a90aede0caa14d697ae 100644 (file)
@@ -44,9 +44,9 @@ typedef struct _GstDsp66VideoKernelClass GstDsp66VideoKernelClass;
 
 typedef enum
 {
-  GST_DSP66_VIDEO_KERNEL_SIZE_5 = 5,
-  GST_DSP66_VIDEO_KERNEL_SIZE_9 = 9
-} GstDsp66VideoKernelSize;
+  GST_DSP66_VIDEO_KERNEL_FILTERSIZE_5  = 5,
+  GST_DSP66_VIDEO_KERNEL_FILTERSIZE_9  = 9,
+} GstDsp66VideoKernelFilterSize;
 
 typedef enum {
   GST_DSP66_VIDEO_KERNELTYPE_MEDIAN = 0,
@@ -55,7 +55,7 @@ typedef enum {
 
 struct _GstDsp66VideoKernel {
   GstVideoFilter parent;
-  GstDsp66VideoKernelSize filtersize;
+  GstDsp66VideoKernelFilterSize filtersize;
   GstDsp66VideoKernelType kerneltype;
   gboolean lum_only;
 };
index 7d070e1c3da51b5919adb1f08f49c29c436dcbc8..601ea32807d43646d94e49d0bb2e35032dd1d1b2 100644 (file)
 using namespace cl;
 using namespace std;
 
-static const int NumElements = 1920 * 1200; /* Maximum resolution */
-
-static cl_uchar src  [NumElements];
-static cl_uchar dst  [NumElements];
-
 static int oclconv_imgproc(char *kernelName, unsigned char *data_in, unsigned char *data_out, int width, int height, int sstride, int dstride)
 {
    cl_int err     = CL_SUCCESS;
-   int  bufsize = sizeof(src);
+   int  bufsize   = sstride * height * sizeof(unsigned char);
 #ifdef VERBOSE
    ofstream logfile;
    logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app); 
    logfile << "Entered oclconv_test, width=" << width << " height=" << height << " dstride=" << dstride << " sstride=" << sstride << '\n';
    logfile.close();
-#endif
-   unsigned char *ptr_src     = src;
-   unsigned char *ptr_data_in = data_in;
-   for (int y=0; y < height; y++)
-   {
-     memcpy (ptr_src, ptr_data_in, width);
-     ptr_src     += sstride;
-     ptr_data_in += sstride;
-   }
-#ifdef VERBOSE
-   logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app); 
-   logfile << "Transfer done, starting openCL specific commands" << '\n';
-   logfile.close();
 #endif
    try 
    {
@@ -89,29 +71,12 @@ static int oclconv_imgproc(char *kernelName, unsigned char *data_in, unsigned ch
 
      CommandQueue Q(context, devices[0], CL_QUEUE_PROFILING_ENABLE);
 
-     Q.enqueueWriteBuffer(bufA, CL_FALSE, 0, bufsize, src, NULL, &ev1);
-     //Q.enqueueNDRangeKernel(kernel, NullRange, NDRange(NumVecElements), 
-     //                       NDRange(WorkGroupSize), NULL, &ev3);
+     Q.enqueueWriteBuffer(bufA, CL_FALSE, 0, bufsize, data_in, NULL, &ev1);
      Q.enqueueTask (kernel, NULL, &ev3);
-     Q.enqueueReadBuffer (bufDst, CL_TRUE, 0, bufsize, dst, NULL, &ev4);
+     Q.enqueueReadBuffer (bufDst, CL_TRUE, 0, bufsize, data_out, NULL, &ev4);
    }
    catch (Error err) 
-   { cerr << "ERROR: " << err.what() << "(" << err.err() << ")" << endl; }
-#ifdef VERBOSE
-   logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app); 
-   logfile << "OpenCL done, start transfer to output array!" << '\n';
-   logfile.close();
-#endif
-
-   unsigned char *ptr_dst      = dst;
-   unsigned char *ptr_data_out = data_out;
-   for (int y=0; y < height; y++)
-   {
-     memcpy (ptr_data_out, ptr_dst, width);
-     ptr_dst      += dstride;
-     ptr_data_out += dstride;
-   }
-
+   { cerr << "ERROR: " << err.what() << "(" << err.err() << ")" << endl; return -1; }
 #ifdef VERBOSE
    logfile.open ("/home/root/oclconv_log.txt", ios::out | ios::app); 
    logfile << "Success!" << endl; 
@@ -120,6 +85,7 @@ static int oclconv_imgproc(char *kernelName, unsigned char *data_in, unsigned ch
    return 0;
 }
 
+
 #ifdef __cplusplus
 extern "C" {
 #endif