summaryrefslogtreecommitdiffstats
path: root/test/ipedec.c
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@kit.edu>2013-07-04 17:09:09 +0200
committerMatthias Vogelgesang <matthias.vogelgesang@kit.edu>2013-07-04 17:09:09 +0200
commit8a56439d340c1a6324d32a1ed0d10d780c710ffa (patch)
treec60601affb64211ffb0a15aa21d4c86c64131679 /test/ipedec.c
parent8c04f3936822c13acdb6711ccd3159395a96ee0b (diff)
downloadlibufodecode-8a56439d340c1a6324d32a1ed0d10d780c710ffa.tar.gz
libufodecode-8a56439d340c1a6324d32a1ed0d10d780c710ffa.tar.bz2
libufodecode-8a56439d340c1a6324d32a1ed0d10d780c710ffa.tar.xz
libufodecode-8a56439d340c1a6324d32a1ed0d10d780c710ffa.zip
Use write function
Diffstat (limited to 'test/ipedec.c')
-rw-r--r--test/ipedec.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/test/ipedec.c b/test/ipedec.c
index f171cc8..a58b51d 100644
--- a/test/ipedec.c
+++ b/test/ipedec.c
@@ -104,6 +104,26 @@ print_meta_data (UfoDecoderMeta *meta)
printf("\n");
}
+static void
+write_raw_file (UfoDecoderMeta *meta,
+ Options *opts,
+ uint16_t *pixels,
+ FILE *fp)
+{
+ size_t n_rows = meta->n_rows;
+
+ if (opts->convert_bayer) {
+ uint8_t *rgb_pixels = malloc (2048 * n_rows * 3);
+
+ ufo_convert_bayer_to_rgb (pixels, rgb_pixels, 2048, n_rows);
+ fwrite (rgb_pixels, sizeof(uint8_t), 2048 * n_rows * 3, fp);
+ free (rgb_pixels);
+ }
+ else {
+ fwrite(pixels, sizeof(uint16_t), 2048 * n_rows, fp);
+ }
+}
+
static int
process_file(const char *filename, Options *opts)
{
@@ -113,7 +133,6 @@ process_file(const char *filename, Options *opts)
char *buffer;
size_t num_bytes;
uint16_t *pixels;
- uint8_t *rgb_pixels;
uint32_t time_stamp, old_time_stamp;
int n_frames;
int error = 0;
@@ -145,17 +164,14 @@ process_file(const char *filename, Options *opts)
}
}
- if (opts->convert_bayer)
- rgb_pixels = malloc (2048 * MAX_ROWS * 3);
-
timer = timer_new ();
- pixels = (uint16_t *) malloc(2048 * MAX_ROWS * sizeof(uint16_t));
+ pixels = (uint16_t *) malloc (2048 * MAX_ROWS * sizeof(uint16_t));
n_frames = 0;
old_time_stamp = 0;
while (error != EIO) {
timer_start (timer);
- error = ufo_decoder_get_next_frame(decoder, &pixels, &meta);
+ error = ufo_decoder_get_next_frame (decoder, &pixels, &meta);
if (meta.n_rows == 0)
meta.n_rows = opts->rows;
@@ -185,28 +201,16 @@ process_file(const char *filename, Options *opts)
if (opts->clear_frame)
memset(pixels, 0, 2048 * meta.n_rows * sizeof(uint16_t));
- if (!opts->dry_run) {
- if (opts->convert_bayer) {
- ufo_convert_bayer_to_rgb (pixels, rgb_pixels, 2048, meta.n_rows);
- fwrite (rgb_pixels, sizeof(uint8_t), 2048 * meta.n_rows * 3, fp);
- }
- else
- fwrite(pixels, sizeof(uint16_t), 2048 * meta.n_rows, fp);
- }
+ if (!opts->dry_run)
+ write_raw_file (&meta, opts, pixels, fp);
}
else if (error != EIO) {
fprintf(stderr, "Failed to decode frame %i\n", n_frames);
if (opts->cont) {
/* Save the frame even though we know it is corrupted */
- if (!opts->dry_run) {
- if (opts->convert_bayer) {
- ufo_convert_bayer_to_rgb (pixels, rgb_pixels, 2048, meta.n_rows);
- fwrite (rgb_pixels, sizeof(uint8_t), 2048 * meta.n_rows * 3, fp);
- }
- else
- fwrite(pixels, sizeof(uint16_t), 2048 * meta.n_rows, fp);
- }
+ if (!opts->dry_run)
+ write_raw_file (&meta, opts, pixels, fp);
}
else
break;
@@ -221,9 +225,6 @@ process_file(const char *filename, Options *opts)
timer_get_seconds (timer) * 1000.0);
}
- if (opts->convert_bayer)
- free (rgb_pixels);
-
free(pixels);
free(buffer);
timer_destroy (timer);