#include #include #include #include "video_decode.h" static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize, char *filename) { FILE *f; int i; f = fopen(filename, "w"); fprintf(f, "P5\n%d %d\n%d\n", xsize, ysize, 255); for (i=0; i < ysize; i++) fwrite(buf + i * wrap, 1, xsize, f); fclose(f); } int main(int argc, char **argv) { struct video_decode *vd; struct video_frame *frame = NULL; int ret; int64_t timestamp = 0; if (argc < 3) return 1; if (argc == 4 && strtol(argv[3], NULL, 10) > 0) timestamp = strtol(argv[3], NULL, 10); ret = video_decode_init(&vd, argv[1], timestamp); if (ret < 0) return -ret; ret = video_decode_get_frame(vd, &frame); if (ret < 1) return -ret + 1; pgm_save(frame->data, frame->stride, frame->width, frame->height, argv[2]); video_decode_free_frame(&frame); video_decode_uninit(&vd); }