2004-01-03 Jens Gecius * vgrabbj.conf.5/vgrabbj.1: Added all missing options to the manuals, corrected misspelled options. Certain clarifications. * vgrabbj.c: Added option -X to let daemon mode run in foreground (e.g. not detaching from current terminal) 2003-12-31 Jens Gecius * v_config.c: Changed pointer-update to be correct in any case. Fixed error in archiving functionality. 2003-10-06 Robert van der Meulen * General: Added support for passive ftp. 2003-09-10 Jens Gecius * various Included a patch from Koos van den Hout and Arthur van Leeuwen to enable vgrabbj to flip top to bottom. This enables upside-down mounting, e.g. on a ceiling. * various Included a patch from David Austin to enable vgrabbj to take detailed control of the cams hardware settings (e.g. brightness-adjustment, hue, etc.). This one needs further testing and adjustment to the options setup of previous versions. As of now this version might break your setup. 2003-07-28 Jens Gecius * v_conf.c: Fixed typo in help screen (thanks to Tobias Wolter who filed this bug to DBTS) Fixed bug causing segfault if not all optional libraries are present (thanks to Pascal Brisset for the patch! Sorry it took so long to apply it) 2002-10-15 Jens Gecius * vgrabbj.h: Added option nousemmap needed for certain cams not switchable to palette RGB24 but unable to use mmap'ed memory. * v_options.h: Fixed a small bug for ForcePalette. Improved img_size calculation. 2002-10-14 Jens Gecius * v_config.c: Fixed nasty bug causing boolean commandline options not being parsed correctly. Added switch SwapRL (-R) to mirror the resulting image left-right. 2002-04-12 Jens Gecius * v_config.c: Fixed bug for commandline switches on boolean values (segfault) Fixed possible wrong treatment of empty lines in conf 2002-04-02 Jens Gecius * Final touch up, release 0.9.0 with archive functionallity. 2002-03-29 Jens Gecius * v_config.c: rewrote/enhanced archive handling archivemax/archiveeach to manage archived pictures added. 2002-03-27 Jens Gecius * v_config.c: (after release) Fixed bug in ttf init. Changed internals slightly. * General: Update manuals, uploaded man's to cvs, increased version no. to 0.8.9, release. 2002-03-26 Jens Gecius * vgrabbj.c: Added Archive option to create an archive of images. Warning: no upper limit for archive implemented, yet. This option might fill your harddrive!! Currently works only if archive is on the same filesystem as the temp- output (same restriction for output and tmpout - they have to be on the same filesystem) * v_config.c: Fixed severe bugs in ftp-code: 1. remoteDir was not read from conf 2. if remoteDir not set screwy things might have happened... 2002-02-24 Jens Gecius * v_config.c: Fixed missing explanation of parameter -c on the commandline for the -h commanline parameter. Enhanced manual. 2002-02-18 Jens Gecius * vgrabbj.c: Finished rewrite of conf-parser. (Almost) identical routines are now used for command-line and conf-file. Further information is given in case of wrong options. Cleanup of code (partially), blow-up on some other areas (especially the conf-var has to be cleaned up now...) Well, ongoing progress, short of release 0.8.8 (testing). OpenOnce defaults ot On now (to avoid memory fragmentation and usb-messages in syslog). Use Off only if you need to access the device inbetween vgrabbj taking frames. 2002-02-16 Jens Gecius * v_config.c: Further rewrite of conf-parser (not finished - sigh) Definitions of options and certain detailed definitones moved to structs (former: in code) Timestamp string does not need to be in paranthesis (conf-file) any more (but can - it will be filtered!) 2002-02-12 Jens Gecius * vgrabbj.c: Changed handling of open-device in case of openonce (it is really opened only once now), avoiding lot's of kernel-uhci-msgs on my box. Hope you guys benefit, too. Again, I strongly recommend to use OpenOnce 2002-02-11 Jens Gecius * vgrabbj.c: More split-up of source to make it more readable. Re-organization of mmap (now close to device open to prevent memory fragmentation. If the device is not otherwise needed, I strongly advise to use OpenOnce yes (now default). Changed handling of Timestamp, Font-eninge is loaded/initialized once only at startup and if config is re-read. 2002-02-10 Jens Gecius * v_config.c: Added DaemonSeconds as alternative to Daemon in conf - value given is taken as seconds instead of milliseconds (see conf). * vgrabbj.c: Added some exit routine to mmap'ed capture to avoid endless loops (2). 2002-02-09 Jens Gecius * v_config.c: Added a parameter to discard frames before the actual picture is taken. Might be necessary, if your cam needs a little time for adjustment of the current brightness. 2002-02-08 Jens Gecius * v_config.c: Fixed a #define bug in checkfiles (if you do not have TTF on your system it's relevant, otherwise not) * configure.in: Certain systems seem to have the freetype header (v1) in a different directory than debian does. Added appropriate check. 2002-02-06 Jens Gecius * v_config.c: Closed a memory hole generated by the config-re-read code. Changed the default of SetImageSize in the .conf to On (Off should be the special case for certain cams, not vice versa). 2002-02-05 Jens Gecius * vgrabbj.c: Rearranged the initializing of vgrabbj to accomodate a new function: the conf-file will be re-read if you send a SIGHUP signal to the daemon! Moved more stuff to v_config, which has nothing to do with the actual grabbing. Adjusted the changed commandline parameters in the help output (thanks to Michael) Reorganized memory management (hopefully without memory-leak - let me know if it causes problems - I'm currently trying to run it as long as possible here - unfortunately my usb-drivers are a little irrational... 2002-02-03 Jens Gecius (released 0.8.3) * v_config.c: The usage of a temporary file to be copied to the output file is now switchable. If you don't want it, use the appropriate command- line switch or conf-option. This may impair the use of vgrabbj if used on a webserver (webserver may access the file while vgrabbj writes data). IMPORTANT!! SWITCHED COMMANDLINE PARAMETER!! MAY BREAK YOUR CONFIG!! READ BEFORE USE!! If you use vgrabbj with commandline options instead of the configuration file, beware that the following switches have changed: -w (dont/set windowsize) is no -g -W (image width) is now -w This is due to compliance with POSIX.2 (-W). * vgrabbj.c: Merged several patches (c) Michael Janssen, Debian Package maintainer to streamline the check for files and the video-device. Temporary output file will now be properly unlinked after each use (fixes debian bug #127722). Shutdown of program streamlined. Configuration adjusted - now all file-related arguments are read first and checked once only at the end. This avoids problems with multiple definitions of e.g. the input- device. If defined on the command-line as last argument, only that device is checked. (fixes debian bug #127659). 2001-12-22 Jens Gecius * vgrabbj.c: Various changes for release 0.8.2 (no new features, make everything work). 2001-12-05 Jens Gecius * v_writer.c: Changed back to system() for the call of /bin/cp, but I'm not satisfied with the situation due to the problems associated with system() (see man-page). Have to find a better solution. Added a new value for vconf to have the cmd- line for the copy action handy when needed (performance). 2001-12-04 Jens Gecius * v_writer.c: In case output is set to something different than /dev/stdout (default), the output is written to a temp-file (name: .tmp) and then copied to the final destination . This should fix concurrent access problems (includes associated changes in other source files). * v_ftp.c: Changed function to close ftp-connection and added a sanity-check in an attempt to fix a reported error. Added #defines to enable successful compile if ftp is disabled. * configure.in: Changed error-message in ./configure to a warning message for the libraries ftplib and freetype - fixes longtime problem of not compiling if one of these libs is not present. Added options to configure to intentionally disable timestamp and/or ftp code. Again: NO extensive tests have been performed! 2001-11-12 Jens Gecius = after release * vgrabbj.c Nasty little typos for the new individual imagesize setting and swapped height/width for size svga. * v_writer.c New to the package, this file contains all functions related to the output of the image data Added an output option for ppm (plain linear RGB). You may need to switch R/G (via -S) because vgrabbj can not determine what mode your videodevice uses. (appropriate changes to all other files) * all Removed ftplib.* from package and constructed dependency on the ftplib on your system. If don't have it, ftp is disabled (like ttf, see below) More stringent check for available libraries AND headers. If one of both is not available, timestamp and/or ftp will be disabled. 2001-11-12 Jens Gecius Release of 0.8.0 with ftp-code, config-file, enhanced imagesize (even individual settings), bugfixes. Be aware: no extensive tests (it runs here - without ftp)! 2001-11-11 Jens Gecius * vgrabbj.c: Fixed a bug in png write, leading to corrupt data in vconf and possible segfaults Added xga, sxga, uxga as valid options for image size on command line Added ftp-code from Robert Wessels; be careful I have NOT tested this new part of vgrabbj!! Maybe I switch the ftplib.c someday to ftplib provided by that package Added individual imagesize (-W and -H on commandline); be careful! These values are not checked for valid values! You may damage your hardware with wrong values (and a poor driver) Added openonce to avoid vgrabbj opens and closes the videodevice everytime an image is acquired; this renders the videodevice unuseable for other applications while vgrabbj sits idling in daemon mode. It also does not affect non-daemon mode. Changed handling of parameter -h in case a config file is available. Handling of the config file is as follows: 1. check for -h as first (!) parameter -> show usage 2. parse configfile, if available 3. parse commandline WARNING: the code is not very extensively tested! * v_config.c: Added xga, sxga, uxga as valid options for image size in config file Added ftp-code from Robert Wessels Added individual imagesize settings (see above) Added openonce (see above) * (configure) Various changes to reflect the addition of a config file * AUTHORS, README, TODO etc. Updated due to changes (see above) 2001-07-23 Jens Gecius Release of 0.7.4 without any asm code (should keep everybody happy for porting), use of mmap, etc. See below for details. 2001-07-22 Jens Gecius * vgrabbj.c: Minor Changes, added YUV422 to known routines, because with my Philips cam this one looks identical to YUV422. Reminder: brightness adjust by vgrabbj is OFF by default now and -b switches it, BUT you have to have RGB24 selected as input palette! Because I switched back from the asm-code to pure c-code (portability of the conversion functions), and the conversion from YUV420 is not exactly what it should look like, I use a different approach: do two conversion, which work - at least here at my box. Let me know if something goes wrong, I'll try to fix it then. * ccvt_c.c: Added YUYV (=YUV422?) and YUV420p to the conversion routines (I'm getting there, soon vgrabbj will be portable again). But: YUV420i still gives me odd images... 2001-07-21 Jens Gecius (no release - CVS only) * vgrabbj.c: * Added: Added mmap image grabbing as default, if mmap fails, vgrabbj falls back to read(). Added parameter -F to force a specific palette. But be aware, if it is not one of vgrabbj's supported palettes (RGB32, RGB24, YUYV, YUV420, YUV420P) it will fallback to one of those (if supported by the device). Good to check devices capabilities. * Bugs fixed: Fixed a bug for RGB32-RGB24 conversion (it used to strip 1/4th of the image). * Misc: Brightness CHANGED! Default is now FALSE and -b switches the default. Code cleanup, better checking for v4l device. Buffers are now kept for the time vgrabbj runs. Rearranged code to avoid forward function defs. Put fork'ing into function (away from main()). Switched handling of device setup and image read. Setup (and finding out which palette will work) is now done only at startup. At every read the the palette and imagesize is set (if allowed to), in case some other program changed it (because vgrabbj keeps the device opened only for during read, while vgrabbj sleeps, you can access the dev with any other program). * vgrabbj.h: More code cleanup, put definitions in vgrabbj.h where they belong 2001-07-18 Jens Gecius (no release - CVS only) * vgrabbj.c: Fixed handling of parameter -w, which was kind of ignored. Now it is properly handled and vgrabbj doesn't exit right away if it was set. Update hereto can be found at http://vgrabbj.gecius.de/vgrabbj/windowsize.diff please apply by entering the following command: cd patch -p1 < windowsize.diff (ignore the missing header warning) compile as usual. Now it should work * configure.in: Added certain headers to check for compilation. * Missed to point out that 0.7.x works on i386 only. This is due to the conversion routines, which I only have in asm so far. I hope to find some more complete set in C, soon. 2001-07-14 Jens Gecius (0.7.3) * vgrabbj.c: Finally fixed the memory leak while using timestamp. Implemented a SIGTERM handler (very simple). vgrabbj will always finish the current image (if any) and then exit gracefully. Renamed DEBUG to LOGLEVEL and implemented DEBUGGING, which has to be set manually to use mtrace(). Off by default, of course. Usually, you shouldn't worry about this. 2001-07-12 Jens Gecius (0.7.2) * vgrabbj.c: Fixed missing free() for the temp-buffer. This led to the box running out of memory and hence kill vgrabbj (only daemon mode). Fixed interchanged factors in conv_rgb32_rgb24 leading to a seg-fault. 2001-07-09 Jens Gecius (0.7.1) * vgrabbj.h: Changed default debug/log-level to 4. * vgrabbj.c: Changed error handling. Now there are 6 log-levels (silent to debug) with two types of critical errors resulting in abortion of execution: * critical errors, leading to immediate exit e.g. memory-failure * near critical errors, leading to immediate exit in non-daemon mode (user is available to take care of the problem) and leading NOT to exit in daemon mode. vgrabbj still tries to get the action done and fails only if a maximum of 3600 errors is reached. Inbetween vgrabbj sleeps for a second, so this is roughly a one hour (!) try-period. After this, vgrabbj exits, no matter what (e.g. device access error). I did this mainly because I have only one video- device and didn't want to shut it down while testing. This way, it tries with appropriate sleeps and resets the error-counter after the current run. Perhaps I'll make this errorcounter configurable one day (let me know if you want). The critical error-exits are obeyed, even if you made vgrabbj totally silent. Added video palettes YUYV, YUV420P to the try-palettes. I hope this covers almost all devices out there. 2001-07-08 Jens Gecius (0.7.0 - not very useful, though) * vgrabbj.c: Added convertion routine from YUV 4-2-0-planar and YUYV to RGB24 to accomodate (hopefully) all V4L devices, especially afer recent discussion on linux-kernel list that there (will/is/ should) not be any conversion in kernel space. Only RGB24, RGB32 and YUV420 are tried, if the device is not set to a recognized mode. Added BGR to RGB routine, in case color of output looks odd. Made library ttf optional. If it is not available, the timestamp features are disabled. Major cleanup of code - but still not perfect ;-). * Makefile.am: Added reconf and conversion files to distribution. font.h is now (correctly) font.c. * configure.in: Added config.h initialization and GPL notice. * vgrabbj.h: Added .h file to clean .c file. * other Thanks to Damien, who helped a lot with the cleanup. vgrabbj on irc -> irc.openprojects.net #vgrabbj :-) 2001-06-16 0.6.4 * Fixed a bug regarding picture setting. This caused vgrabbj to pretend it'll work even though the device was not set to the correct RGB24 mode. Result was a 'hanging' vgrabbj process. This should help on several devices reported not to work. Even if vgrabbj is unable to set the device to RGB24 it should at least report this. There will be no switch to avoid this setting because RGB24 is necessary for proper operation. 2001-03-27 0.6.3 * Added parameter -w to disable vgrabbj's setting of the V4L image size. This is needed for certain cams which do not allow programs to set it. They have to be set at module load time. Reported by St0rm and nate - thanks. 2001-03-26 0.6.2 * Fixed a bug which may or may not occur due to uninitialized variables for a system call (VIDIOCSWIN). Now, the current values are read from the device first and taken for the SET-call. 2001-02-11 0.6.1 * Way too many problems with the new autoconf/make dist. I really have to work on quality control here... Sorry folks! 2001-02-10 0.6.0 * More GNU'ification - now using ./ocnfigure to check for required libs and headers. I hope I didn't forget any. * timestamp now widely configurable. Chose the following options: Position (one of upper/lower left/right or center FontSize (between 1 and 100, but only 8-25 makes sense :-) Border (how many pixels should be blended besides the text) Blend (0-100) how much of the original image shall be viewable under the timestamp * also rewrote the code (more to come) to modularize it more. right now there's just to much code in main{}... 2001-01-29 0.5.2 * Updated Address of Free Software Foundation, Inc., in several files. No technical changes. 2001-01-06 0.5.1 * Unfortunately, the timestamper-code was enable by default and there was no chance to stop it without changing the source. Fixed. Drawback: If you want the timestamper enabled, you have to tell vgrabbj on the command-line! 2000-12-16 0.5.0 * And another one: freetype was initialized multiple times, posing the risk of segmentation fault. fixed. Code should be pretty clean now (?) * Changed sort of CHANGES (newest now on top) 2000-12-12 0.4.4 * Thanks to Zsolt I fount a little bug - Freetype font was closed even though it even might not have been open. 2000-09-18 0.4.3a * 0.4.2 only a sleep was inserted to accomodate unloaded modules at that time. This didn't really work, so ensure all modules are loaded BEFORE you start vgrabbj. * 0.4.3a is a REAL alpha. Be prepared that it may mess up your machine - up to total frozen state!! Even though I run this version here on my machine, it may mess up yours! * changed the handling of startup for timestamp. Now the Font-Engine is started during commandline evaluation. * Font-Engine is never shut down via TT_Done_Engine - I only get segmentation faults with that function :-(. But it doesn't really matter: If run in daemon mode, you need the engine anyway, If run standalone, it should be freed when the program terminates... This should solve a bug reported with a totally frozen machine, I hope. * Same applies for "Face_Open" from the included font.c... * Added a lot of simple debug-code. Enable this via Makefile DEBUG=1 (and recompile) 2000-07-05 0.4.1 * added five seconds delay if started as daemon to accomodate time to load up the driver during boot of the machine. This is not really needed if vgrabbj is started after the appropriate driver modules have been loaded or the drivers are compiled into the kernel. Maybe this fixes another bug reported (where no picture-output took place at all). 2000-05-22 0.4.1 * added ability to size image to sqcif, qsif, qcif, sif, cif, vga. Still only rgb24 * removed wrong syslog-reporting in rare condition when not running as daemon 2000-05-02 0.4.0 (finally released 2000-05-11 after 9 days continous run) * Argument check realized, I hope it works but I also KNOW that not every error in the command line is found. * filenames, numeric options are definetly checked for existence and sense, respectively; if a value makes no sense at all (e.g. quality=-1, sleeptime=-1) or a filename/device is not accessible vgrabbj ends with a rc!=0 * realized real daemon mode (fork, child process) * removed option -n (not necessary in daemon mode) 2000-04-30 0.3.4 * Found a missing fclose()... Hope this solves the problem. I returned back to the 0.3.1 source. 2000-04-29 0.3.0 * Implemented PNG output format. * Added timestamp (try it by just saying "-e" on the commandline). This is fully configurable to your system needs (except the timestamp is always in the upper right of the image). Thanks to rasca for the font.c code and the example in w3cam * Fixed a bug in errorhandling while opening input device. It didn't even try to open the input-device again if an error was encountered... * In loop-mode all err/messages are now directed to syslog. You'll get a whole bunch of msg if an error is encountered, but so what... * Increased the usleep time to a quarter second. Gives much less msg to syslog serves my needs better :-) Still missing: argument check 0.3.1 * Added -b to disable vgrabbj's own attempt to adjust the brightness of the picture. Thanks to Ari Pollak 0.3.2 * If you encounter a problem regarding freetype and have a recent lib installed, please change the following: #include to #include (Thanks to Ari Pollak) * Serious Bug regarding the loop-mode again. Because I changed the logic vgrabbj had serious problems opening the device after about 1:30h. I changed the logic back and hope it'll work. (currently test-run at my machine) Therefore, not yet released. 0.3.3 (released) * Still the same problem - after 1.5h access to /dev/video is no longer possible. Now I change the code so /dev/video will be kept open ALL the time vgrabbj is running. I hope this helps... I guess it is/was a big logical bug somewhere inside. /dev/video is open all the time now, this speeds operation a little bit, but on the other hand no other application can use /dev/video while vgrabb is running. The code is a mess right now and I will further investigate the problem. 2000-04-26 0.2.0 (first development release) * OK, redesigned the structure of the source to better accomodate possible failures during loop-running (it shouldn't just shut down while experiencing some problems). It's not optimal because it just keeps trying to do the things - but included a couple of small usleeps() * Added option -s . Get all information about the video-device * Still missing: errorhandler, syslogger, argumentcheck 2000-04-23 0.0.1 First version. Just tested with Philips Vesta Pro Input and output to a predefined jpg file. Never got released... 0.1.0 Finally, I made some enhancements, based on the vidcat utility. Now you can - change the quality - run a forever loop with optional (sleep) between reads - define an output filename (still only jpg) - define an input video stream - get the help screen Be aware, this is still kind of alpha code because, again, I'm not a programmer... First release. 0.1.1 Wow, what a memory leak. If used in loop-mode, you loose about (width*height*3) bytes of memory with each image drawn... To clean this, I had to find another memory related bug...