#include #include #include #include "video_decode.h" static int64_t frame_average(struct video_frame *frame) { int64_t average = 0; uint8_t *row = frame->data; uint8_t *col = NULL; for (int y = 0; y < frame->height; ++y) { col = row; for (int x = 0; x < frame->width; ++x) { average += *col; col++; } row += frame->stride; } return average / (frame->width * frame->height); } int main(int argc, char **argv) { struct video_decode *vd; struct video_frame *frame; int ret; int64_t timestamp = 0; if (argc < 2) return 1; if (argc == 3 && strtol(argv[2], NULL, 10) > 0) timestamp = strtol(argv[2], NULL, 10); ret = video_decode_init(&vd, argv[1], timestamp); if (ret < 0) return -ret; while (video_decode_get_frame(vd, &frame) == 0) { printf("%ld\n", frame_average(frame)); video_decode_free_frame(&frame); } // pgm_save(frame->data, frame->stride, frame->width, frame->height, // argv[2]); video_decode_uninit(&vd); }