diff options
Diffstat (limited to 'Demo/sgi/video/svgrab24.c')
-rwxr-xr-x | Demo/sgi/video/svgrab24.c | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/Demo/sgi/video/svgrab24.c b/Demo/sgi/video/svgrab24.c deleted file mode 100755 index 3418b14..0000000 --- a/Demo/sgi/video/svgrab24.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - * svgrab24 - Grab the current video input image into an rgb file. - * - * Jack Jansen, CWI, May 93. - * - * Adapted from grabone.c - */ - -#ident "$Revision$" - -#include <stdio.h> -#include <stdlib.h> -#include <svideo.h> -#include <gl/gl.h> -#include <gl/device.h> -#include <getopt.h> -#include <image.h> - -main(int argc, char *argv[]) -{ - SVhandle V; - svCaptureInfo ci; - boolean debug; - int ch, errflg; - int bufferSize; - long *buffer; - IMAGE *imgfile; - short *r, *g, *b; - int x, y; - char *ProgName = argv[0]; - - debug = FALSE; - ci.format = SV_RGB32_FRAMES; - ci.width = 0; - ci.height = 0; - ci.size = 1; - - argv++; argc--; - if ( argc > 2 && strcmp(argv[0], "-w") == 0) { - ci.width = atoi(argv[1]); - argc -= 2; - argv += 2; - } - if ( argc != 1 ) { - fprintf(stderr, "Usage: %s [-w width] rgbfilename\n", ProgName); - exit(1); - } - - /* Open video device */ - if ((V = svOpenVideo()) == NULL) { - svPerror("open"); - exit(1); - } - - if (svQueryCaptureBufferSize(V, &ci, &bufferSize) < 0) { - svPerror("svQueryCaptureBufferSize"); - exit(1); - } - buffer = malloc(bufferSize); - - if (svCaptureOneFrame(V, ci.format, &ci.width, &ci.height, buffer) < 0) { - svPerror("svCaptureOneFrame"); - exit(1); - } - if (debug) { - printf("captured size: %d by %d\n", ci.width, ci.height); - } - - if ( (imgfile=iopen(argv[0], "w", RLE(1), 3, ci.width, ci.height, 3)) == 0) { - perror(argv[1]); - exit(1); - } - r = (short *)malloc(ci.width*sizeof(short)); - g = (short *)malloc(ci.width*sizeof(short)); - b = (short *)malloc(ci.width*sizeof(short)); - if ( !r || !g || !b ) { - fprintf(stderr, "%s: malloc failed\n", ProgName); - exit(1); - } - for(y=0; y<ci.height; y++) { - for(x=0; x<ci.width; x++) { - unsigned long data = *buffer++; - - r[x] = data & 0xff; - g[x] = (data>>8) & 0xff; - b[x] = (data>>16) & 0xff; - } - if ( putrow(imgfile, r, y, 0) == 0 || - putrow(imgfile, g, y, 1) == 0 || - putrow(imgfile, b, y, 2) == 0) { - fprintf(stderr, "%s: putrow failed\n", ProgName); - exit(1); - } - } - iclose(imgfile); - exit(0); -} |