summaryrefslogtreecommitdiffstats
path: root/test/test_jpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_jpeg.c')
-rw-r--r--test/test_jpeg.c158
1 files changed, 158 insertions, 0 deletions
diff --git a/test/test_jpeg.c b/test/test_jpeg.c
new file mode 100644
index 0000000..9e1bba6
--- /dev/null
+++ b/test/test_jpeg.c
@@ -0,0 +1,158 @@
+/*------------------------------------------------------------------------
+ * Copyright 2009 (c) Jeff Brown <spadix@users.sourceforge.net>
+ *
+ * This file is part of the ZBar Bar Code Reader.
+ *
+ * The ZBar Bar Code Reader is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * The ZBar Bar Code Reader 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser Public License
+ * along with the ZBar Bar Code Reader; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * http://sourceforge.net/projects/zbar
+ *------------------------------------------------------------------------*/
+
+#include "config.h"
+#include <argp.h>
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <zbar.h>
+
+#include "test_images.h"
+
+unsigned char jpeg[405] = {
+ 255, 216, 255, 224, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0,
+ 72, 0, 72, 0, 0, 255, 219, 0, 67, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 255,
+ 219, 0, 67, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 255, 192, 0, 17, 8, 0, 8,
+ 0, 8, 3, 1, 17, 0, 2, 17, 1, 3, 17, 1, 255, 196, 0,
+ 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 255, 196, 0, 32, 16, 0, 1, 2, 5, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 20, 22, 0, 8,
+ 18, 19, 24, 6, 23, 36, 37, 39, 255, 196, 0, 20, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 255, 196, 0, 35, 17, 0, 2, 1, 1, 7, 5, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 20, 21, 19, 22, 0, 1, 7, 18, 23,
+ 36, 38, 3, 4, 35, 37, 52, 255, 218, 0, 12, 3, 1, 0, 2,
+ 17, 3, 17, 0, 63, 0, 118, 93, 56, 89, 200, 157, 68, 199, 111,
+ 134, 71, 23, 12, 215, 215, 130, 197, 136, 103, 143, 117, 170, 97, 48,
+ 42, 244, 202, 12, 216, 179, 211, 183, 29, 252, 24, 42, 160, 197, 45,
+ 65, 146, 62, 181, 91, 48, 134, 52, 246, 76, 170, 151, 4, 42, 137,
+ 198, 104, 56, 214, 96, 193, 7, 120, 197, 15, 154, 194, 128, 216, 207,
+ 170, 114, 197, 220, 215, 36, 130, 123, 155, 219, 184, 172, 222, 150, 146,
+ 23, 191, 47, 17, 204, 2, 197, 155, 246, 180, 206, 226, 223, 255, 217,
+};
+
+unsigned char rgb[8 * 8 * 3] = {
+ 255, 255, 255, 176, 238, 176, 94, 220, 94, 60, 213, 60, 60, 213, 60,
+ 94, 220, 94, 176, 238, 176, 255, 255, 255, 176, 238, 176, 46, 210, 46,
+ 10, 102, 10, 17, 204, 17, 17, 204, 17, 10, 102, 10, 46, 210, 46,
+ 176, 238, 176, 94, 220, 94, 19, 204, 19, 9, 102, 9, 17, 204, 17,
+ 17, 204, 17, 9, 102, 9, 19, 204, 19, 94, 220, 94, 60, 213, 60,
+ 17, 204, 17, 9, 102, 9, 17, 204, 17, 17, 204, 17, 9, 102, 9,
+ 17, 204, 17, 60, 213, 60, 60, 213, 60, 17, 204, 17, 17, 204, 17,
+ 17, 204, 17, 17, 204, 17, 17, 204, 17, 17, 204, 17, 60, 213, 60,
+ 94, 220, 94, 10, 102, 10, 17, 204, 17, 17, 204, 17, 17, 204, 17,
+ 17, 204, 17, 10, 102, 10, 94, 220, 94, 176, 238, 176, 46, 210, 46,
+ 10, 102, 10, 9, 102, 9, 9, 102, 9, 10, 102, 10, 46, 210, 46,
+ 176, 238, 176, 255, 255, 255, 176, 238, 176, 94, 220, 94, 60, 213, 60,
+ 60, 213, 60, 94, 220, 94, 176, 238, 176, 255, 255, 255,
+};
+
+#define PROGRAM_NAME "test_video"
+
+static const char doc[] =
+ "\nTest if ZBar is able to handle a video input (camera)\n";
+
+static const struct argp_option options[] = {
+ { "quiet", 'q', 0, 0, "Don't be verbose", 0 },
+ { "help", '?', 0, 0, "Give this help list", -1 },
+ { "usage", -3, 0, 0, "Give a short usage message", 0 },
+ { 0 }
+};
+
+static int quiet = 0;
+
+static error_t parse_opt(int k, char *optarg, struct argp_state *state)
+{
+ switch (k) {
+ case 'q':
+ quiet = 1;
+ break;
+ case '?':
+ argp_state_help(state, state->out_stream,
+ ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_DOC);
+ exit(0);
+ case -3:
+ argp_state_help(state, state->out_stream, ARGP_HELP_USAGE);
+ exit(0);
+ default:
+ return ARGP_ERR_UNKNOWN;
+ };
+ return 0;
+}
+
+static const struct argp argp = {
+ .options = options,
+ .parser = parse_opt,
+ .doc = doc,
+};
+
+int main(int argc, char **argv)
+{
+ if (argp_parse(&argp, argc, argv, ARGP_NO_HELP | ARGP_NO_EXIT, 0, 0)) {
+ argp_help(&argp, stderr, ARGP_HELP_SHORT_USAGE, PROGRAM_NAME);
+ return -1;
+ }
+ if (!quiet)
+ zbar_set_verbosity(32);
+ else
+ zbar_set_verbosity(0);
+
+ zbar_processor_t *proc = zbar_processor_create(0);
+ assert(proc);
+ if (zbar_processor_init(proc, NULL, 1))
+ return (2);
+
+ zbar_image_t *img = zbar_image_create();
+ zbar_image_set_size(img, 8, 8);
+ zbar_image_set_format(img, fourcc('J', 'P', 'E', 'G'));
+ zbar_image_set_data(img, jpeg, sizeof(jpeg), NULL);
+
+ zbar_image_t *test = zbar_image_convert(img, fourcc('Y', '8', '0', '0'));
+ if (!test)
+ return (2);
+ if (!quiet)
+ printf("converted: %d x %d (%lx) %08lx\n", zbar_image_get_width(test),
+ zbar_image_get_height(test), zbar_image_get_data_length(test),
+ zbar_image_get_format(test));
+
+ if (zbar_process_image(proc, test) < 0)
+ return (3);
+ if (zbar_processor_set_visible(proc, 1))
+ return (4);
+
+ printf("jpeg PASSED.\n");
+ return (0);
+}