diff options
-rw-r--r-- | v4l2-apps/Make.rules | 3 | ||||
-rw-r--r-- | v4l2-apps/lib/Makefile | 33 | ||||
-rw-r--r-- | v4l2-apps/lib/frequencies.c (renamed from v4l2-apps/util/qv4l2/frequencies.c) | 2 | ||||
-rw-r--r-- | v4l2-apps/lib/v4l2.h (renamed from v4l2-apps/util/qv4l2/frequencies.h) | 0 | ||||
-rw-r--r-- | v4l2-apps/test/Makefile | 31 | ||||
-rw-r--r-- | v4l2-apps/test/ioctl-test.c | 5 | ||||
-rw-r--r-- | v4l2-apps/test/sliced-vbi-detect.c | 2 | ||||
-rw-r--r-- | v4l2-apps/test/sliced-vbi-test.c | 2 | ||||
-rw-r--r-- | v4l2-apps/test/v4lgrab.c | 212 | ||||
-rw-r--r-- | v4l2-apps/util/Makefile | 22 | ||||
-rw-r--r-- | v4l2-apps/util/qv4l2/qv4l2.cpp | 2 | ||||
-rw-r--r-- | v4l2-apps/util/qv4l2/qv4l2.pro | 5 |
12 files changed, 190 insertions, 129 deletions
diff --git a/v4l2-apps/Make.rules b/v4l2-apps/Make.rules index b35772682..0b6a76e98 100644 --- a/v4l2-apps/Make.rules +++ b/v4l2-apps/Make.rules @@ -8,7 +8,7 @@ export CC ifeq ($(origin CFLAGS),undefined) CFLAGS := -g -O1 endif -CFLAGS += -Wall -W -Wshadow -Wpointer-arith -Wstrict-prototypes +CFLAGS += -Wall -W -Wno-unused -Wshadow -Wpointer-arith -Wstrict-prototypes CFLAGS += -fPIC export CFLAGS @@ -42,6 +42,7 @@ else endif clean:: + -rm -f core core.[0123456789]* *~ *.o rm -f *.d -include *.d ...dummy diff --git a/v4l2-apps/lib/Makefile b/v4l2-apps/lib/Makefile new file mode 100644 index 000000000..8143370d7 --- /dev/null +++ b/v4l2-apps/lib/Makefile @@ -0,0 +1,33 @@ +# Makefile for linuxtv.org v4l2-apps/lib + +CPPFLAGS += -I../../include -I.. + +includes = v4l2.h + +objects = frequencies.o + +sharedlib = libv4l2.so +staticlib = libv4l2.a + +ifeq ($(prefix),) +prefix = /usr +endif + +.PHONY: all clean install + +all: $(sharedlib) $(staticlib) + +$(sharedlib): $(objects) + +$(staticlib): $(objects) + +clean:: + rm -f $(objects) $(sharedlib) $(staticlib) + +install: + mkdir -p $(prefix)/include + cp $(includes) $(prefix)/include + mkdir -p $(prefix)/lib + cp $(sharedlib) $(staticlib) $(prefix)/lib + +include ../Make.rules diff --git a/v4l2-apps/util/qv4l2/frequencies.c b/v4l2-apps/lib/frequencies.c index e30c55303..a92dce733 100644 --- a/v4l2-apps/util/qv4l2/frequencies.c +++ b/v4l2-apps/lib/frequencies.c @@ -2,7 +2,7 @@ #include <sys/time.h> #include <pthread.h> -#include "frequencies.h" +#include "v4l2.h" /* --------------------------------------------------------------------- */ diff --git a/v4l2-apps/util/qv4l2/frequencies.h b/v4l2-apps/lib/v4l2.h index e6044e5e1..e6044e5e1 100644 --- a/v4l2-apps/util/qv4l2/frequencies.h +++ b/v4l2-apps/lib/v4l2.h diff --git a/v4l2-apps/test/Makefile b/v4l2-apps/test/Makefile index 30c3edff6..b6a83b2b3 100644 --- a/v4l2-apps/test/Makefile +++ b/v4l2-apps/test/Makefile @@ -1,19 +1,20 @@ -FILES = ioctl-test sliced-vbi-test sliced-vbi-detect vbi-test v4lgrab v4l2-ctl -CC = gcc -LIBS = -CFLAGS = -O3 -Wall -fomit-frame-pointer -funroll-loops -g -I ../linux/include -CXXFLAGS = $(CFLAGS) -LDFLAGS = +# Makefile for linuxtv.org v4l2-apps/test -all: $(FILES) qv4l2 +CPPFLAGS += -I../../linux/include -clean: - -rm -f core core.[0123456789]* *~ *.o $(FILES) - -if [ -f qv4l2/Makefile ]; then make -C qv4l2 $@; fi - -rm -f qv4l2/qv4l2 qv4l2/Makefile +binaries = ioctl-test \ + sliced-vbi-test \ + sliced-vbi-detect \ + vbi-test \ + v4lgrab -qv4l2: - if [ ! -f qv4l2/Makefile ]; then (cd qv4l2; qmake); fi - make -C qv4l2 +.PHONY: all clean install -.PHONY: qv4l2 +all: $(binaries) + +clean:: + rm -f $(binaries) + +install: + +include ../Make.rules diff --git a/v4l2-apps/test/ioctl-test.c b/v4l2-apps/test/ioctl-test.c index 4b47cd9e7..61659dc78 100644 --- a/v4l2-apps/test/ioctl-test.c +++ b/v4l2-apps/test/ioctl-test.c @@ -36,7 +36,7 @@ #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> -#include "../linux/include/linux/videodev.h" +#include "linux/videodev.h" #ifdef INTERNAL typedef __u8 u8; @@ -201,7 +201,8 @@ int ioctls[] = { /********************************************************************/ int main (void) { - int fd=0, ret=0,i; + int fd=0, ret=0; + unsigned i; char *device="/dev/video0"; union v4l_parms p; diff --git a/v4l2-apps/test/sliced-vbi-detect.c b/v4l2-apps/test/sliced-vbi-detect.c index 22c9c2461..f6d8da01f 100644 --- a/v4l2-apps/test/sliced-vbi-detect.c +++ b/v4l2-apps/test/sliced-vbi-detect.c @@ -49,7 +49,7 @@ static void detect(int fh, struct v4l2_sliced_vbi_format *fmt) for (cnt = 0; cnt < 5; cnt++) { int size = read(fh, buf, fmt->io_size); - int i; + unsigned i; if (size <= 0) { printf("size = %d\n", size); diff --git a/v4l2-apps/test/sliced-vbi-test.c b/v4l2-apps/test/sliced-vbi-test.c index 3b4a7fc8f..c8877de30 100644 --- a/v4l2-apps/test/sliced-vbi-test.c +++ b/v4l2-apps/test/sliced-vbi-test.c @@ -455,7 +455,7 @@ int main(int argc, char **argv) buf = malloc(fmt.fmt.sliced.io_size); for (;;) { int size = read(fh, buf, fmt.fmt.sliced.io_size); - int i; + unsigned i; if (size <= 0) break; diff --git a/v4l2-apps/test/v4lgrab.c b/v4l2-apps/test/v4lgrab.c index 079b62848..c8d433c1d 100644 --- a/v4l2-apps/test/v4lgrab.c +++ b/v4l2-apps/test/v4lgrab.c @@ -43,7 +43,7 @@ \ case 16: \ (r) = (g) = (b) = \ - *((unsigned short *) buf); \ + *((unsigned short *) buf); \ buf += 2; \ break; \ } \ @@ -80,113 +80,115 @@ } \ } -int get_brightness_adj(unsigned char *image, long size, int *brightness) { - long i, tot = 0; - for (i=0;i<size*3;i++) - tot += image[i]; - *brightness = (128 - tot/(size*3))/3; - return !((tot/(size*3)) >= 126 && (tot/(size*3)) <= 130); +int get_brightness_adj(unsigned char *image, long size, int *brightness) +{ + long i, tot = 0; + for (i=0;i<size*3;i++) + tot += image[i]; + *brightness = (128 - tot/(size*3))/3; + return !((tot/(size*3)) >= 126 && (tot/(size*3)) <= 130); } -int main(int argc, char ** argv) +int main(int argc, char **argv) { - int fd = open(FILE, O_RDONLY), f; - struct video_capability cap; - struct video_window win; - struct video_picture vpic; - - unsigned char *buffer, *src; - int bpp = 24, r, g, b; - unsigned int i, src_depth; - - if (fd < 0) { - perror(FILE); - exit(1); - } - - if (ioctl(fd, VIDIOCGCAP, &cap) < 0) { - perror("VIDIOGCAP"); - fprintf(stderr, "(" FILE " not a video4linux device?)\n"); - close(fd); - exit(1); - } - - if (ioctl(fd, VIDIOCGWIN, &win) < 0) { - perror("VIDIOCGWIN"); - close(fd); - exit(1); - } - - if (ioctl(fd, VIDIOCGPICT, &vpic) < 0) { - perror("VIDIOCGPICT"); - close(fd); - exit(1); - } - - if (cap.type & VID_TYPE_MONOCHROME) { - vpic.depth=8; - vpic.palette=VIDEO_PALETTE_GREY; /* 8bit grey */ - if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { - vpic.depth=6; - if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { - vpic.depth=4; - if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { - fprintf(stderr, "Unable to find a supported capture format.\n"); - close(fd); - exit(1); + int fd = open(FILE, O_RDONLY), f; + struct video_capability cap; + struct video_window win; + struct video_picture vpic; + + unsigned char *buffer, *src; + int bpp = 24, r, g, b; + unsigned int i, src_depth; + + if (fd < 0) { + perror(FILE); + exit(1); + } + + if (ioctl(fd, VIDIOCGCAP, &cap) < 0) { + perror("VIDIOGCAP"); + fprintf(stderr, "(" FILE " not a video4linux device?)\n"); + close(fd); + exit(1); + } + + if (ioctl(fd, VIDIOCGWIN, &win) < 0) { + perror("VIDIOCGWIN"); + close(fd); + exit(1); + } + + if (ioctl(fd, VIDIOCGPICT, &vpic) < 0) { + perror("VIDIOCGPICT"); + close(fd); + exit(1); } - } - } - } else { - vpic.depth=24; - vpic.palette=VIDEO_PALETTE_RGB24; - - if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { - vpic.palette=VIDEO_PALETTE_RGB565; - vpic.depth=16; - - if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { - vpic.palette=VIDEO_PALETTE_RGB555; - vpic.depth=15; - - if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { - fprintf(stderr, "Unable to find a supported capture format.\n"); - return -1; + + if (cap.type & VID_TYPE_MONOCHROME) { + vpic.depth=8; + vpic.palette=VIDEO_PALETTE_GREY; /* 8bit grey */ + if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { + vpic.depth=6; + if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { + vpic.depth=4; + if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { + fprintf(stderr, "Unable to find a supported capture format.\n"); + close(fd); + exit(1); + } + } + } + } + else { + vpic.depth=24; + vpic.palette=VIDEO_PALETTE_RGB24; + + if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { + vpic.palette=VIDEO_PALETTE_RGB565; + vpic.depth=16; + + if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { + vpic.palette=VIDEO_PALETTE_RGB555; + vpic.depth=15; + + if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { + fprintf(stderr, "Unable to find a supported capture format.\n"); + return -1; + } + } + } + } + + buffer = malloc(win.width * win.height * bpp); + if (!buffer) { + fprintf(stderr, "Out of memory.\n"); + exit(1); } - } - } - } - - buffer = malloc(win.width * win.height * bpp); - if (!buffer) { - fprintf(stderr, "Out of memory.\n"); - exit(1); - } - - do { - int newbright; - read(fd, buffer, win.width * win.height * bpp); - f = get_brightness_adj(buffer, win.width * win.height, &newbright); - if (f) { - vpic.brightness += (newbright << 8); - if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { - perror("VIDIOSPICT"); - break; - } - } - } while (f); - - fprintf(stdout, "P6\n%d %d 255\n", win.width, win.height); - - src = buffer; - - for (i = 0; i < win.width * win.height; i++) { - READ_VIDEO_PIXEL(src, vpic.palette, src_depth, r, g, b); - fputc(r>>8, stdout); - fputc(g>>8, stdout); - fputc(b>>8, stdout); - } - - close(fd); - return 0; + + do { + int newbright; + read(fd, buffer, win.width * win.height * bpp); + f = get_brightness_adj(buffer, win.width * win.height, &newbright); + if (f) { + vpic.brightness += (newbright << 8); + if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { + perror("VIDIOSPICT"); + break; + } + } + } while (f); + + fprintf(stdout, "P6\n%d %d 255\n", win.width, win.height); + + src = buffer; + + for (i = 0; i < win.width * win.height; i++) { + READ_VIDEO_PIXEL(src, vpic.palette, src_depth, r, g, b); + fputc(r>>8, stdout); + fputc(g>>8, stdout); + fputc(b>>8, stdout); + } + + close(fd); + return 0; } diff --git a/v4l2-apps/util/Makefile b/v4l2-apps/util/Makefile new file mode 100644 index 000000000..8555ef5b6 --- /dev/null +++ b/v4l2-apps/util/Makefile @@ -0,0 +1,22 @@ +# Makefile for linuxtv.org v4l2-apps/util + +CPPFLAGS += -I../../linux/include + +binaries = v4l2-ctl + +.PHONY: all clean install qv4l2 + +all: $(binaries) qv4l2 + +clean:: + rm -f $(binaries) + -if [ -f qv4l2/Makefile ]; then make -C qv4l2 $@; fi + -rm -f qv4l2/qv4l2 qv4l2/Makefile + +qv4l2: + if [ ! -f qv4l2/Makefile ]; then (cd qv4l2; qmake); fi + make -C qv4l2 + +install: + +include ../Make.rules diff --git a/v4l2-apps/util/qv4l2/qv4l2.cpp b/v4l2-apps/util/qv4l2/qv4l2.cpp index a4c675d48..18572e699 100644 --- a/v4l2-apps/util/qv4l2/qv4l2.cpp +++ b/v4l2-apps/util/qv4l2/qv4l2.cpp @@ -1,6 +1,6 @@ #include "qv4l2.h" -#include "frequencies.h" +#include "v4l2.h" #include <qimage.h> #include <qpixmap.h> diff --git a/v4l2-apps/util/qv4l2/qv4l2.pro b/v4l2-apps/util/qv4l2/qv4l2.pro index cfa608ca2..d9b5162aa 100644 --- a/v4l2-apps/util/qv4l2/qv4l2.pro +++ b/v4l2-apps/util/qv4l2/qv4l2.pro @@ -3,8 +3,9 @@ ###################################################################### TEMPLATE = app -INCLUDEPATH += . ../../linux/include +INCLUDEPATH += . ../../../linux/include ../../lib # Input HEADERS += qv4l2.h -SOURCES += qv4l2.cpp frequencies.c +SOURCES += qv4l2.cpp +LIBS += -lv4l2 -L../../lib |