10
int read_raw_file(const char *filename, char **buffer, size_t *length)
12
FILE *fp = fopen(filename, "rb");
16
fseek(fp, 0, SEEK_END);
20
*buffer = (char *) malloc(*length);
21
if (*buffer == NULL) {
26
size_t buffer_length = fread(*buffer, 1, *length, fp);
28
if (buffer_length != *length) {
36
int main(int argc, char const* argv[])
39
fprintf(stderr, "Usage: ipedec <filename> <number of lines per frame>\n");
45
if (read_raw_file(argv[1], &buffer, &num_bytes))
48
const int rows = atoi(argv[2]);
50
ipe_decoder decoder = ipe_decoder_new(rows, (uint32_t *) buffer, num_bytes);
52
uint16_t *pixels = (uint16_t *) malloc(2048 * rows * sizeof(uint16_t));
53
uint32_t frame_number, time_stamp;
55
struct timeval start, end;
56
long seconds = 0L, useconds = 0L;
58
/* FILE *fp = fopen("test.raw", "wb"); */
61
gettimeofday(&start, NULL);
62
err = ipe_decoder_get_next_frame(decoder, &pixels, &frame_number, &time_stamp);
63
gettimeofday(&end, NULL);
67
seconds += end.tv_sec - start.tv_sec;
68
useconds += end.tv_usec - start.tv_usec;
69
/* fwrite(pixels, sizeof(uint16_t), 2048 * 1088, fp); */
74
float mtime = seconds * 1000.0 + useconds / 1000.0;
75
printf("Decoded %i frames in %.5fms\n", num_frames, mtime);
78
ipe_decoder_free(decoder);