6
7
#include <sys/time.h>
8
9
#include <ufodecode.h>
11
static const int CLEAR_FRAME = 1;
13
int read_raw_file(const char *filename, char **buffer, size_t *length)
12
static int read_raw_file(const char *filename, char **buffer, size_t *length)
15
14
FILE *fp = fopen(filename, "rb");
39
int main(int argc, char const* argv[])
37
static void process_file(const char *filename, int rows, int clear_frame)
42
fprintf(stderr, "Usage: ipedec <filename> <number of lines per frame>\n");
46
39
char *buffer = NULL;
47
40
size_t num_bytes = 0;
48
int error = read_raw_file(argv[1], &buffer, &num_bytes);
50
printf("file reading error: %s\n", strerror(error));
54
const int rows = argc > 2 ? atoi(argv[2]) : -1;
56
ufo_decoder decoder = ufo_decoder_new(rows, 2048, (uint32_t *) buffer, num_bytes);
58
42
uint16_t *pixels = (uint16_t *) malloc(2048 * 1088 * sizeof(uint16_t));
59
43
uint32_t num_rows, frame_number, time_stamp;
60
44
int num_frames = 0;
61
45
struct timeval start, end;
62
46
long seconds = 0L, useconds = 0L;
47
int error = read_raw_file(filename, &buffer, &num_bytes);
50
fprintf(stderr, "Error processing %s: %s\n", filename, strerror(error));
54
ufo_decoder decoder = ufo_decoder_new(rows, 2048, (uint32_t *) buffer, num_bytes);
65
fprintf(stderr, "Failed to initialize decoder\n");
57
fprintf(stderr, "Failed to initialize decoder\n");
69
FILE *fp = fopen("test.raw", "wb");
61
char output_name[256];
62
snprintf(output_name, 256, "%s.raw", filename);
63
FILE *fp = fopen(output_name, "wb");
71
fprintf(stderr, "Failed to open file for writting\n");
66
fprintf(stderr, "Failed to open file for writing\n");
72
memset(pixels, 0, 2048 * 1088 * sizeof(uint16_t));
76
74
gettimeofday(&start, NULL);
78
memset(pixels, 0, 2048 * 1088 * sizeof(uint16_t));
79
75
err = ufo_decoder_get_next_frame(decoder, &pixels, &num_rows, &frame_number, &time_stamp, NULL);
80
76
gettimeofday(&end, NULL);
95
92
ufo_decoder_free(decoder);
96
int main(int argc, char const* argv[])
98
int getopt_ret, index;
100
static struct option long_options[] = {
101
{ "num-rows", required_argument, 0, 'r' },
102
{ "clear-frame", no_argument, 0, 'c' },
103
{ "help", no_argument, 0, '?' },
110
while ((getopt_ret = getopt_long(argc, (char *const *) argv, "r:c:?", long_options, &index)) != -1) {
111
switch (getopt_ret) {
123
while (optind < argc)
124
process_file(argv[optind++], rows, clear_frame);