From 034204d3d8d1a32b1a20e50697c5f81db6fb20cf Mon Sep 17 00:00:00 2001
From: Matthias Vogelgesang <matthias.vogelgesang@gmail.com>
Date: Fri, 31 Aug 2012 23:14:16 +0200
Subject: Initial plugin manager

---
 test/benchmark.c | 35 ++++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 13 deletions(-)

(limited to 'test/benchmark.c')

diff --git a/test/benchmark.c b/test/benchmark.c
index 0b4f6f8..1604cdb 100644
--- a/test/benchmark.c
+++ b/test/benchmark.c
@@ -20,6 +20,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include "uca-camera.h"
+#include "uca-plugin-manager.h"
 
 typedef void (*GrabFrameFunc) (UcaCamera *camera, gpointer buffer, guint n_frames);
 
@@ -37,20 +38,26 @@ sigint_handler(int signal)
 static void
 print_usage (void)
 {
-    gchar **types;
-
-    g_print ("Usage: benchmark (");
-    types = uca_camera_get_types ();
+    /* gchar **types; */
+    GList *types;
+    UcaPluginManager *manager;
+
+    manager = uca_plugin_manager_new ();
+    g_print ("Usage: benchmark [");
+    /* types = uca_camera_get_types (); */
+    types = uca_plugin_manager_get_available_cameras (manager);
+
+    if (g_list_length (types) == 0) {
+        g_print ("] -- no camera plugin found\n");
+        return;
+    }
 
-    for (guint i = 0; types[i] != NULL; i++) {
-        if (types[i+1] == NULL)
-            g_print ("%s)", types[i]);
-        else
-            g_print ("%s | ", types[i]);
+    for (GList *it = g_list_first (types); it != NULL; it = g_list_next (it)) {
+        gchar *name = (gchar *) it->data;
+        g_print ("`%s' ", name);
     }
 
-    g_print ("\n");
-    g_strfreev (types);
+    g_print ("]\n");
 }
 
 static void
@@ -227,10 +234,12 @@ benchmark (UcaCamera *camera)
 int
 main (int argc, char *argv[])
 {
+    UcaPluginManager *manager;
     GIOChannel  *log_channel;
     GError      *error = NULL;
 
     (void) signal (SIGINT, sigint_handler);
+    g_type_init();
 
     if (argc < 2) {
         print_usage();
@@ -241,8 +250,8 @@ main (int argc, char *argv[])
     g_assert_no_error (error);
     g_log_set_handler (NULL, G_LOG_LEVEL_MASK, log_handler, log_channel);
 
-    g_type_init();
-    camera = uca_camera_new(argv[1], &error);
+    manager = uca_plugin_manager_new ();
+    camera = uca_plugin_manager_new_camera (manager, argv[1], &error);
 
     if (camera == NULL) {
         g_error ("Initialization: %s", error->message);
-- 
cgit v1.2.3


From af00a17308fd17ea454021649a36f2f397a6da2b Mon Sep 17 00:00:00 2001
From: Matthias Vogelgesang <matthias.vogelgesang@gmail.com>
Date: Wed, 19 Sep 2012 15:59:57 +0200
Subject: Fix segfault

---
 test/benchmark.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'test/benchmark.c')

diff --git a/test/benchmark.c b/test/benchmark.c
index 1604cdb..73b6805 100644
--- a/test/benchmark.c
+++ b/test/benchmark.c
@@ -38,16 +38,14 @@ sigint_handler(int signal)
 static void
 print_usage (void)
 {
-    /* gchar **types; */
     GList *types;
     UcaPluginManager *manager;
 
     manager = uca_plugin_manager_new ();
     g_print ("Usage: benchmark [");
-    /* types = uca_camera_get_types (); */
     types = uca_plugin_manager_get_available_cameras (manager);
 
-    if (g_list_length (types) == 0) {
+    if (types == NULL) {
         g_print ("] -- no camera plugin found\n");
         return;
     }
-- 
cgit v1.2.3


From 6dd3229337aa1920d266fbd2c4001fb7c65f5cf1 Mon Sep 17 00:00:00 2001
From: Matthias Vogelgesang <matthias.vogelgesang@gmail.com>
Date: Wed, 19 Sep 2012 18:04:32 +0200
Subject: Make most cameras plugins

---
 test/benchmark.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

(limited to 'test/benchmark.c')

diff --git a/test/benchmark.c b/test/benchmark.c
index 73b6805..ef99fd1 100644
--- a/test/benchmark.c
+++ b/test/benchmark.c
@@ -42,7 +42,7 @@ print_usage (void)
     UcaPluginManager *manager;
 
     manager = uca_plugin_manager_new ();
-    g_print ("Usage: benchmark [");
+    g_print ("Usage: benchmark [ ");
     types = uca_plugin_manager_get_available_cameras (manager);
 
     if (types == NULL) {
@@ -52,10 +52,11 @@ print_usage (void)
 
     for (GList *it = g_list_first (types); it != NULL; it = g_list_next (it)) {
         gchar *name = (gchar *) it->data;
-        g_print ("`%s' ", name);
+        if (g_list_next (it) == NULL)
+            g_print ("%s ]\n", name);
+        else
+            g_print ("%s, ", name);
     }
-
-    g_print ("]\n");
 }
 
 static void
-- 
cgit v1.2.3


From 3a45434834999e1ac7c7a99cdaa644d939b859b0 Mon Sep 17 00:00:00 2001
From: Matthias Vogelgesang <matthias.vogelgesang@gmail.com>
Date: Tue, 25 Sep 2012 18:18:23 +0200
Subject: Move tools from test/ to tools/ directory

---
 test/benchmark.c | 267 -------------------------------------------------------
 1 file changed, 267 deletions(-)
 delete mode 100644 test/benchmark.c

(limited to 'test/benchmark.c')

diff --git a/test/benchmark.c b/test/benchmark.c
deleted file mode 100644
index ef99fd1..0000000
--- a/test/benchmark.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/* Copyright (C) 2011, 2012 Matthias Vogelgesang <matthias.vogelgesang@kit.edu>
-   (Karlsruhe Institute of Technology)
-
-   This library is free software; you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published by the
-   Free Software Foundation; either version 2.1 of the License, or (at your
-   option) any later version.
-
-   This library is distributed in the hope that it will be useful, but WITHOUT
-   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-   FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-   details.
-
-   You should have received a copy of the GNU Lesser General Public License along
-   with this library; if not, write to the Free Software Foundation, Inc., 51
-   Franklin St, Fifth Floor, Boston, MA 02110, USA */
-
-#include <glib-object.h>
-#include <signal.h>
-#include <string.h>
-#include <stdlib.h>
-#include "uca-camera.h"
-#include "uca-plugin-manager.h"
-
-typedef void (*GrabFrameFunc) (UcaCamera *camera, gpointer buffer, guint n_frames);
-
-static UcaCamera *camera = NULL;
-
-static void
-sigint_handler(int signal)
-{
-    g_print ("Closing down libuca\n");
-    uca_camera_stop_recording (camera, NULL);
-    g_object_unref (camera);
-    exit (signal);
-}
-
-static void
-print_usage (void)
-{
-    GList *types;
-    UcaPluginManager *manager;
-
-    manager = uca_plugin_manager_new ();
-    g_print ("Usage: benchmark [ ");
-    types = uca_plugin_manager_get_available_cameras (manager);
-
-    if (types == NULL) {
-        g_print ("] -- no camera plugin found\n");
-        return;
-    }
-
-    for (GList *it = g_list_first (types); it != NULL; it = g_list_next (it)) {
-        gchar *name = (gchar *) it->data;
-        if (g_list_next (it) == NULL)
-            g_print ("%s ]\n", name);
-        else
-            g_print ("%s, ", name);
-    }
-}
-
-static void
-log_handler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user)
-{
-    gsize       n_written;
-    GError     *error = NULL;
-    GIOChannel *channel = user;
-
-#if GLIB_CHECK_VERSION(2, 26, 0)
-    GTimeZone  *tz;
-    GDateTime  *date_time;
-    gchar      *new_message;
-
-    tz = g_time_zone_new_local ();
-    date_time = g_date_time_new_now (tz);
-
-    new_message = g_strdup_printf ("[%s] %s\n",
-                                   g_date_time_format (date_time, "%FT%H:%M:%S%z"), message);
-
-    g_time_zone_unref (tz);
-    g_date_time_unref (date_time);
-
-    g_io_channel_write_chars (channel, new_message, strlen (new_message), &n_written, &error);
-    g_assert_no_error (error);
-    g_free (new_message);
-#else
-    g_io_channel_write_chars (channel, message, strlen (message), &n_written, &error);
-    g_assert_no_error (error);
-#endif
-
-    g_io_channel_flush (channel, &error);
-    g_assert_no_error (error);
-}
-
-static void
-grab_frames_sync (UcaCamera *camera, gpointer buffer, guint n_frames)
-{
-    GError *error = NULL;
-
-    uca_camera_start_recording (camera, &error);
-
-    for (guint i = 0; i < n_frames; i++) {
-        uca_camera_grab(camera, &buffer, &error);
-
-        if (error != NULL) {
-            g_warning ("Error grabbing frame %02i/%i: `%s'", i, n_frames, error->message);
-            g_error_free (error);
-            error = NULL;
-        }
-    }
-
-    uca_camera_stop_recording (camera, &error);
-}
-
-static void
-grab_callback (gpointer data, gpointer user_data)
-{
-    guint *n_acquired_frames = user_data;
-    *n_acquired_frames += 1;
-}
-
-static void
-grab_frames_async (UcaCamera *camera, gpointer buffer, guint n_frames)
-{
-    GError *error = NULL;
-    guint n_acquired_frames = 0;
-
-    uca_camera_set_grab_func (camera, grab_callback, &n_acquired_frames);
-    uca_camera_start_recording (camera, &error);
-
-    /*
-     * Behold! Spinlooping is probably a bad idea but nowadays single core
-     * machines are relatively rare.
-     */
-    while (n_acquired_frames < n_frames)
-        ;
-
-    uca_camera_stop_recording (camera, &error);
-
-}
-
-static void
-benchmark_method (UcaCamera *camera, gpointer buffer, GrabFrameFunc func, guint n_runs, guint n_frames, guint n_bytes)
-{
-    GTimer *timer;
-    gdouble fps;
-    gdouble bandwidth;
-    gdouble total_time = 0.0;
-    GError *error = NULL;
-
-    g_print ("%-10i%-10i", n_frames, n_runs);
-    timer = g_timer_new ();
-    g_assert_no_error (error);
-
-    for (guint run = 0; run < n_runs; run++) {
-        g_message ("Start run %i of %i", run, n_runs);
-        g_timer_start (timer);
-
-        func (camera, buffer, n_frames);
-
-        g_timer_stop (timer);
-        total_time += g_timer_elapsed (timer, NULL);
-    }
-
-    g_assert_no_error (error);
-
-    fps = n_runs * n_frames / total_time;
-    bandwidth = n_bytes * fps / 1024 / 1024;
-    g_print ("%-16.2f%-16.2f\n", fps, bandwidth);
-
-    g_timer_destroy (timer);
-}
-
-static void
-benchmark (UcaCamera *camera)
-{
-    const guint n_runs = 3;
-    const guint n_frames = 100;
-
-    guint   sensor_width;
-    guint   sensor_height;
-    guint   roi_width;
-    guint   roi_height;
-    guint   bits;
-    guint   n_bytes_per_pixel;
-    guint   n_bytes;
-    gdouble exposure = 0.00001;
-    gpointer buffer;
-
-    g_object_set (G_OBJECT (camera),
-                  "exposure-time", exposure,
-                  NULL);
-
-    g_object_get (G_OBJECT (camera),
-                  "sensor-width", &sensor_width,
-                  "sensor-height", &sensor_height,
-                  "sensor-bitdepth", &bits,
-                  "roi-width", &roi_width,
-                  "roi-height", &roi_height,
-                  "exposure-time", &exposure,
-                  NULL);
-
-    g_print ("# --- General information ---\n");
-    g_print ("# Sensor size: %ix%i\n", sensor_width, sensor_height);
-    g_print ("# ROI size: %ix%i\n", roi_width, roi_height);
-    g_print ("# Exposure time: %fs\n", exposure);
-
-    /* Synchronous frame acquisition */
-    g_print ("# %-10s%-10s%-10s%-16s%-16s\n", "type", "n_frames", "n_runs", "frames/s", "MiB/s");
-    g_print ("  %-10s", "sync");
-
-    g_message ("Start synchronous benchmark");
-
-    n_bytes_per_pixel = bits > 8 ? 2 : 1;
-    n_bytes = roi_width * roi_height * n_bytes_per_pixel;
-    buffer = g_malloc0(n_bytes);
-
-    benchmark_method (camera, buffer, grab_frames_sync, n_runs, n_frames, n_bytes);
-
-    /* Asynchronous frame acquisition */
-    g_object_set (G_OBJECT(camera),
-                 "transfer-asynchronously", TRUE,
-                 NULL);
-
-    g_message ("Start asynchronous benchmark");
-    g_print ("  %-10s", "async");
-
-    benchmark_method (camera, buffer, grab_frames_async, n_runs, n_frames, n_bytes);
-
-    g_free (buffer);
-}
-
-int
-main (int argc, char *argv[])
-{
-    UcaPluginManager *manager;
-    GIOChannel  *log_channel;
-    GError      *error = NULL;
-
-    (void) signal (SIGINT, sigint_handler);
-    g_type_init();
-
-    if (argc < 2) {
-        print_usage();
-        return 1;
-    }
-
-    log_channel = g_io_channel_new_file ("error.log", "a+", &error);
-    g_assert_no_error (error);
-    g_log_set_handler (NULL, G_LOG_LEVEL_MASK, log_handler, log_channel);
-
-    manager = uca_plugin_manager_new ();
-    camera = uca_plugin_manager_new_camera (manager, argv[1], &error);
-
-    if (camera == NULL) {
-        g_error ("Initialization: %s", error->message);
-        return 1;
-    }
-
-    benchmark (camera);
-
-    g_object_unref (camera);
-    g_io_channel_shutdown (log_channel, TRUE, &error);
-    g_assert_no_error (error);
-
-    return 0;
-}
-- 
cgit v1.2.3