| blind-next-frame.c - blind - suckless command-line video editing utility | |
| git clone git://git.suckless.org/blind | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| blind-next-frame.c (1158B) | |
| --- | |
| 1 /* See LICENSE file for copyright and license details. */ | |
| 2 #include "common.h" | |
| 3 | |
| 4 NUSAGE(2, "[-f frames] width height pixel-format ...") | |
| 5 | |
| 6 int | |
| 7 main(int argc, char *argv[]) | |
| 8 { | |
| 9 struct stream stream = { .frames = 1, .fd = STDIN_FILENO, .file … | |
| 10 size_t n; | |
| 11 int i; | |
| 12 char *p; | |
| 13 | |
| 14 ARGBEGIN { | |
| 15 case 'f': | |
| 16 stream.frames = entozu_flag(2, 'f', UARGF(), 1, SIZE_MAX… | |
| 17 break; | |
| 18 default: | |
| 19 usage(); | |
| 20 } ARGEND; | |
| 21 | |
| 22 if (argc < 3) | |
| 23 usage(); | |
| 24 | |
| 25 stream.pixfmt[0] = '\0'; | |
| 26 stream.width = entozu_arg(2, "the width", argv[0], 1, SIZE_MAX… | |
| 27 stream.height = entozu_arg(2, "the height", argv[1], 1, SIZE_MAX… | |
| 28 argv += 2, argc -= 2; | |
| 29 | |
| 30 n = (size_t)argc - 1; | |
| 31 for (i = 0; i < argc; i++) | |
| 32 n += strlen(argv[i]); | |
| 33 if (n < sizeof(stream.pixfmt)) { | |
| 34 p = stpcpy(stream.pixfmt, argv[0]); | |
| 35 for (i = 1; i < argc; i++) { | |
| 36 *p++ = ' '; | |
| 37 p = stpcpy(p, argv[i]); | |
| 38 } | |
| 39 } | |
| 40 enset_pixel_format(2, &stream, NULL); | |
| 41 | |
| 42 fprint_stream_head(stdout, &stream); | |
| 43 enfflush(2, stdout, "<stdout>"); | |
| 44 | |
| 45 n = ensend_frames(2, &stream, STDOUT_FILENO, stream.frames, "<st… | |
| 46 if (!n) | |
| 47 return 1; | |
| 48 else if (n < stream.frames) | |
| 49 enprintf(2, "%s: is shorter than expected\n", stream.fil… | |
| 50 return 0; | |
| 51 } |