#include <stdlib.h>#include <string.h>#include <assert.h>#include <time.h>#include <iostream>#include <CImg.h>using namespace cimg_library;void read(void *p, int s){while (s) {int r = fread(p, sizeof(unsigned char), s, stdin);p += r;s -= r;}}int catch_ffs(){int i = 0;int x;unsigned char c;unsigned char buffer[4];for (x = 0; x < 4; x++)buffer[x] = 0;while (1) {read(&c, 1);buffer[i % 4] = c;i++;if (buffer[0] == 0xff&& buffer[1] == 0xff&& buffer[2] == 0xff&& buffer[3] == 0xff) {return i;}}return -1;}int main(int argc, char **argv) {char buffer[900];CImg<unsigned char> image(120, 120, 1, 1);CImgDisplay display(image, "omview");fprintf(stderr, "waiting for initial synchronization... ");fflush(stderr);catch_ffs();fprintf(stderr, "done\n");while (!display.is_closed()) {read(buffer, 900);assert(catch_ffs() == 4);cimg_forXY(image, x, y) { image(x, y) = buffer[(y >> 2) * 30 + (x >> 2)] * 4; }image.display(display);fprintf(stderr, "new frame\n");}return 0;}