📄 readme.stv680
字号:
February 1, 2002. Version 0.25 of the STV0680 webcam driver.* Ver 0.25. Fixed a bug in checking the allowed sizes versus supported modes. Driver was trying to set to size not supported in that mode. The fix allows QVGA cameras to work with gnomemeeting, which wants QCIF. Also fixed typo in proc_stv680_destroy, thanks to Reinhard Max. Update for MOD_COUNT for 2.4 series from Oliver Neukum.* Ver 0.24. Several small bug fixes: webcam no longer crashes after two frames, a swapRGB override switch has been added, the green line around the frame is no longer there, and the brightness does not revert to default when changing sizes.* The driver is now in the kernel code (2.4.17 and above). This brings the tarball version into sync with that, except for two items which are only in kernels 2.4.12 (?) and above. These are the module_license and the FILL_BULK.. macro, which is now fill_bulk.. inline. Also there is a fix for the problem with webcam crashing after two pictures. The shapen filter was taken out, for various reasons.* I have included the gamma correction-white balance filter from pencam (it is set for incandescent light) and the sharpen filter, set to a default value of 66%. This may make the images a little grainy, but they are much sharper. The sharpen_percent value is defined at the beginning of stv680.c and can be reduced if you feel that it is making the images look grainy. The filter type can also be changed, but you have to set it in the values.c program, compile and run it to generate the values, and paste them into stv680.h. The top of the values.c files tells you how. * I have made some changes in the way the camera is initialized that should make the driver more stable. If you have debug set to 2, you should see fewer "STV: Lost data in camera transfer" messages, and fewer usb bulk transfer timeouts. * The driver should automatically detect whether swapRGB needs to be set. You shoyld not have to use that option when you load the driver. * I have implimented a simple brightness function, that should work with the brightness control of the application. I have done nothing with hue, contrast, or color. These must be handled in software and I want to get the driver more stable before working on these functions. Several people have sent me code for dealing with color balance but I had some trouble implimenting the code, so I have skipped that for the time being. * You should be able to change the picture size to half and back again. I believe the CIF should work (if your camera supports it), but have not tested this setting yet. *********************************************************** Special thanks to Steve Miller and STMicrolectronics, for providing me with information about the usb commands, and especially to Steve for his encouragement while I was struggling to write the driver.***********************************************************Some notes on the compiling, installing, using the stv680 driver:* You need to be root to compile, load and unload the module.* Make: just do "make". You should have a recent 2.4 kernel; I've been using Mandrake 2.4.8-26mdk. I was also able to compile and run the driver on a stock Mandrake 8.0, kernel 2.4.3, but I had to fix a few things. The only one that might be of concern to you is the "#define KERNEL_VER 243" near the top of stv680.c. I have commented it out; if you get a compile error about too many parameters in video_register_device, uncomment the #define KERNEL_VER 243 line. I would recommend you upgrade to a more recent kernel; the usb system has changed a lot from 2.4.3 to 2.4.7 or .8, and is more stable now. I got a lot of errors when I tried to compile for a 2.2.17 kernel, and I don't think I will try to backport the driver to a 2.2 kernel. The video system also changed a lot between 2.2 and 2.4.* Early on, I had some problems with the usb-uhci controller. The problems were mainly kernel opps or usb bulk message timeouts. I did not have these problems with an ohci controller, but I also changed the software quite a bit, and I have not had these problems for some time. If you encounter them, check whether you have an ohci or uhci controller (look at the output of lsmod), and DON'T try to load the driver again. In extreme cases it can cause system corruption. Email me with the details. * Install: "make install" should work. I normally load the module from the current directory. You will need to "modprobe usbvideo" first. Then "insmod ./stv680.o". I have been running a script when I test the driver with apps, such as "stvtest"; this loads the driver, runs xawtv with debug enables (xawtc -noxv debug 2 2>| stv.log), and then rmmods the driver.*************************** NOTE ******************************** * xawtv seems to see the video output as BGR instead of RGB. Gqcam, on the other hand, does see the output as RGB. When the output and the application do not agree on the format, the image will be dim and have a blue tint. I have made a parameter, swapRGB, to handle this. It normally defaults to 0 (OFF), so gqcam is happy. If you are running xawtv or some other app in which the image appears dim and bluish, try loading the driver with swapRGB=1 ("insmod ./stv680.o swapRGB=1"). Also, xawtv apparently uses a transfer method called mmap which gives a higher frame rate (hence smoother motion) than gqcam, which uses the standard read(). Try setting the frame rate to max for gqcam with the -F option (see gqcam -h). Of course, video frame rates also depend upon your CPU speed. Video is pretty smooth with an 800MHz Duron, less so with a 400MHz K6-3. I also have to use the option "-noxv" with xawtv on my system.******************************************************************* * There is an interface to the /proc/video device. When the driver is loaded and an application requests video data, you should find that /proc/video/stv/videox exits, where x is 0, 1, .. (usually 0). If you type "more /proc/video/stv680/videox" you will get information on whether the driver is streaming, how many frames have been transferred or lost, etc. * About the image sizes: my camera (Nisius Quickpix2) supports both VGA (640x480), and QVGA (320x240). According to the documentation I have seen, the STV0680 and the VV6500 sensor can support CIF (352x288). My camera apparently does not support CIF, as attempts to set the mode to CIF failed and the camera software reports it as not supported. Nevertheless, I think I have seen some cameras baed on the STV0680 that do support CIF. I have therefore set the driver to try this mode first. If that fails, it falls back to QVGA. I have not tried VGA; for one thing, the frame rate would be about 3 frames/sec, and I would have to change the memory allocation of a number of buffers, using the slower vmalloc instead of kmalloc. I have been unable to test the CIF mode, but I believe it should work. The dmesg output will tell you the modes supported and the mode finally settled on. The original mode the camera was in should be restored when the driver exits. Using the application to resize the image should work; if your video mode is QVGA, sizes 320x240 and 160x120 should be available if the application suppports it (for CIF, the sizes are 352x288 and 176x144). **************************** NOTE ********************************** All images stored in the camera are overwritten when video streaming starts. That is a function of the hardware and there is nothing I can do about it, except to automatically save the images to disk (but where? using what name? and writing to disk from kernel space is not easy). If you want to save pictures already in the camera, do it using the pencam program before you load the driver and start a video application. *********************************************************************** There are some pretty rough spots yet. I would plug the camera in first, then load the driver. Unload the driver before unplugging the camera. Information and error messages can be read with the dmesg command, or in /var/log/messages or /var/log/syslog. I am have implimented a debug=x option. 0 is the default; a few message are printed (in dmesg or the logs). "debug=1" give more messages, and "debug=2" gives even more. Any condition which causes the driver to quit (such as being unable to allocate memory for a buffer) should print an error message regardless of the debug value. Sometimes an application seems to hang; wait a few minutes and it usually starts. If it doesn't, kill it and unload and then reload the driver. DO NOT unplug the camera while it is streaming video (look at the LCD display on the back; the segments counter-rotate when streaming video). Unplugging the camera while it is streaming video will probably hang your system, and during the subsequent reboot and system check you risk data loss and/or file system corruption. As usual, there are no guarantees or warranties, implied or otherwise, when using this driver. If you download, compile and run it, the risk is yours.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -