Showing preview only (2,020K chars total). Download the full file or copy to clipboard to get everything.
Repository: sackmotion/motion
Branch: master
Commit: ad7e243fcaee
Files: 82
Total size: 1.9 MB
Directory structure:
gitextract_r2owztvo/
├── .gitignore
├── CHANGELOG
├── CODE_STANDARD
├── COPYING
├── CREDITS
├── FAQ
├── INSTALL
├── Makefile.in
├── README
├── README.FreeBSD
├── README.MacOSX
├── README.axis_2100
├── alg.c
├── alg.h
├── commit-version.sh
├── conf.c
├── conf.h
├── config.h.in
├── configure
├── configure.in
├── draw.c
├── event.c
├── event.h
├── ffmpeg-0.4.8-macosx.patch
├── ffmpeg.c
├── ffmpeg.h
├── git-commit-version.sh
├── jpegutils.c
├── jpegutils.h
├── logger.c
├── logger.h
├── md5.c
├── md5.h
├── mmx.h
├── motion-dist.conf.in
├── motion.1
├── motion.c
├── motion.h
├── motion.init-Debian.in
├── motion.init-Fedora.in
├── motion.init-FreeBSD.sh.in
├── motion.spec.in
├── motion_guide.html
├── netcam.c
├── netcam.h
├── netcam_ftp.c
├── netcam_ftp.h
├── netcam_jpeg.c
├── netcam_rtsp.c
├── netcam_rtsp.h
├── netcam_wget.c
├── netcam_wget.h
├── picture.c
├── picture.h
├── pwc-ioctl.h
├── pwc-ioctl.h-10.0.10
├── pwc-ioctl.h-10.0.5
├── pwc-ioctl.h-pwc8.0
├── pwc-ioctl.h-pwc9.0.1
├── rotate.c
├── rotate.h
├── sdl.c
├── sdl.h
├── stream.c
├── stream.h
├── thread1.conf.in
├── thread2.conf.in
├── thread3.conf.in
├── thread4.conf.in
├── track.c
├── track.h
├── version.sh
├── video.c
├── video.h
├── video2.c
├── video_common.c
├── video_freebsd.c
├── video_freebsd.h
├── vloopback_motion.c
├── vloopback_motion.h
├── webhttpd.c
└── webhttpd.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.log
.svn/
*.o
================================================
FILE: CHANGELOG
================================================
SVN trunk Summary of Changes
Features
* Insert Blanking frames http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x12x16x132522 (Dag Erlandsson)
* IPV6 for http-control and webcam stream not netcam yet http://www.lavrsen.dk/twiki/bin/view/Motion/IPv6
(Jeroen Massar & Angel Carpintero)
* Experimental approach for MJPEG streams (Motion JPEG) for network cameras
http://www.lavrsen.dk/twiki/bin/view/Motion/LinksysWVC200SupportPatch ( ... )
* Add draw a RED box around the movement as default (Joerg Weber)
* Add write/read nonblock functions in webhttpd( timeout on read/write). (Angel Carpintero)
* More changes in option names from http://www.lavrsen.dk/twiki/bin/view/Motion/IntuitiveOptionNamesDiscussion
(Angel Carpintero)
* motion_locate new parameter names : red , center , redcross instead of only on, off. (Angel Carpintero)
* External pipe to allow external video encoders
http://www.lavrsen.dk/twiki/bin/view/Motion/DarkwindHackeronMotionPatching (Bill Payne, Angel Carpintero)
* Split locate_motion into separate 'mode' and 'style' option to allow all
possible combinations. (Joerg Weber)
* Implement 'gapless' event mode to allow for recording of movies without 'holes'. (Joerg Weber)
* Limit detection rate to 3fps at framerates above 5fps, to reduce CPU load. (Joerg Weber)
* Fix warning for syslog() , Added support for some new bayer palettes introduced in kernel 2.6.27.
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2008x10x15x130110
Increased buffer in ffmpeg to allow encoding at 1600x1200 (Angel Carpintero)
* Sqlite3 support http://www.lavrsen.dk/twiki/bin/view/Motion/SQLite3Patch (Giacomo Graziosi)
* New RPM SPEC file and startup scripts compliant with Fedora 10 guidelines and above (Steven Moix)
* Increase write buffer size for writing image files and ffmpegs
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionWriteBuffersPatch (Craig West)
* Fixed mask overlay in setup mode is now green instead of white (Joerg Weber)
* Add new config option 'ipv6_enabled' to enable/disable IPV6 (Angel Carpintero)
* Remove VIDIOC_S_JPEGCOMP support is deprecated. (Angel Carpintero)
* Use static memory allocation in ffmpeg_deinterlace() (Peter Holik)
http://www.lavrsen.dk/foswiki/bin/view/Motion/FfmpegDeinterlaceStatic
* Atom optimizacion in configure.in (Peter Holik)
http://www.lavrsen.dk/foswiki/bin/view/Motion/AtomOptimizations
* Allow to change Standard method ( PAL / NECAM / SECAM ) (Angel Carpintero)
* Add authentication methods 'Basic Authentication' and 'Digest Authentication'
to the "Live Stream Server". (Michael Finsterbusch)
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionStreamAuthPatch
* Implemented new logging system
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionLog (Angel Carpintero)
* Added a macro MOTION_LOG , no need to add __FUNCTION__ anymore. (Angel Carpintero)
* Added EXIF feature for jpeg images , http://www.lavrsen.dk/foswiki/bin/view/Motion/ExifTaggingPatch (Wim Lewis)
* Improve detection of av_register_protocol() for ffmpeg (Angel Carpintero).
* Added support for libjpeg-turbo
http://www.lavrsen.dk/foswiki/bin/view/Motion/FeatureRequest2010x04x14x082244 (Angel Carpintero)
* Added new log type COR , to filter messages from CORE. (Angel Carpintero)
* Added a new starting option -m to disable motion detection. (Angel Carpintero)
* Allow image dimension not 4:3 changing a check of modulo 16 by modulo 8. (Jeroen Massar)
* Added codec Ogg/Theora as new output format for regular movies.
http://www.lavrsen.dk/foswiki/bin/view/Motion/OggTimelapse (Michael Luich)
* Added support for ffmpeg 0.11 new API.
* Added RSTP support for netcam ( merge https://github.com/hyperbolic2346/motion )
Bugfixes
* Avoid segfault detecting strerror_r() version GNU or SUSv3. (Angel Carpintero)
* Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) (Peter Holik)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603
* Allow compile with NetBSD and make LP64 compliant video_freebsd.c (Andreas Wrede)
* Avoid compile vloopback in BSD (Angel Carpintero)
* V4L2 fourcc GRBG not supported, updated default value for v4l2_palette 17. (Isaac Richter)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x10x29x222753
* Exit when image dimension are not modulo 16. (Angel Carpintero)
* Avoid logs flooding using some options of netcam_keepalive and try to discard images with
weird header Content-Lenght 0. (Angel Carpintero)
* Only use post capture when we setup to record videos with external pipe or ffmpeg. (Angel Carpintero)
* Fix introduced bug for Content-Lenght = 0 in svn r476. (Angel Carpintero)
* Avoid segfault when motion cannot create a logfile. (Angel Carpintero)
* No mysql_close
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x11x22x033859
* No PQfinish() (Angel Carpintero)
* Input for webcams has to be set to -1
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x01x21x162309
* Added a conditional check for avformat_alloc_context , av_avformat_alloc_context to fix
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x10x05x071936 (Angel Carpintero)
* Fix issue with JPEG , adding dinfo.do_fancy_upsampling = FALSE;
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x08x20x194659
* Made micro-lightswitch optional (see lightwitch option in motion.conf)
* Fixed help text for options event_gap and area_detect
* Fixed motion.conf-dist , adding text according with config options.
* Fixed a bug in post_capture. It was missed under certain conditions.
* Fixed configure for SDL.
* Replace malloc() by calloc(). (Jeroen Massar)
* Free file descriptor buffers on exit.
* Avoid segfault when text_left or text_right uses non supported chars.
* Fixed leak in vloopback.
* Fixed a build of motion for some kernel version with not good videodev.h
* Netcam Modulo 8
3.2.12 Summary of Changes
Bugfixes
* Fixed name space clash with libjpeg8 (Kenneth Lavrsen)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x01x22x084753
* Fixed FFV1 codec encode with ffmpeg (Angel Carpintero)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x13x032553
* Fix conv_uyvyto420p segfault ( William M Brack )
* Enhancing the palette selection ( William M Brack )
* Fix zombies on OpenBSD. (Mark Feenstra)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x28x054348
3.2.11.1 Sumary of Changes
Bugfixes
* Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) (Peter Holik)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603
* Fix fd leaks in external pipe. (Angel Carpintero)
* Avoid possible stack smashing in v4l_open_vidpipe(). (Angel Carpintero)
* Allow compile with OpenSuse ffmpeg package (15594svn-20081010)
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x10x25x070400 (Angel Carpintero)
* Fix warning for syslog(). (Angel Carpintero)
* Better detection of ffmpeg
http://www.lavrsen.dk/foswiki/pub/Motion/ReleaseNoteMotion3x2x11/ffmpeg-detection.diff.gz
(Angel Carpintero)
* Fix warning for __USE_GNU redefined (Peter Holik)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x122137 (Peter Holik)
* Allow compile with NetBSD and make LP64 compliant video_freebsd.c (Andreas Wrede)
* Fix segfault for new libjpeg v7. (Angel Carpintero)
3.2.11 Summary of Changes
Features
* Added support for ffmpeg-2008-04-09 port version of FreeBSD.
* Remove mjpegtools dependencies and integrate only needed functions from library. (Angel Carpintero)
* Allow change/setup framerate in FreeBSD using pwcbsd. (Angel Carpintero)
* Get rid of ffmpeg-config in configure.in for debian. (Angel Carpintero)
Bugfixes
* Fix Problem Encoding 1280x1024 resolution videos
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x06x11x183727 (Angel Carpintero)
* Add a new parameter netcam_tolerant_check, to be less strict with some buggy network cameras firmwares.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x06x19x123218 (Angel Carpintero)
* Fix round robin in BSD switching to METEOR_CAP_SINGLE. (Angel Carpintero)
* Fix rotate for v4l2 devices using JPEG / MJPEG palettes. (Angel Carpintero)
* Fix v4l2_palette http://www.lavrsen.dk/twiki/bin/view/Motion/UvcvideoMjpegPatch (Gerrit Hannaert)
* Fix warning for x86_64 in conf.c using pointers LP64 compliant ( Angel Carpintero ).
* Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too) ( Peter Holik )
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603
3.2.10.1 Summary of Changes
Bugfixes
* Fix a security issue in web control interface http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484572
(Angel Carpintero)
3.2.10 Summary of Changes
Features
* Added the pre_capture buffer redesign to throttle load and enhance pre_capture feature.
http://www.lavrsen.dk/twiki/bin/view/Motion/PreCaptureRedesign (Dag Erlandsson).
* Added preview center feature.
http://www.lavrsen.dk/twiki/bin/view/Motion/PreviewCenter (Dag Erlandsson).
* Removed low_cpu feature, as it is not really compatible with pre_capture and a lot of other
features rely on the pre_capture buffer behind the scenes. (Joerg Weber)
* Removed night_compensate feature. This functionality is covered by noise_tune. (Joerg Weber)
* Implemented a new reference frame algorithm to improve object recognition and location. (Joerg Weber)
* Improved smartmask feature: real moving objects don't trigger the mask anymore. (Joerg Weber)
* Added area_detect feature. New config options: area_detect, on_area_detected. (Joerg Weber)
* Added help in http control
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x181541 (Angel Carpintero)
* Added Choose V4L2 palette http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x032318
(Angel Carpintero)
* Improved http control ( 'back' link, select box, show current values when are going to be changed ).
(Angel Carpintero)
* Improved thread handling, single threads can be stopped/restarted (Dag Erlandsson)
* Watchdog, restart hang threads (Dag Erlandsson)
* Added ON_CAMERA_LOST event (Dag Erlandsson)
* Motion start if a camera isn't there at start, retries to connect if lost (Dag Erlandsson)
* Netcam Keepalive and HTTP/1.1 http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x01x22x231542
(Simon Walls)
* Added mov , Quicktime file format (Andrew Hamilton).
* Added to configure.in --with-pwcbsd to allow compile motion in freebsd with webcam support instead of bktr
(Angel Carpintero)
Bugfixes
* Fixed a problem with locate and fixed mask overlay (Dag Erlandsson).
* Preview pictures get the timestamp of moment they were captured (Dag Erlandsson).
* Fixed http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x23x093651 (Angel Carpintero)
* Fix process_id_file when is passed from command line (Angel Carpintero)
* Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x27x150419 (Angel Carpintero)
* Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x25x102808 (Angel Carpintero)
* Avoid random errors , initialising some structs for V4L1
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x26x010755 (Jason Sharpee & Angel Carpintero)
* Fix motion segfault because ffmpeg API change
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2007x12x29x175530 (Angel Carpintero)
* Little fix in ffmpeg.c comparing version of LIBAVFORMAT_BUILD, since ffmpeg svn -r4486 LIBAVFORMAT_BUILD and
LIBAVCODEC_BUILD uses LIBAVFORMAT_VERSION_INT ((49<<16)+(0<<8)+0) and LIBAVCODEC_VERSION_INT ((49<<16)+(0<<8)+0)
(Angel Carpintero)
* Fix choose v4l2 palette , http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x01x21x043812 (Onakra)
* Get current directory to allow write motion.conf properly
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x013419 (John Bray)
* Fix broken PostgreSQL detection for custom location,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x025134 ( Angel Carpintero )
* Fixed stepper when is used track_auto on ( Angel Carpintero ).
* Better debug in netcam for "Error reading image header"
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x27x092849 (Simon Walls)
3.2.9 Formal Release - Summary of Changes
Features
* Removed debian ( to avoid conflicts with debian package) and FreeBSD
( no needed to deploy BSD port here ) directories. ( Angel Carpintero )
* Added --chuid motion to debian init.d script. ( Angel Carpintero )
* Added Flash video format (FLV) to ffmpeg.
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x07x19x131921 (Timo Taskinen).
* Added FFV1 ( FF video codec 1 ) codec , Lossless encoding
http://www.lavrsen.dk/twiki/bin/view/Motion/LosslessEncoding (Andrew Hamilton).
Bugfixes
* Fix segfault in webhttpd.c on motion restart (Angel Carpintero)
* Fix segfault in debian http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x09x24x175945
(Angel Carpintero)
* Fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=391055 , change
motion man page , -d requires level. (Angel Carpintero)
* Handle mjpeg decoding and fix colour issue adding mjpegtools dependency
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegToYUV420pPatch
(Marius Rieder, Angel Carpintero).
* Add debug level > 5 to get logs from v4l2_select_input, v4l2_set_control and v4l2_set_input.
(Angel Carpintero)
3.2.8 Formal Release - Summary of Changes
Features
* Added connection status for all devices available from http web interface.
(Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x11x09x050638
* Improved deb packaging, install the init.d script. (Angel Carpintero).
* Added swf codec to video creation (Bowser Pete, Andy Brown).
http://www.lavrsen.dk/twiki/bin/view/Motion/FFmpegSWFcreation
* Added V4L2 support (Krzysztof Blaszkowski, Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/VideoForLinuxTwoDiscussion,
* Added support for V4L2_PIX_FMT_SBGGR8 ( bayer ), V4L2_PIX_FMT_SN9C10X,
V4L2_PIX_FMT_MJPEG and V4L2_PIX_FMT_UYVY (Angel Carpintero).
* ucvideo track pan/tilt support ( Michal Licko ,Dirk Wesenberg and
Angel Carpintero )
http://www.lavrsen.dk/twiki/bin/view/Motion/LinuxUvcTrackingPatch
* Added a FreeBSD directory to allow people from BSD to get a daily version
and create a port. (Angel Carpintero).
* Removed mysql dependency from debian package and added a note to setup
motion to run as daemon to create the pid file. (Angel Carpintero).
* Changed the way configure search mysql headers and libs, added 3 parameters
to configure --without-mysql to disable support, --with-mysql-include
directory of mysql.h and --with-mysql-lib directory of libmysqlclient.a or
libmysqlclient.so (Angel Carpintero).
* Added MYSQL_OPT_RECONNECT flag for mysql connection (MYSQL 5.x only) and
changed default value for mysql_host (Angel Carpintero).
Bugfixes
* Removed a duplicate call to jpeg_destroy_decompress already is called from
netcam_image_conv (Krzysztof Blaszkowski).
* Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x10x10x081903,
reconnect to mysql if connection dropped (Angel Carpintero).
* Fix memory management in ffmpeg.c (Rafis Khayrullin).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x19x062432
* Fix of ffmpeg_avcodec_log code (Alain Guidez).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x03x25x074612
* Fix a segfault adding correct size to be used for bayer2rgb24()
(Damian Wrobel)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x03x30x175913
* Fix an error in FreeBSD, the use of capture even fields depends on height
value. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x03x073610
* Fixed autodetection for VIA cpu, no needed to use --without-optimizecpu.
Added many others (Angel Carpintero)
* Fix, don't remove pid file when motion reload config file( HUP signal )
(Angel Carpintero).
* Fix compilation broken by uvc track type. (Angel Carpintero).
* Fixed the thread number assignment which could goof up if netcams started
very quickly before all thread were created at startup. (Kenneth Lavrsen)
* Fix RoundRobin v4l2 buffers in driver when switching input,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x07x07x182605
(Dag Erlandsson and Angel Carpintero).
* Check EIO for VIDIOC_DQBUF to workaround saa7134 problem.
(Dag Erlandsson and Angel Carpintero).
* Change bayer2rgb24() to fix a problem with sn9c102 driver
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x06x05x012249
(Jared D and Angel Carpintero).
3.2.7 Formal Release - Summary of Changes
Features
* Removed the minimum_gap feature which was utterly useless (Kenneth Lavrsen)
* Added new feature: minimum_frame_time which enables capturing at a lower rate
than 2 frames per second (Kenneth Lavrsen and Angel Carpintero)
* Made the creation of reference frame and the decay mechanism depending
on how much motion was detected relative to threshold setting (Joerg Weber)
http://www.lavrsen.dk/twiki/bin/view/Motion/ReferenceFramePatch
* Added process_id_file feature (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x06x06x123003
Bugfixes
* Fixed problem related to fetching images from Network camera and error
handling when it fails. Motion would end in infinite loops (Bill Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x03x10x000151
* Improved reporting of thread numbers during startup in setup mode.
(Peter Smith and Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/SlightlyImprovedThreadCreationLogging
* Ffmpeg code mutex locking fix (Peter Smith)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x04x07x164654
* Ffmpeg avicodec logging improved (Peter Smith and Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegAvicodecLogging
* Improved upon a few ambiguous log messages which may be emitted by the Event
handling code with regards to Ffmpeg (Peter Smith)
http://www.lavrsen.dk/twiki/bin/view/Motion/LoggingEventFix
* Implemented a fix for the rare problem where some experienced that the
move file names would only consist of the extension .mpg or .avi with no
name in front. The root cause was the use of sprintf for appending to
strings. (Mike Kenney and Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2005x09x05x133031
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x06x19x174238
* Altered the risky use of sprintf to snprintf in all places related to
use with config strings that can become very long (Kenneth Lavrsen)
* Removed annoying debug messages (v4l_set_input really needed ?) in the FreeBSD
version (Angel Carpintero)
* Fixed the check for ffmpeg version. In rev 5503 of ffmpeg the FFMPEG_VERSION_INT
was removed from libavcodec/avcodec.h. Instead we now use the equivalent
LIBAVFORMAT_BUILD >= 4616 which is the 0.4.9pre1 version of ffmpeg.
(Kenneth Lavrsen)
* Fixed segfault when netcam_url has no service ( http , ftp ) (Angel Carpintero)
* Fixed interlace issue with METEOR_GEO_EVEN_ONLY in FreeBSD (Angel Carpintero)
* Fixed possible syntax error in configure related to MySQL (Angel Carpintero)
* Avoid open file descriptor when connecting to network cameras fails (Peter Holik)
http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidOpenfiledescriptors
* Fixed http pause feature so that pausing thread 0 now pauses all threads.
(GunnarSkjold)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x10x111239
* Put a new global mutex around avcodec_close to avoid problems with not thread
safe functions in ffmpeg (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x04x07x164654
* On FreeBSD configure defines a redundant freebsd for motion. Fixed by replacing
-D__freebsd_ by BSD macro included in sys/param.h for BSD platforms.
(JukkaUkkonen and Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x070417
* For BSD platforms changed to using native pthreads as default and adding
linuxthreads as a optional parameter from configure. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x071646
* Smartmask overlay feature did not set intensity correctly. (Kenneth Lavrsen)
3.2.6 Formal Bugfix Release.
* Fixed bug where variables time_last_frame and time_current_frame had been
extended to also be used for snapshot feature but declaration was hidden
between #ifdef HAVE_FFMPEG. (Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x03x09x012244
* Fixed a bug that only allowed remote control of max 9 cameras. Now
Motion can present up to 99 cameras in its http remote control interface
(Angel Carpintero based on idea by Chuck Sheehan)
http://www.lavrsen.dk/twiki/bin/view/Motion/WebHttpManyThreads
* text_changes now shows a '-' when motion detection is paused instead of
just showing 0 (Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x03x16x095713
3.2.5.1 Doc and man page correction
* ffmpeg_filename has changed name to movie_filename to prepare for
alternative movie encoding to the current ffmpeg based implementation
and ffmpeg_filename will then be a bad name (Kenneth Lavrsen)
* Man page corrected.
3.2.5 Formal Release. Summary of changes
* Fixed misc problems in FreeBSD. (Angel Carpintero)
* Update README.FreeBSD
* Fix problems with tuner_device and frequency, now by default is not
defined to allow use any input without problem.
* Replace strndup() by memcpy() in netcam.c
* Merged configure.in.freebsd with configure.in (configure.in.freebsd
deleted)
* Remove a warning when used --without-bktr
* Remove cpu optimization (is broken)
* Fixed memory leak in ffmpeg code. (Andrew Hamilton)
* Fixed http control of pan and tilt (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x12x22x122649
* Fixed netcamera bug related to separating frames in an mjpeg stream.
(Peter Holik). From mailing list 23 Dec 2005.
* Fix related to connecting to the netcam (William Black)
From mailing list 23 Dec 2005.
* Changed CHANGELOG to same bullet format as used by TWiki to make it easier
to write release notes (Kenneth Lavrsen)
* Changed CREDITS to same bullet format as CHANGELOG (Kenneth Lavrsen)
* Fixed sql_mask not initialised correctly (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x09x175603
* Fixed the management of strings from http remote control , setting to NULL
when they are set to "blank" and fixes a problem with despeckle , that didn't
allow to remove labeling action from http remote control. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/FixStringsAndDisableLabeling
* Fix many typos in comments ( i ran aspell against the code ). Also there's a
fix to free cnt->eventtime_tm when motion exits. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/FixTypoInComments
* Fix the problem that happens in FreeBSD and Debian Sarge because
version of ffmpeg is LIBAVFORMAT_BUILD < 4629. ( Pete Shipley and Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x12x120335
* Updated motion.spec. Changing D_FORTIFY_SOURCE=2 by D_FORTIFY_SOURCE=1 to fix
problem related to building with ffmpeg. (Angel Carpintero)
* Implemented fix for missed snapshots with slow network cameras (Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x02x07x162149
* Added some constants in video.c function v4l_picture_controls() which can help
people hack an optimal set of values for controlling auto brightness for their
particular camera. For now I am do not want to add all of these to the already
too large number of motion config options. Maybe based on feedback we can
permanently change the constants and add an additional auto brightness option.
Or maybe a combined option that sets more constant based on an algorithm.
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x02x07x212816
* Fixed a syntax error in picture.c get_pgm() which caused the program to segfault
when a mask file size did not match the picture size. Now the program
correctly gives an error message and continues without the mask. (Kenneth
Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x10x08x150720
* Added Tilt support to stepper track. ( Angel Carpintero ).
* CPU VIA Ezra C3 autodetection support added. (James Van Vleet)
http://www.lavrsen.dk/twiki/bin/view/Motion/VIAEzraC3Patch
* Fixed mysql configure auto-detection for x64 systems. ( Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x03x02x152208
* Added the ffmpeg_deinterlace feature (Andrew Hamilton)
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionffmpegDeinterlace
3.2.4 Formal Release. Summary of changes
Features
* New text option text_event and new conversion specifier %C. Option
text_event defines the value %C which then can be used in filenames and
text_right/text_left. The text_event/%C uses the time stamp for the first
image detected in a new event. Default value is %Y%m%d%H%M%S. %C is an empty
string when no event is in progress (gap period expired). Pre_captured
and minimum_motion_frames images are time stamped before the event happens
so %C in text_left/right does not have any effect on those images.
* Added new option track_auto which is a boolean option (on or off)
with default value off. This enables people to start Motion with auto
tracking enabled. Changing the config value for track_auto and
enabling the auto tracking via the httpd track/auto has the exact same
effect.
* Added 3 new tracking options: track_step_angle_x, track_step_angle_y,
and track_move_wait. The options track_step_angle control the movement
during auto tracking and are currently only active for the pwc type
tracking. The idea is that they can later also be used for the generic
tracking as it evolves. The track_move_wait controls the number of frames
after the camera has moved (auto or manual) during which motion detection
is disabled. This option should be set so low that the motion detection
is re-enabled the minute the camera is standing still again.
* Added new sql_query option. This in combination with convertion
specifiers incl the two new %f and %n enables the user to use any database
structure they please. Adding fields is now a simple matter of modifying
the sql query.
* Added the %t conversion specifier which is the thread (camera) number.
* Added two new conversion specifiers: %f which is filename (full path)
and %n which is filetype (sqltype) valid in on_picture_save, on_movie_start,
on_movie_end and sql_query. This also means that filename is no longer
appended at the end of the 3 on_xxxx commands.
* http control had a number of small improvements.
* Added the debian sub directory so that people can build the deb package.
* Enhanced netcam compatibility with Lumenera and Pixord Cameras.
* Netcam feature now supports both http and ftp.
* Added an infinite retry scheme for netcams that are not available
when Motion is started. Instead of just dying, Motion now retries every
10 seconds until the netcam is available. Until the netcam is available
Motion enters a mode showing a grey image with a text information which
is fed to webcam, timelapse, snapshots, vloopback etc. If the actual
height and width of the netcam does not match the dimensions in the
config file Motion will perform a quick restart.
* Added a better error handling of a netcam that changes dimensions
while Motion is running. Instead of just writing error messages Motion
restarts quickly to recover from this change.
* FreeBSD Code improvements including set/get hue, saturation, contrast
and brightness, support large resolutions.
* RPM specs file changed as suggested for use in the Livna repository.
* Changed the sequence of events connected with creating files. Data is
now written to the databases (if used) before an external comments is
on (on_xxxx options) allowing the external program to use the new data
in the database.
* Motion is now also works on MaxOSX with similar feature set as FreeBSD.
Bugfixes
* netcam code now waits for the next frame to arrive for a limited period
in order to avoid too many duplicate images.
* Motion loop resets its frame timer when the image received is from a netcam.
This lowers the actual framerate of Motion to the rate the netcam can actually
keep up with.
* Removed all warnings when running ./configure --with-developer-flags.
* Fixed error message with unknown config option.
* Fixed small mistake in allocating memory for cnt->imgs.common_buffer.
* Implemented a speed-up patch of the draw text feature.
* Introduced check for device image size being a multiple of 16.
* Switchfilter feature repaired.
* Fixed small bug where motion was detected when using a tracking camera and
the camera moved to center position when gap period expires.
* Implemented fix to configure so that LDFLAGS from the environment are used
when making the Makefile.
* Changed configure so that --with-jpeg-mmx is default off as a reaction to
known problems seen when using the jpeg-mmx library.
* The lightswitch and switchfilter features have changed to ensure that both
algorithms work on raw unfiltered motion pixels which they both were designed
for.
* Fixed bug related to init of mutex in netcam code.
* Fixed small bug where the displayed time in the grey error image
shown during start with unavailable netcam could show a garbage value
under rare circumstances.
* Restored the function sigchild_handler so it contains the same code
as before motion-3.2.1_snap9. They is done in an attempt to fix an old
problem with zombie child processes that has shown up again.
* Added a work-around so people in FreeBSD that uses a capture card
where input 1 is not tuner can use motion if frequency is set -1 in
motion.conf or thread#.conf
3.2.4 Detailed changes for 3.2.4
snap1
* Removed all warnings originating from the motion sources when running
./configure --with-developer-flags.
The modifications were done by the following people: Peter Holik, Bill Brack,
Angel Carpintero and Kenneth Lavrsen.
We now encourage developers to ensure that new code is checked with
--with-developer-flags and code made so that no new warnings shows originating
from the motion sources.
http://www.lavrsen.dk/twiki/bin/view/Motion/ReduceWarningsPatch
* Fixed error message with unknown config option (Bill Brack)
* Fixed small mistake in allocating memory for cnt->imgs.common_buffer
(Angel Carpintero).
* Implemented a speed-up patch of the draw text feature (Peter Holik).
http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextspeedup
* http control updated: (null) messages replaced by "disabled", last parameter
in conf/list are displayed correctly and only in Main thread. When motion runs
with only one thread, it displays "No threads". (Angel Carpintero)
* Enhanced compatibility with Lumenera (Bill Brack)
* http control: selectbox instead of a textfield for changing boolean configs
(Peter Holik and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/WebhttpEnhancements.
* Introduced check for device image size being a multiple of 16 (Peter Holik).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamModulo16Patch
* Added the debian sub directory so that people can build the deb package
(Angel Carpintero).
* Sync configure.in.freebsd (adding support for jpeg-mmx, developer-flags and
some cosmetic changes ) (Angel Carpintero)
* Implemented --with-developer-flags fixes in FreeBSD code (Angel Carpintero).
* Implemented Threadnr in TLS (thread-local storage)patch. It puts the thread
number into TLS and modifies motion_log() so that we do not have to drag the
cnt struct around just to be able to print the thread number in the log and
on the console. (Per Jönsson with additional removal of unused cnt by
Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadNrTlsPatch
* Moved the motion_loop initialization into a new function motion_init
(Bill Brack).
* Removed old unused code related to read mode (not mmap) from V4L devices
(Kenneth Lavrsen).
* In v4l_start change map from unsigned char * to void * to be ANSI C compliant
with mmap (Angel Carpintero)
* http control: Changed disabled to (not defined) when displaying option list
(Angel Carpintero)
* netcam code now waits for the next frame to arrive for a limited period
in order to avoid too many duplicate images (Bill Brack).
* Motion loop resets its frame timer when the image received is from a netcam.
This lowers the actual framerate of Motion to the rate the netcam can actually
keep up with. (Kenneth Lavrsen)
* Last --with-developer-flags warnings eliminated simply by swapping the
order of the #include statements in the sources (Bill Brack and Kenneth Lavrsen).
* FreeBSD Code improvements by Angel Carpintero
* Implemented set/get hue , saturation , contrast and brightness.
* Better support to capture with big resolution ( 640x480 , 768x576 ).
* Update Readme adding information about "how to configure a capture
card and settings" , update packages dependencies .
* Remove support for libjpeg-mmx , motion segfault ( future fix ).
* Cosmetics changes in configure.in.freebsd ( replace --without-v4l by
without-bktr ).
* Cleanup code and fix warnings.
snap2
* Simplified rotation code based on the fact that images must have dimensions
that are a multiple of 16 (Per Jönsson)
http://www.lavrsen.dk/twiki/bin/view/Motion/RotateSimplificationPatch
* Switchfilter feature repaired. It was called inside motion_detected()
after overlays on cnt->img.out were added which meant that the feature also
detected all the overlays, smartmasks, fixed mask and text. It is now moved
to the motion_loop right after the lightswitch feature and before any
overlays are added (Kenneth Lavrsen).
* Fixed small bug where motion was detected when using a tracking camera and
the camera moved to center position when gap period expires. The fix includes
gathering the updating of reference frame in one place only in the motion_loop
(Kenneth Lavrsen).
* Implemented the new text option text_event and new conversion specifier %C.
Option text_event defines the value %C which then can be used in filenames
and text_right/text_left. The text_event/%C uses the time stamp for the first
image detected in a new event. Default value is %Y%m%d%H%M%S. %C is an empty
string when no event is in progress (gap period expired). Pre_captured
and minimum_motion_frames images are time stamped before the event happens
so %C in text_left/right does not have any effect on those images (Kenneth
Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/EventConvertionSpecifierDiscussion
* Renamed some variables related to time to be better descriptive of function
and type (Kenneth Lavrsen).
* Added new option 'sql_user_text'. This can be defined with the same
conversion specifiers as text_xxx, on_xxxx and filenames. The SQL field
text_left has been removed and replaced by a field user_text which is
used for storing the interpreted value of sql_user_text (Kenneth Lavrsen)
* Added new SQL field event_time_stamp of the type TIMESTAMP
(Kenneth Lavrsen).
snap3
* Enhancement to Netcam Code for Connection to Pixord Cameras (Bill Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFixPixordBug
* Implemented fix to configure so that LDFLAGS from the environment are used
when making the Makefile (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x09x15x185558
* Changed configure so that --with-jpeg-mmx is default off as a reaction to
known problems seen when using the jpeg-mmx library (Angel Carpintero).
* RPM specs file changed as suggested for use in the Livna repository.
(Kenneth Lavrsen)
* The lightswitch and switchfilter features have been moved up before the
despeckle features are run. This should ensure that both algorithms work on
raw unfiltered motion pixels which they both were designed for. (Kenneth
Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x10x05x212444
snap4
* Integrated NetcamWithFtp patch. To use ftp simply use a URL starting with
ftp:// (Bill Brack). Code was additionally cleaned up by Kenneth Lavrsen.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamWithFTP
* Changed error handling in vid_start so that failing to open the video
device no longer causes an exit but a return with error code -1. (Kenneth
Lavrsen)
* Added the %t conversion specifier to show the thread number. (Angel
Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadConversionSpecifierPatch
* Added help texts in conf.c and motion-dist.conf describing the %t
specifier. Added a good example of use in motion-dist.conf. (Kenneth
Lavrsen).
* Fixed bug related to init of mutex in netcam code (Angel Carpintero).
* Improved fix for netcam mutex init (Bill Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFixPthreadInit
* Netcam_ftp code fixes (Angel Carpintero and Asbjørn Pettersen)
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamWithFtpEnhancements
* Enhanced ffmpeg detection (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/BetterFFmpegDetection
* Added two new conversion specifiers: %f which is filename (full path)
and %n which is filetype (sqltype) valid in on_picture_save, on_movie_start,
on_movie_end and sql_query. This also means that filename is no longer
appended at the end of the 3 on_xxxx commands. (Kenneth Lavrsen)
* Removed the sql_user_text option that was added in snap 2 (Kenneth
Lavrsen)
* Added new sql_query option. This in combination with convertion
specifiers incl the two new %f and %n enables the user to use any database
structure they please. Added fields is now a simple matter of modifying
the sql query. The default is the same as the default in snap1.
(Kenneth Lavrsen).
* Changed the sequence of events connected with creating files. Data is
now written to the databases (if used) before an external comments is
on (on_xxxx options) allowing the external program to use the new data
in the database (Kenneth Lavrsen).
* Added an infinite retry scheme for netcams that are not available
when Motion is started. Instead of just dying, Motion now retries every
10 seconds until the netcam is available. Until the netcam is available
Motion enters the normal flow with the same grey image with a text
information being fed to webcam, timelapse, snapshots, vloopback etc.
Motion uses the width and height from the config file for this. It is
a good idea to setup width and height so it is the same as the netcam.
If the dimensions are the same Motion will switch over to the netcam
seemlessly. If the dimensions are different Motion will perform a quick
restart so all the many internal buffers can be initialized properly
(Kenneth Lavrsen).
* Added a better error handling of a netcam that changes dimensions
while Motion is running. Instead of just writing error messages Motion
restarts quickly to recover from this change. Note the now more well
defined error coding for vid_next for both netcams and V4L cams.
(Kenneth Lavrsen)
snap5
* Fixed small bug where the displayed time in the grey error image
shown during start with unavailable netcam could show a garbage value
under rare circumstances. (Kenneth Lavrsen).
* Restored the function sigchild_handler so it contains the same code
as before motion-3.2.1_snap9. They is done in an attempt to fix an old
problem with zombie child processes that has shown up again.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x11x13x115016
(Kenneth Lavrsen).
* Move the declaration of sig_handler_action and sigchild_action from
the setup_signals function where they are local and will be destroyed
and out in main just before setup_signals is called. Changed the
function setup_signals so the two structs are passed as pointers.
(Kenneth Lavrsen)
Release
* Added new option track_auto which is a boolean option (on or off)
with default value off. This enable people to start Motion with auto
tracking enabled. Changing the config value for track_auto and
enabling the auto tracking via the httpd track/auto has the exact same
effect. (Kenneth Lavrsen)
* Added 3 new tracking options: track_step_angle_x, track_step_angle_y,
and track_move_wait. The options track_step_angle control the movement
during auto tracking and are currently only active for the pwc type
tracking. The idea is that they can later also be used for the generic
tracking as it evolves. The track_move_wait controls the number of frames
after the camera has moved (auto or manual) during which motion detection
is disabled. This option should be set so low that the motion detection
is re-enabled the minute the camera is standing still again. Feature
originally made by Moshe Van Der Sterre. Kenneth Lavrsen extended it to
be more generic.
http://www.lavrsen.dk/twiki/bin/view/Motion/PwcConfiguration
* New Feature: Motion is now also supported on MaxOSX with similar
feature set as for Free BSD. See README.MacOSX for details how to install
it. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/MacOSXPatch
* Added a work-around so people in FreeBSD that uses a capture card
where input 1 is not tuner can use motion if frequency is set -1 in
motion.conf or thread#.conf (Angel Carpintero).
3.2.3 Detailed changes for 3.2.3
Bugfix release only. No new features.
* Fixed a bug in the http control code that failed to accept a client
connecting in some systems (Peter Holik).
* Fixed a series of bugs where several feature were using the image buffer
after text was added for noise tuning, auto_brightness, reference frame
update when tracking etc. When a netcam failed to produce an image the
text added to the previous image became motion detected also. The code is
not changed so that the ring buffer is used for timestamped images
and the image used for detection is in a buffer cnt->imgs.image_virgin.
(Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x15x140701
* Auto brightness used the first image in ring buffer instead of the
latest image and it used an image with time stamping. It now uses the new
cnt->imgs.image_virgin buffer.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x15x160208
* Cleaned out unused code from httpd control (Angel Carpintero).
* Option switch_filter used print_int instead of print_bool when motion.conf
was saved (Kenneth Lavrsen).
3.2.2 Formal Release. Summary of changes
Features
* New completely rewritten netcam code.
* Proxy servers are again supported by netcam feature
* New conversion specifier %o for threshold
* New convertion specifier %Q for number of labels
* Drawing of mask and smartmask in setup mode improved
* Compilation of motion on 64 bit machines improved
* RPMs can now be built by non-root user
* Improved the labelling algorithm so that locate feature and tracking features
includes all labelled areas above threshold
* Motion now supports the mjpeg webcam stream while saving PPM images.
* New improved webcam feature. When you set webcam_motion on Motion will now
stream at 1 fps instead of none. When motion is detected the webcam stream
increases to the limit set in the config file. This change makes the
webcam_motion much more interesting. The previous function always ended up
with clients timing out.
* Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg
can increase performance. Especially for machines with very little CPU power.
It only modifies the configure script. If you do not have the libjpeg-mmx
the configure script with ignore this and use the standard libjpeg.
Note that RPMS will be built without this
* Improved descriptions in motion.conf
* Many small code speed optimizations.
* Added new feature: Double size text. A new config option 'text_double' can
be set 'on' and this scales the text to double size. Default is off.
* Improved error handling of missing picture frames from camera. Especially
network cameras will often not be able to provide a picture frame from time
to time. Motion would retry before and eventually and rather quickly exit
the camera thread and maybe completely exit. The improved handling now
makes a copy of the previous frame for 30 seconds (longer if cpu_low is
activated because the implementation is 30 X framerate frames) and then
show a grey image with a message saying the connection is lost and an ISO
format time stamp of first poor connection.
* Added a configure option --with-developer-flags which enables many compiler
warnings that can be used by developers to make code more robust. Not
for normal users building Motion.
* Included a CODE_STANDARD text file to help new developers make patches
that are easier to integrate without too much manual editing.
Bug Fixes
* Fixed a bug in the autobrightness algorithm
* Fixed bug reporting errors when creating symlink to last snap
* Improved code so that Motion no longer uses the tmpfile() function for
buffering the frames of the mjpeg stream.
* Implemented a fix/work around to a bug related to building and installing
RPMs on Suse.
* Improved signal handler
* Code commented much more.
* Many bugfixes to get Motion more stable (less segfaults)
* Code improved to remove all warnings when compiled with gcc 4.0
* Better FreeBSD support
* Replace functions not threadsafe with threadsafe functions.
* Implemented a much easier to use motion_log function which replaces the
calls to printf and syslog. This code change as no impact to the user.
* Fixed a bug in video.c so that VIDEO_PALETTE_GREY cameras now actually work.
* Updated the ffmpeg.c code so that Motion can now be built with ffmpeg CVS
release from the June/July 2005 timeframe.
3.2.2 Detailed changes for 3.2.2
snap1
* Pthread deadlock in motion 3.2.1 fixed (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x26x125712
* http lockup bugfixes and ConvertSignalToSigaction only for webhttpd
(Angel Carpintero)
* alg_draw_location: Use temporary variables to store the values used in
for() loops instead of compute them in each loop (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/ImproveAlgDrawLocation
* Small speed boost to the function draw_textn (Andrew Hamilton and
Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextnImprovement
* Added two new convertion specifiers: %o for threshold and %Q for number
of labels. (Kenneth Lavrsen)
* Improved the config file description for pre_capture to get people to
use small values (Kenneth Lavrsen).
snap2
* Avoid Cleanup Segfault. Avoid Cleanup Segfault. Allocates filepath using
strdup to avoid segfault is target_dir parameter is not supplied in
motion.conf. Moves out from signal handler the cleanup for pipe and mpipe.
(Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidCleanupSegfault
* Major code cleanup concerning signedness of chars all over the code to
allow compilation with gcc4.0 (like in Fedora Core 4) without any
errors or warnings. This will probably require that some of the not yet
included patches will have to be fixed because it it code all over the
place that has been changed. (Kenneth Lavrsen)
snap3
* Changed the order of drawing the red mask in setup mode so that the
smartmask is drawn after the fixed mask (Joerg Weber).
* Changed the configure script so that /usr/lib64 is also searched for
the presence of ffmpeg (should fix the problem with 64 bit machines)
(Kenneth Lavrsen).
* Changed the configure script so that rpms can be made by normal non-root
users (Angel Carpintero, Kenneth Lavrsen).
snap4
* Fixed the ffmpeg code so that Motion also compiles against libavcodec
build 4754 or later. (Per Jönsson)
* Above change in configure script for 64 bit ffmpeg support also implemented
in the freeBSD configure (Angel Carpintero)
* Webhttp control interface fixed so it also works in FreeBSD (Angel
Carpintero)
* Improved the display of fixed mask. It is now shown as grey instead of
red. This makes it easier to see the smart mask working when you also have
a fixed mask (Joerg Weber).
* Netcam First Header patch. If an error with jpeg decompression occurred at
connecting to a mjpeg streaming webcam, this patch skips this jpeg and tries
to decompress next jpeg up to MAX_HEADER_RETRIES (20) (Peter Holik).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFirstHeader
snap5
* Small improvement in framerate accuracy (Peter Holik).
http://www.lavrsen.dk/twiki/bin/view/Motion/FramerateAdjust
* Fixed a bug in the autobrightness algorithm (Per Johnsson)
* Fixed a bug in the webhttpd code related to pan/tilt. Bug was introduced in
snap4 (Angel Carpintero, Kenneth Lavrsen).
* Improved the labelling algorithm so that locate feature and tracking features
includes all labelled areas above threshold (Joerg Weber).
http://www.lavrsen.dk/twiki/bin/view/Motion/ImprovedLabellingPatch
* Fixed bug reporting errors when creating symlink to last snap (Bill Maidment)
* Changed all use of localtime to localtime_r which is threadsafe
(Kenneth Lavrsen).
* Implemented a modified version of the WebcamCompressInMemory so that Motion
no longer uses the tmpfile() function for buffering the frames of the mjpeg
stream (Peter Holik).
http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamCompressInMemory
* Modified the WebcamCompressInMemory patch so that Motion now supports the
mjpeg webcam stream while being setup for saving PPM images (Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamCompressInMemory
* Major clean-up of code in picture.c and webcam.c so that function names and
variable names are less confusing. Also added many comments in picture.c.
(Kenneth Lavrsen).
snap6
* Webcam code commented more (Kenneth Lavrsen)
* New improved webcam feature. When you set webcam_motion on Motion will now
stream at 1 fps instead of none. When motion is detected the webcam stream
increases to the limit set in the config file. This change makes the
webcam_motion much more interesting. The previous function always ended up
with clients timing out. (Kenneth Lavrsen).
snap7
* Implemented WebcamShortWriteHandling patch (Bill Brack)
http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamShortWriteHandlingPatch
* Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg
can increase performance. Especially for machines with very little CPU power.
It only modifies the configure script. If you do not have the libjpeg-mmx
the configure script with ignore this and use the standard libjpeg.
Note that RPMS will be built without this (Peter Holik and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/LibJpegMmx
snap8
* Small code cleanup in webcam.c and picture.c and .h for the webcam code
(Peter Holik and Kenneth Lavrsen)
* Small code cleanup in motion.c for the variable holding the number of
microseconds since epoch. The old code worked fine but relied on an integer
overflow every 71 minutes. (Bill Brack and Kenneth Lavrsen)
* Implemented a fix/work around to a bug related to building and installing
RPMs on Suse. (Paul Beltrani)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x07x14x212356
* Small speed optimization in the creation of reference frame (Peter Holik).
* Complete rewrite of the Netcam code. Should fix many of the reported and
still open netcam bugs. This is first release in a snapshot. Expect to find
bugs. Testing is important. If you have a netcam please test this and report
bugs.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamCodeRewritePatch
snap9
* Fixed bug related to disabled webcam or duplicate webcam port. Error log
accept(): Socket operation on non-socket continuously written to syslog.
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x01x150922
* Fixed memory leak in webhttpd related to use of strdup (Angel Carpintero).
* Improved the error reporting in the Netcam code and did a few minor
corrections and code cleanups (Bill Brack).
* Implemented a much easier to use motion_log function which replaces the
calls to printf and syslog. The implementation to actually use this has been
implemented in video.c and the Netcam code files. Rest will be in next snap.
This code change as no impact to the user (Bill Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch
* Fixed a bug in video.c so that VIDEO_PALETTE_GREY cameras now actually work
(Bill Brack).
* Implemented the conversion of signal to sigaction which should be more
thread safe. Hopefully this still keeps Motion from making Zombies.
(Christophe Grenier).
http://www.lavrsen.dk/twiki/bin/view/Motion/ConvertSignalToSigaction
* Added new feature: Double size text. A new config option 'text_double' can
be set 'on' and this scales the text to double size. Default is off.
(Andrew Hamilton).
http://www.lavrsen.dk/twiki/bin/view/Motion/TextScalingPatch
snap10
* Error Logging Enhancement Patch v 1.3 (Angel Carpintero) including:
http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch
* Populate the motion_log to the whole motion source code.
* Fixed FreeBSD compilation.
* Added the possibility to pass NULL as struct context *
* Removed unused errno variables.
* Fixed errno in rotate.c , set to 0.
* Fixed some errno flags in webhttpd.c and motion.c
* Fixed a bug when not motion.conf is found
* Removed printf from all files
* Fixed the conf_list[] index in motion.c
* RotateBswapFix Patch v 2 (Per Jönsson) including:
* cleanup in code comments
* fix for __bswap_32 macro collision
* fixed bug where initialization would be incomplete for invalid degrees
of rotation
* now uses motion_log for error reporting
http://www.lavrsen.dk/twiki/bin/view/Motion/RotateBswapFix
* Re-mplementation of optional Proxy Server for Network Cameras (Bill Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamProxyServerPatch
* Included a CODE_STANDARD text file to help new developers make patches
that are easier to integrate without too much manual editing. (Kenneth
Lavrsen)
* Added the missing rotate feature in the new netcam code (Bill Brack)
snap11
* Updated the ffmpeg.c code so that Motion can now be built with ffmpeg CVS
release from the June/July 2005 timeframe (Per Jönsson).
http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegCodecPatch
* Improved error handling of missing picture frames from camera. Especially
network cameras will often not be able to provide a picture frame from time
to time. Motion would retry before and eventually and rather quickly exit
the camera thread and maybe completely exit. The improved handling now
makes a copy of the previous frame for 5 seconds (longer if cpu_low is
activated because the implementation is 5 X framerate frames) and then
show a grey image with a message saying the connection is lost and an ISO
format time stamp of first poor connection. (Kenneth Lavrsen).
* Implemented version 2 of the NetcamErrorImprovementPatch which should
work with the improved error handler. Changes include:
* Changes handling of non-streaming camera to include a separate thread.
* Changes the value returned from netcam_next to the motion main loop to
indicate the status of the image returned.
* Many changes to the comments, and some enhancement to the logic, to begin
the implementation of points agreed on the NetcamRetryErrorDiscussion page.
* Implements the triple-buffering scheme proposed by PeterHolik (but not the
"Without Locking" portion of his proposal).
Version 2 however does not seems to recover when an mjpeg stream resumes
after a period of not being available. (Bill Brack)
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamErrorImprovementPatch
* Note: Snap11 release as a developer sync release. Bug reports welcome.
FreeBSD code changes not tested yet.
Release
* Netcam error handling improvements and cleanup from Valgrind analysis
(Bill Brack).
* Added a configure option --with-developer-flags which enables many compiler
warnings that can be used by developers to make code more robust. Not
for normal users building Motion (Bill Brack)
* http-control: Fixed segfault when motion is restarted from command line
( kill -s 1 pid_motion ). Improved control code so Motion can Restart and
Finish 'smoothly'. (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Changed the 5 second missed camera signal timeout to 30 seconds. (Kenneth
Lavrsen)
* Fixed bug where an extra jpeg is saved if you have output_normal=best
and you stop motion after an event has ended. (Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x08x05x173526
3.2.1 Detailed changes for 3.2.1 since 3.1.19_snap3
snap1
* Major new feature. XMLRPC is replaced by a simpler http remote control
interface (implemented by Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
snap2
* Fixed netcam->userpass problem (Angel Carpintero)
* Added support in configure for athlon64 from
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x190907
(Angel Carpintero and William M Brack)
* Fixed some gcc warnings (William M Brack)
* Code cleanup from a valgrind analysis (William M. Brack).
snap3
* Added Best Preview Patch (Joerg Weber)
http://www.lavrsen.dk/twiki/bin/view/Motion/BestPreviewShot
snap4
* Fix for tracking control with http control (Angel Carpintero)
* Added the new feature Setup Mode (Joerg Weber). This also enables
much more error messages given to the console when in non-daemon mode
while still preserving the messages in syslog which are important
for daemon mode debugging.
The patch is still being worked on and is not finished.
Changes in the FreeBSD code are not yet tested.
http://www.lavrsen.dk/twiki/bin/view/Motion/SetupModePatch
Remove most command line options and replace them by an option to specify
location to motion.conf and a few options related to setting up motion.
(Joerg Weber). This is also included in SetupModePatch.
* Small improvement of the http control interface (link to setting itself
on the html response when setting parameter) (Kenneth Lavrsen)
snap5
* Fixed a bug in noise tune which was most visible at very low light.
(Joerg Weber and Kenneth Lavrsen)
* Further improvement in the setup mode. Messages are now prefixed by
the thread number in [brackets]. Moved 2 functions from motion.c to
picture.c. The setup mode patch is now considered finished. (Joerg Weber)
snap6
* Netcam fixes and debug code by Christopher Price
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch
snap5_post1_video.c and snap5-post1 patches
* Fixed netcam startup race condition.
* Refactored image handling back to single unified function
* Refactored reconnection algorithm
* Jpeg only based connections should now use less cpu time
* Temporarily removed support for devices that do not support content-length
(in progress)
* Synced syslog/printf style to new motion standard
* Added developer debug trace defines/code
* Defines now used for many constants
snap7
* Improved console output in setup mode. Now also outputs threshold.
(Joerg Weber)
* Added some additional text to the motion http messages to the terminal
so that you know where the messages come from. (Kenneth Lavrsen)
Netcam Stability Patch version snap6-post1 (Christopher Price)
* Added support for netcams without content-length header (streaming only)
* Remove memmem from netcam_wget.[c|h] (no longer used)
* Several miscellaneous code cosmetic changes
* TODO: remove tests for memmem from configure
snap8
* Added support for non-streaming (image based) netcams without content-length
header. (3.2.1-snap7-post1 version of the Netcam Stability Patch by Christopher
Price).
* Improvement in the noise-tune algorithm (Joerg Weber)
* Re-arranged many of the const char declarations so that they are always
before any statements within a block { }. This is to avoid compiler errors
with older but still used gcc versions such as 2.95. (Kenneth Lavrsen)
* Changed the use of %zd to %llu in printf statements of size_t types.
This is done to avoid compiler errors with older but still used gcc versions
such as 2.95. (Kenneth Lavrsen)
snap9
* Fixed even more gcc 2.95 compiler errors (declarations not at beginning
of block) (Kenneth Lavrsen).
* Removed a gcc 2.95 compiler warning (netcam.c:1036: warning: variable `pic'
might be clobbered by `longjmp' or `vfork') (Kenneth Lavrsen)
* The values for cnt->locate and cnt->new_img are now #defines in motion.h
to enhance code readability (Kenneth Lavrsen).
* The setting of sql_mask is now only done once per second to save CPU power
(Kenneth Lavrsen)
* Adding checking for conflict between control port and webcam port. Webcam
port for a thread is disabled if it is set to the same value as the control
port (Kenneth Lavrsen).
* Fixed some file descriptor leaks in webcam.c and netcam.c (Christophe
Grenier)
* Added "motion-http:" prefix to error messages from the http control thread.
(Kenneth Lavrsen)
* Added additional error information when connection to MySQL fails (Kenneth
Lavrsen)
* Initiate cnt->event_nr to 1 to avoid code related to end of events and long
mpeg films to be run during startup of Motion. (Kenneth Lavrsen)
* Added new function in event.c close_anything_open() which is called from
send_sms, send_mail and exec_command in order to prevent file descriptor and
open sockets to be inherited by the shell causing freezing and instability.
Code contributed by Christophe Grenier, Christopher Price and Kenneth Lavrsen.
* Added new context global cnt_list.control_socket_server set by the httpd
thread so that the above mentioned close_anything_open() can close open
control sockets (Kenneth Lavrsen).
* Renamed the top level global context structure to cnt_list so it can be
reached from child threads and by above mentioned close_anything_open()
(Christophe Grenier).
snap10
* Fixed a problem when compiling with --without-v4l configuration.
(Philip Marien)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x27x112843
* Threw away the file descriptor leak fix from snap 9 because it caused
more trouble than it fixed. Removed the close_anything_open() and the
cnt_list.control_socket_server field. Replaced it all with a simple
piece of code that all server daemons call when started: setsid() followed
by for (i=getdtablesize(); i>2; --i) close(i). Dirty and simple.
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x21x070534
* Fixed a bug where rate of fetching picture frames was disturned by
the signal SIG_CHLD from exec_command programs terminating. The symptom
was that the number of post_capture frames became inaccurate and motion
in mpegs did not have constant time between frames. (Kenneth Lavrsen)
* Fixed a bug where motion did not work with gap=1 (Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x073616
* Added the feature gap=0 which now also works. It disables gap completely
so that one single mpeg file is created. You can end the event from the
remote control interface make movie feature using for example cron.
This makes Motion close the mpeg and make a new with event number increased
by one. (Kenneth Lavrsen)
* Improved the http remote control action features so that makemovie
and snapshot for thread 0 (all) works on all threads instead of being
ignored (Kenneth Lavrsen).
* Moved some code in the beginning of the motion_loop to a position later
to improve the accuracy of time calculations for the framerate (Kenneth
Lavrsen)
* Updated code so Motion again runs on FreeBSD (Angel Carpintero).
* Removed check for memmem from configure (Angel Carpintero).
* Updated http control interface so that an additional check is done
before saving config files (Angel Carpintero).
* Fixed a problem with URLs http://192.168.1.3:8080/0 which did not
work without a trailing space (Angel Carpintero).
snap11
* Implemented new Generic onxxxx features.
Function --- Old Option --- New Option
Start of event (first motion) --- execute --- on_event_start
End of event (no motion for gap seconds) --- New! --- on_event_end
Picture saved (jpg or ppm) --- onsave --- on_picture_save
Movie starts (mpeg file opened) --- onmpeg --- on_movie_start
Movie ends (mpeg file closed) --- onffmpegclose --- on_movie_end
Motion detected --- New! --- on_motion_detected
http://www.lavrsen.dk/twiki/bin/view/Motion/OnXxxCommandsPatch and
http://www.lavrsen.dk/twiki/bin/view/Motion/OnXxxxFeatureDiscussion
(Joerg Weber)
* More Netcam Stability Fixes (snap10-post1-6) (Christopher Price)
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch
* Destroy mutexes in netcam_cleanup().
* Add reconnection for netcam_start() - this may block other cameras
from starting up!.
* Added additional defines for reconnect retries.
* Change reconnection timeouts to 60 seconds.
* Reworked close(sock) in netcam_connect, to insure future changes
won't forget to close the socket.
* Reworked reconnection for netcam_start() - disabled by default, see
source for INIT_RECONNECT_RETRIES.
* Break some long lines in code.
* Replaced sleep with nanosleep per suggestion by Kenneth Lavrsen.
* Added additional header validation check.
* Changed a couple fd references to use RBUF_FD.
* Added error message if jpeglib error occurs.
* Removed additional header validation check.
* Limited times headers will be checked.
* Removed mutex lock around netcam_start() in video.c, hopefully race
conditions are fixed.
* Added additional headers in http request.
* Added back header validation (should fix netcam_read_header lockups).
* Detect when there is no data on socket in netcam_read_ functions
(should fix netcam_read_image_contentlength() and
netcam_read_image_no_contentlength() lockups).
* Rearranged timeout assignments for pthread_cond_timedwait() calls.
* Adjusted TIMEOUT_COND_WHICH to 4 seconds.
* Improvements of motion.conf help comments including improvements in new
onxxxx options. (Kenneth Lavrsen)
snap12
* Fixed a bug in the rgb2yuv420p function. (Daniel Ladd)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x30x011107
* Fixed a bug of locate feature for movement images combined with the
new output_normal best feature (Joerg Weber)
* More Netcam Stability Fixes (snap11-post1-4) (Christopher Price)
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch
* Reworked thread signal/wait conditions, should fix some race conditions.
* Use gettimeofday() to determine thread timeouts, results in better accuracy.
* Adjusted condition timeouts to smaller values due to usage of gettimeofday()
and rework of thread signal/wait conditions.
* Adjusted reconnection retries to 60 (every minute for an hour).
* Fix bug where motion will not quit if requested when reconnecting.
* Cruft, feature creep and redundant code removed.
* Consolidated reconnection capability to unified netcam_reconnect function.
* Rework netcam_start logic, minimize startup variables.
* Rework netcam_stream_read and netcam_single_read logic.
* Minor changes to netcam_next logic.
* Fix bug in streaming camera without content-length, recent mod broke.
* Fix bug in startup of single image reads without content-length.
* Motion Guide refactored completely for 3.2.1 with better web navigation and
auto generation of pages. Makefile updated so that the Motion TWiki topic
MotionGuideOneLargeDocument is fetched when updating the guide and making
releases. (Kenneth Lavrsen).
snap13
* Removed the debug_parameter option which had no use. Programmers can still
use it because the code is only commented out. This change required a small
update in the code that rewrites motion.conf so that a remote control command
to write the config files still adds a text header for the thread section at
the end of motion.conf (Kenneth Lavrsen).
* Changed the default values for a few options: quiet on, webcam_maxrate 1,
threshold_tune off, webcam_quality 50 (Kenneth Lavrsen).
* Changed some cosmetics in the way motion.conf is written (space after #)
(Kenneth Lavrsen).
* Updated the motion-dist.conf to use default values unless there is a reason
not to (Kenneth Lavrsen).
* Fix the compile issue with official ffmpeg packages from debian (Angel
Carpintero).
* More Netcam Stability Fixes (snap12-post1) (Christopher Price)
* Newrote url parser, better syntax checking and error handling of urls.
* Userpass now allowed in url (http://user:pass@example.com/).
Netcam_userpass has precedence, it will override a userpass embedded in
the url.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamStabilityPatch
snap14
* Added basic authentication to the http control interface introducing new
config option control_authentication. (Angel Carpintero)
* Fixed memory leak when restarting Motion from http control (Angel
Carpintero).
* Small improvement in configure script for Debian (Angel Carpintero)
* Added the ability to clear an option to off (bool), 0 (int) or undefined
(string) by submitting blank entry field in the http control interface.
(Angel Carpintero).
snap15
* Added new feature which shows the fixed mask (in addition to the smart mask)
in bright red on the Motion type images (Joerg Weber).
http://www.lavrsen.dk/twiki/bin/view/Motion/FixedMaskFileOnMotionImagesPatch
* Added new feature. When you specify a mask file in the config file and start
Motion, and the mask file does not exist, Motion will create a new clear
(white) mask file for you in the right size. Then it is easy to simply
open the file in your favourite paint program and add the masking in black
(Joerg Weber).
http://www.lavrsen.dk/twiki/bin/view/Motion/FixedMaskFileOnMotionImagesPatch
* Fixed a bug in the low_cpu feature where cpu load increased instead of
decreasing because the framerate calculations were completely wrong. This was
an old bug introduced in 3.0.1 (Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x04x24x205933
* Improved the auto-brightness algorithm. When auto-brightness is enabled
the brightness option becomes a target value for the brightness level.
This should also close a bug report (Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x26x195358
* http interface small fixes (motion-3.2.1_snap14-small-fixes 1.1) incl
Add 'back' link to response_client errors (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Started adding tuner_number as option. This is not fully implemented. First
code is added and rest will be done in next snap. (Kenneth Lavrsen)
snap16
* Made the http control interface more RFC compliant (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x180550
* Made the http control HTML responses nicer to look at as sources and
therefore easier to debug errors (Kenneth Lavrsen).
* Code style cleanup of webhttpd.c (Kenneth Lavrsen).
* Fixed compatibility problem with Palantir. Fixed by making output more
compatible with RFC (\r\n). Original fixes by Roberto Spadim and Angel
Carpintero. However this fix made Firefox flicker even more than it normally
does. Final fix which works in both Palantir client, Firefox and Cambozola
was made by Kenneth Lavrsen. This closes the following bugs:
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x205307,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x07x042849
snap17
* Fixed small bug when pre_capture buffer is resized during operation.
(Joerg Weber).
* In httpd control code: Fixed RAW syntax following API specs. (Angel
Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Added new conversion specifiers: %D (diffs), (noise) %K (motion center x),
%L (motion center y), %i (locate width x) and %J (locate width y). These
changes also required a refactoring of the alg_locate code. This change
is part of the implementation of a generic tracking feature and it enables
implementing external programs that can perform simple prediction features.
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/ExtendReplaceConversionSpecifiersDiscussion
http://www.lavrsen.dk/twiki/bin/view/Motion/GenericTrackingPatch
* Fixed a bug in switchfilter which caused motion detection to not work
when the feature was enabled (Kenneth Lavrsen).
Release
* Change the working directory to / in daemon mode. This way you don't have
to kill motion to umount the partition from where you start it. (Christophe
Grenier)
http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch
* In netcam-wget header_get() didn't always in add a \0 string terminator.
This was fixed by Christophe Grenier
http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch
* Fix for Unknown content type with lumenera cameras (Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x06x174416
* MotionHttpControl Patch motion-3.2.1_snap18-pre1 v,1.0 19 May 2005.
Fixed some HTTP response codes and added header copyrights. (Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Implemented pthread fix by Christophe Grenier.
http://www.lavrsen.dk/twiki/bin/view/Motion/PthreadFixPatch
* Fixed problem compiling "ffmpeg reports only YUV420 is supported" when
ffmpeg is a recent CVS version. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x22x213229
* Man page updated. It is now semi-autogenerated in the Motion TWiki
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionOptionsAlphabeticalManpage
* Bug fix in netcam code: Sometimes motion try to free an invalid memory area
(Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x21x105335
* Small configure fix related to --without-v4l (Angel Carpintero)
* Fixes for http control HTML code (Angel Carpintero)
* Added init script to RPM (Angel Carpintero)
3.1.19 Detailed changes for 3.1.19 snapshot releases since 3.1.18
snap1
* Fixed bug which caused Motion 3.1.18 fail to save timelapse mpegs when
setting ffmpeg_timelapse = 1 (fixed by Michael Reuschling)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x31x211756
* Fixed several bugs in new netcam code introduced in 3.1.18
(Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x16x030209
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x01x071546
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x03x035918
* Added patch that enables Motion to work with vloopback version 0.94
and kernel 2.6.10+. (patch by William M Brack).
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionAndVloopbackVideoDotCPatch
snap2
* Following bugfixes all by Angel Carpintero
* Netcam code: Change printf() to fprintf().
* Netcam code: Cleanup memory netcam (netcam.c , motion.c ).
* Netcam code: Redesign of reconnection feature.
* Configure: Added debug , conditional compile of xmlrpc-c
* Fix a non allocated pointer to be freed.
* Added fix to BugReport2005x02x11x170019
* Added fix to BugReport2005x02x11x150802
snap3
* Bugfixes by Angel Carpintero
* fix motion.spec, motion.spec.in
* typo in configure.in , configure.in.freebsd
* fix version number
3.1.18 Formal Release - Summary of changes since 3.1.17.
* Removed the Berkeley mpeg feature
* New brightness, contrast, hue and saturation options.
* Makefile with automatic check of dependencies and nicer user output.
* Improvement of the rotate feature.
* Added the new smart mask feature.
* Added a new config option --without-optimizecpu which disables CPU
specific compiler optimizations.
* Configure help texts improved.
* Added the pwc-10.0.5 version of pwc-ioctl.h. Also good for pwc 10.0.6.
* Changing rotate, height and width via xmlrpc no longer affects the
running program. This change is done because many internal data structures
and memory allocations cannot handle change of image dimensions/size.
* Enabled use of leading spaces when changing text_left and text_right via
xmlrpc by using quotation marks if the value starts with a leading space.
* Speed optimizations for dilate and labelling code.
* Significant speed improvement in the motion detection algorithm.
* Motion images are now gray scale instead of green. Smartmask is shown
in red.
* Implemented FreeBSD auto-detection CPU/ARCH fix.
* Removed the never finished prediction feature.
* Implemented a major improvement of noise_tune.
* Implemented ffmpeg-0.4.9 support.
* Default for option 'ffmpeg_video_codec' is now mpeg4. mpeg1 is now only
supported with the old ffmpeg-0.4.8.
* Option 'output_normal' value set to 'first' makes Motion only save a
jpeg from the first motion detected picture frame in an event.
* Implemented Streaming Netcam Without Curl which enables connecting to
network cameras both with single jpeg frame mode and streaming mjpeg
mode. This enables much higher framerates with Netcams.
* Corrected a small error in the usage help text
* Improved the help and doc texts for config option night_compensate.
* Improved the signal handling of ctrl-C and kill.
* Implemented a POSIX compliant SIGCHLD signal handler to avoid floods of
warnings and script zombies in some RedHat versions.
* Reporting of the changes of noise detection level is now only displayed
in the console (daemon off) when the always_changes option is enabled.
* Made the code in xmlrpc more correct and robust (handling of select()).
* Fixed several bugs in the timelapse feature.
Detailed changes for all 3.1.18 snapshot releases since 3.1.17
snap1
* Removed the Berkeley mpeg feature (code commented out)
* Implemented a bugfixed version of
http://www.lavrsen.dk/twiki/bin/view/Motion/BrightnessContrastPatch
Released as snapshot for developers to merge other patches.
The snap1 is not recommended for normal use.
snap2
* Improved the Makefile with automatic check of dependencies and
nicer output for the user.
http://www.lavrsen.dk/twiki/bin/view/Motion/MakefileWithAutoDependencies
* Implemented first phase of the rotate patch. Need to fix the storage
method for image height and width
http://www.lavrsen.dk/twiki/bin/view/Motion/RotatePatch
snap3
* Implemented phase 2 of the rotate patch
* Added brightness patch options to motion-dist.conf
snap4
* Added the new smart mask feature. It is working but it is still under
development. It currently outputs an extra smart mask timelapse movie
when the normal timelapse is enabled. This will be removed in the final
version. http://www.lavrsen.dk/twiki/bin/view/Motion/PatchSmartMask
* Added a new config option --without-optimizecpu which disables the
CPU specific compiler optimizations introduced with the rotate phase 2
patch. The purpose of the new option is to enable a packager to build
an RPM or deb package which is not tied to a specific CPU type.
* Man page updated with the new brightness and smart mask options.
* Configure help texts improved.
* Added the pwc-10.0.5 version of pwc-ioctl.h.
* Changing rotate, height and width via xmlrpc no longer affects the
running program. The user can change the options and write them to the
config files and then restart motion. This change is done because many
internal data structures and memory allocations cannot handle change
of image dimensions/size.
* Fixed the problem with leading spaces of text_left and text_right
getting lost when saving with xmlrpc. For text_left and text_right
Motion now puts the string in quotation marks if the value starts with
a leading space.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x24x135840
snap5
* Implemented the November 10 update for smartmask
* Started resolving some of the signed vs unsigned char problems. There
is still much to do here. snap5 is released to make the developers up2date.
snap6
* Merged in the DilateNineSpeedPatch
http://www.lavrsen.dk/twiki/bin/view/Motion/DilateNineSpeedPatch
* Changed a few image char definitions to unsigned char. Still many to fix.
snap7
* Implemented the 15-Nov-2004 Smartmask patch which removed the smartmask
debugging timelapse code and instead adds the smartmask info to the
motion images and jpegs as red areas. Normal motion is shown in black
and white (greytones). This concludes Joerg Webers smartmask feature.
The patch is now in ReleasedScheduled state for 3.1.18.
* Implemented Angel Carpintero's FreeBSD auto-detection CPU/ARCH fix.
* Merged in Per Johnsson's DilateFiveSpeedPatch
http://www.lavrsen.dk/twiki/bin/view/Motion/DilateFiveSpeedPatch
* Removed the prediction feature from the code (commented out for now).
* Included fix by Jan X.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x11x13x202132
snap8
* Implemented an improvement of Smartmask so that the mask is cleared when
the smart_mask_speed is set from a non-zero to zero (by Joerg Weber)
* Implemented an improvement of noise_tune with smart mask (and probably
also in general) (by Joerg Weber)
* Improved the picture control function so that cameras are only probed
when needed to avoid USB errors. (Kenneth Lavrsen)
* Implemented new ffmpeg patch (Per Jönsson)
http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegPatch049
* Implemented new preview patch (Joerg Weber)
http://www.lavrsen.dk/twiki/bin/view/Motion/PreviewShotsPatch
* Removed commented code from obsolete Berkeley and Prediction features
* Implemented labelling speed patch (Per Jönsson)
http://www.lavrsen.dk/twiki/bin/view/Motion/LabelingSpeedPatch
snap9
* Implemented Streaming Netcam Without Curl which enables connecting to
network cameras both with single jpeg frame mode and streaming mjpeg
mode. This enables much higher framerates with Netcams. (by Christopher
Price and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/StreamingNetcamWithoutCurl
* Implemented a significant speed improvement in the motion detection
algorithm (by Per Jönsson).
http://www.lavrsen.dk/twiki/bin/view/Motion/AlgDiffStandardMmxPatch
* Fixed a small bug which caused in jumpy mpeg1 videos with ffmpeg 0.4.8.
snap10
* Corrected a small error in the usage help text
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x05x174139
* Improved the help text for config option night_compensate in docs,
conf.c, motion man pages and config file.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x103939
* Improved the Netcam patch (Angel Carpintero)
http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/
(pre2 patch fixes problem with not detecting Content-length and segfaults
in netcam)
* Improved the signal handling of ctrl-C as suggested by Per Jonsson
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x181426
* Implemented a POSIX compliant SIGCHLD signal handler as replacement for
the traditional signal(SIGCHLD, SIG_IGN) which can cause floods of
warnings in some RedHat versions. (Angel Carpintero and Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x26x134906
* Changed the reporting of the changes of noise detection level so that
it is only displayed in the console (daemon off) when the always_changes
option is enabled. (Kenneth Lavrsen)
* Changed the ffmpeg>0.4.8 = no mpeg1 gcc warning message so that it is
clear to people that it is information and not an error message.
snap11
* Changed allocation of despeckle buffer to avoid a segfault when using
a netcam where the image is wider than defined in motion.conf width.
* The noise tune value displayed in the upper left corner along with
number of changed pixels is no longer displayed (was there for debugging).
* Improved the Netcam patch (Angel Carpintero)
http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/
(pre3 reconnection feature added)
* Changed the SIGCHLD handler introduced in snap10 so that it is a shorter
and faster function. Disabled this handler in the xmlrpc thread as this
caused unnecessary loops of cpu cycles. Additionally made the code in
xmlrpc more correct and robust (handling of select()) (Kenneth Lavrsen)
* Fixed a bug in the timelapse feature. Both the rollover events of the
timelapse video and timelapse shots could be missed if the CPU load was
very high or the time was changes by ntp. Motion will now catch up a few
seconds later if this happens. Also fixed the code for monthly rollover
(Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x23x133554
Release
* Fixed a bug in the timelapse feature. Both the rollover events of the
timelapse video and timelapse shots could be missed if the CPU load was
very high or the time was changes by ntp. Motion will now catch up a few
seconds later if this happens. Also fixed the code for monthly rollover
(Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x23x133554
* Small improvement in timelapse feature so that an image is added when
the new mpeg is created and not waiting till the following timelapse
(Kenneth Lavrsen).
* Small improvement so that the timelapse rollover happens on the hour
and not one timelapse past the hour (Kenneth Lavrsen).
3.1.17 Bugfix release
snap1
* Removed annoying debug syslog message (input: #)
* Implemented Peter Ilin's patch for handling vloopback pipes better
when Motion receives SIGTERM or SIGHUB.
* Implemented fix for compiling errors when building the FreeBSD version
without bktr support.
(http://www.lavrsen.dk/twiki/bin/view/Motion/FreeBSDFixCompile)
* Commented out many unnecessary syslog debug only messages. The commented
out code was first patched by Mike Lees patch related to syslog causing
instability and hanging motion processes.
(http://www.lavrsen.dk/twiki/bin/view/Motion/SyslogEventPatch).
* Included Kalle Andersson's patch that ensures that Motion detaches from
the stdin and stout devices so that a secure shell that was used to start
Motion in daemon mode does not hang when you exit the shell.
(http://www.lavrsen.dk/twiki/bin/view/Motion/DaemonDetachFromSTDIO)
snap2
* Implemented a new lightswitch feature so that is now triggers lightswitch
detected based on the percentage of pixels set by the lightswitch option which
is now an integer instead of a boolean. When lightswitch is detected motion
skips 5 frames to allow camera to settle.
* Fixed a bug in the autobrightness function.
* Fixed a bug in netcam_start() - wrong imgs.size calculation
Release
* Swapped width and height parameters in some functions. This has no influence
on program execution. Just a cosmetic change.
3.1.16 Bugfix release
snap1
* Fixed a configure error related to xmlrpc.
* Fixed a bug in the SQL code related to file type.
Release
* Fixed a segfault problem in alg.c related to the locate feature.
* Made motion more robust to whitespace in its config files. It now
accepts CR LF (DOS/Windows) and whitespace only lines no longer
gives warning messages in syslog. Also cleaned up the conf.c
function structure a little bit.
3.1.15 Summary of changes from 3.1.14 to 3.1.15.
New features:
* ffmpeg now supports mpeg4 and msmpeg4 in addition to mpeg1. Timelapse
mpegs are always made with mpeg1 because this allows appending to
existing mpeg when motion or timelapse is restarted. This also meant
a change of the configure option --with-libavcodec to --with-ffmpeg
which now needs to point to the parent directory that holds libraries.
* configure has been significantly improved so that most people can
simply run ./configure, make and make install with no parameters and
all libraries should be detected automatically if they are installed
like in most distributions.
* rotation feature added which allows the camera to be mounted upside
down or in portrait.
* SQL (Postgres and MySQL) table format has been changed. The time
related fields such as minute, hour, day, month and year has been
replaced by a timestamp field called 'time_stamp'. Additionally a
field called 'frame' has been added so that each file can be correctly
sorted based on time_stamp and frame (picture frame number within one
second). An additional field called 'text_left' stores the displayed
text given by config option 'text_left'. And a field 'camera' has been
added which stores the thread number.
* The %v (event) prefix has been removed from the default filename
for timelapse mpegs. It makes little sense to have the current event
number as part of the timelapse filename as default.
* A new feature called 'labeling' was added which is a great enhancement
to the motion detection algorithm. It ensures that only the largest
area of movement is included in the detection and it prevents noise
and wind from making false detection. It should also make tracking
work better.
* Angel Carpintero ported motion and it's main features to freeBSD.
The freeBSD is still very much beta and because of limited access to
hardware we need more people to test the various features.
* Motion is now also released as an RPM with both mysql, postgres,
libcurl and ffmpeg support.
Bugfixes:
* Fixed the problem with default strings being written to thread
config files when using the XMLRPC command motion.conf.write.
* Implemented improvement of vid_putpipe so that Motion does not spend
time writing to a vloopback device which is not there.
* Introduced reporting to syslog of writing to vloopback fails.
* Memory clean-up improvements when Motion exits normally.
* Fixed a small bug related to the filename given for onffmpegclose.
* Provided more improvements of error handling.
* Added additional error reporting to console.
3.1.15 Snapshot releases
snap1
* Fixed the problem with default strings being written to thread
config files when using the XMLRPC command motion.conf.write.
snap2
* Implemented Ryan Ayers improvement of vid_putpipe so that Motion
does not spend time writing to a vloopback device which is not there.
Also introduced reporting to syslog of writing to vloopback fails.
* Ryan Ayers improved configure's ability to find custom installations
of ffmpeg.
* Ryan Ayers provided misc. cosmetic changes in the code.
* Ryan Ayers rewrote the ffmpeg functions completely added support for
new codecs/formats mpeg4 and msmpeg4. mpeg1 was improved also.
snap3
* Implemented Ryan Ayers simplified ffmpeg patch where 10 ffmpeg
functions are reduced to 5. The memory leak related to an unused
filehandle has been resolved.
* Kenneth Lavrsen solved the timelapse related .mpeg.mpeg filename
error.
* Kenneth Lavrsen removed the memory leak in ffmpeg.c related to the
use of strdup without a free.
snap4
* Implemented Ryan Ayers snap3 based ffmpeg patch that cleans up the
code significantly, forces timelapse. The list of improvements:
* Forces timelapse to mpeg1 for the time being.
* Removes FILE* f declaration in ffmpeg.h since we no longer need it.
* Removes all picture_buf references. This was carried over from
output_example.c in ffmpeg-0.4.8. However, we don't need it.
That is allocating space for picture->data, but motion already
takes care of this for us with the newimg variable.
* Removed some old commented code ... tmpfilename, picture_buf stuff.
* Included Angel Carpintero's memory clean-up improvements when Motion
exits normally.
snap5
* Added Per Jönsson's rotate feature. When set to non-zero some extra
CPU time is used for the rotation.
* Kenneth Lavrsen changed the ffmpeg code so that mpeg1 files are
created using the libavcodec method and mpeg4 and msmpeg4 are created
using the new libavframe method in ffmpeg.
* Kenneth Lavrsen added seconds and frame fields to the database feature.
This means that users must add these two fields to the table "security"
in existing databases when upgrading to 3.1.15.
* Kenneth Lavrsen removed the %v (event) prefix from the default filename
for timelapse mpegs. It makes little sense to have the current event
number as part of the timelapse filename as default.
snap6
* Kenneth Lavrsen fixed a small bug related to the filename given for
onffmpegclose.
* Joerg Webers added the new labeling motion detection feature.
* Angel Carpintero provided more improvements of error handling.
snap7
* Kenneth Lavrsen changed the configure option --with-libavcodec to
* --with-ffmpeg and updated Guide and man pages and text in code and
config file to match the new shared library way of using ffmpeg
* Angel Carpintero ported motion and it's main features to freeBSD.
The freeBSD is still very much beta and because of limited access to
hardware we need more people to test the various features.
* Angel Carpintero created an updated specs file that enables Kenneth
to build RPMs of Motion.
snap8
* Kenneth Lavrsen added the new fields to the SQL security table
camera (thread number), text (text_left) and time (timestamp).
* Angel Carpintero improved error handling for the webcam functions.
Release
* Kenneth Lavrsen simplified the sql functions (1 instead of 3)
and ensured that the text field is not assigned when text_left is
an empty string. This allows for the field to be auto defaulted.
* Added additional error reporting to console.
3.1.14 2004 May 31
* Included Ian McConnell's fix for snapshots when using the
"lastsnap" filename.
* Fixed the bug in advanced filename and text feature when event
numbers go higher than 99.
* Included Angel Carpintero's improvement of configure reporting of
missing shared libraries (Kenneth Lavrsen improved it a little
further).
* Included Ian McConnell's timelapse close mpeg file when set to zero
patch.
* Changed motion-control to make a proper output from motion.conf.list.
* Renamed ffmpeg_timelaps to ffmpeg_timelapse (we change now or never)
* Corrected man page (\n).
* Added setting access rights to 644 (755 for configure) when doing
make dist.
* Small improvement on xmlrpc-api.html document.
* Included Angel Carpintero's fix for building motion without ffmpeg
(missing #ifdef round newly added ffmpeg timelapse code)
* Fixed missing init of viddev.frequency causing VIDIOCGCHAN errors.
* Included Angel Carpintero's snap2 based patch for improving configure.
XML-RPC changes of threshold and noise_level are now being used as
long as threshold_tune and noise_level are not enabled.
* Enabled the round robin feature to also work by changing frequency on
the same device and same input.
* Fixed the pre_capture feature so that it also stores the jpegs properly.
* Fixed the ffmpeg_timelapse feature so that the calculated time is
correct and the current image is used instead of an old image from
position 0 in the pre_capture ring buffer.
* Fixed ffmpeg routines so that also graytone images can be
pre_captured and used with ffmpeg_timelapse.
* Fixed the position of the incrementing of shots in the motion_loop
so that it is correct before any functions use it.
* Added quite many comments to the code to make it easier to maintain
(more comments will be added).
* Removed some old debugging printf's that were displayed in non-quiet
mode.
* Changed to snapshot feature from being alarm driven to being timer
driven. This means that each thread can have its own interval
value. The XML-RPC motion.action.snapshot still works. The SIGALRM
method has been changed so that all thread that have the
snapshot_interval non zero will take a snapshot when being signaled
with SIGALRM. A negative value for snapshot_interval will activate
the SIGALRM trigger but not the timing interval.
* Implemented ffmpeg_timelapse_mode feature by James A. Russo.
* Implemented RH (sysV) and Debian type control scripts for /etc/init.d
by Angel Carpintero.
* Implemented enhanced SQL features by James A. Russo. This adds logging
of mpeg and prediction events to MySQL/PostgreSQL.
James patch also replaced the mime file types by a more refined
filetype scheme that allows more refined control for SQL and other
future control.
* Kenneth Lavrsen changed the enhanced SQL config from single sql_mask
option to 5 sql_log_ options for more user friendly control.
* Implemented Daniel Sterlings minimum_motion_frames feature.
* Plugged a memory leak in the pre_capture feature.
* Changed the behaviour of onsave back to original mode where also
snapshots causes onsave command to be run.
* Fixed a bug in frequency setting of V4L device.
* Renamed snapshots_interval and snapshots_filename to snapshot_interval
and snapshot_filename.
* Changed the webcam_port value to 0 in motion-dist.conf to avoid that
people get segmentation faults when having 2 or more cameras and
* webcam_port not set in the thread config files.
* Implemented Daniel Sterlings improved handling of config strings. This
plugs the memory leak when changing string type options via XML-RPC.
* It also makes the memory handling more elegant/optimal and finally
it now allows strings to be as long as allowed by the environment
variable PATH_MAX.
* Kenneth and Daniel added many comments to motion.c and conf.c.
* Daniel Sterling made the XMLRPC able to handle errors without crashing.
* Daniel Sterling and Kenneth Lavrsen added a feature that checks for
two threads having the same webcam_port. If this is the case the last
thread gets its webcam disabled and a warning message is written
to console and syslog.
* Implemented Daniel Sterling's fix for a small calculation error in
alg_diff_fast().
* Small improvements in messages sent to console and syslog during
startup of Motion.
3.1.13
* Included Ian McConnell's despeckle feature (including extra
improvement of the original patch).
* Changed the name of motion.conf to motion-dist.conf to avoid
make install overwrites your perfectly OK working motion.conf
file when you re-install.
* Updated the motion.spec.in. Not tested yet.
* Included Matthias Kilian configure patch which enables configure
to find and use a dynamic library of ffmpegs libavcodec.so .
* Included Steffen Haas improved on screen display patch
(plus some extra characters including a real space).
* Changed the parsing of the motion.conf and thread.conf files so
that spaces are now allowed. This also enables using a space in
the user text. For XML-RPC you put text in "" if you need spaces.
* Changed the XML-RPC function motion.conf.write so that undefined
config options gets written into the main motion.conf file with
the help line and the option prefixed by a '#'. Example
# netcam_url value.
* Added Mike Lees onffmpegclose feature which enabled a command to
be executed each time a file generated by ffmpeg is closed.
* Added Daniel Sterlings night compensate fix.
* Added Angel Carpintero's improved configure process which
automatically detects presence of xmlrpc-c and ffmpeg and makes
the Makefile accordingly.
* Included Ian McConnell's flexible on screen display feature and
flexible strftime based path names.
* Changed conf.c so that xml-rpc command motion.conf.write creates
a much more user friendly motion.conf file.
* Modified Ian's on screen display putting back the config parameter
(draw)text_changes. If enabled the number of changed pixes are shown
in the upper right corner of the image.
* Removed the snap_override feature and reduced the oldlayout to an
Berkeley mpeg_encode feature only renaming it to
berkeley_single_directory. Instead the flexible filename
feature now has oldlayout as default and the "new" directory layout
specified in the motion.conf file.
* Motion.conf sequency re-arranged so the important things comes first.
* Changed names of many options to be more user friendly.
* Renamed the options for displayed text to text_right, text_left and
text_changes.
* Change the parsing of config files so that the argument can be in
quotation marks (" or ') allowing leading spaces for the text_left
and text_right options. This means that you can place the text
anywhere on the picture by using spaces and new lines \n.
3.1.12
* Removed vid_keepalive
* Added reentrant warning to codestyle answer in FAQ.
* Rewrite of PWC tracking code.
* Tracking is inactive by default.
* Motion-control action.quit fix.
* Netcam with mask fixed.
* Added tracking options to xmlrpc interface.
* Ignore SIGPIPE (crashes webcam code).
* Changed fast algorithm to imgs.size/10000 steps.
* Renamed prerecord to pre_capture to be more consistent with
post_capture.
* Redone pre_capture completely.
3.1.12
rc1
* added pre-record. with configparameter n_prerecord one can set
the number of frames that should be recorded *before* the
motion starts. for this feature to work, you need to set
post capture to at the value given for n_prerecord! also:
n_prerecord must be at least 1
3.1.11
* found 2 memory-leaks (two 'FILE *' were not closed) in the
webcam-interface
* started working on support for logitech sphere/orbit tracking
fixed bug in tracking routines (would sometimes use garbage
coordinates)
* added max-number-of-frames-limit to the webcaminterface (patch
by Jeroen Vreeken)
3.1.10
* added Kenneth's fixes for ffmpeg instability and the problem
with the "ioctl(VIDIOCGCHAN): Invalid argument" error
* small optimisation of rgb24toyuv420p (about 6% faster) so
for certain video-devices things might be a little faster
* optimized alg_diff_fast: about 50% faster
made it compile again with 2.6.0-test9
* noise tuning is now only done when there's no motion!
* noise is resetted to the median of the tuned value and the
configured value as soon as no motion is detected
* fixed includes for mysql/psql (thanks Felix Finch!)
3.1.9
* motion now logs to syslog instead of stderr, that way it is
still possible to see what is going wrong when motion runs
as a daemon process.
* motion will now exit nicely when memory allocation fails
instead of segfaulting
* low_cpu now takes the number of frames per second to process
when no motion is detected instead of on/off
* "quick motion detection" is now only performed when motion
is in "idle" mode.
* added Kenneth's patch: motion with ffmpeg-0.4.8 now compiles
again!
* small optimisation: if a file is created, the path is now
only recreated when it did not already exist.
3.1.8 is the last version release by Jeroen Vreeken.
New maintainers are: Kenneth Lavrsen (http://www.lavrsen.dk/) and Folkert
van Heusden (http://www.vanheusden.com/).
3.1.8 Froze 3.1.8
Can't use the same variable name twice in ppm code...
3.1.7 Froze 3.1.7
Added codingstyle answer to faq
yuv to rgb conversion for ppm images.
Webcam close and denial of service fixes.
Renamed roundrobing to roundrobin.
Don't try to compile in xml-rpc support when not defined.
3.1.6 Froze 3.1.6
Added output_all option for continuous file saving.
Fixed picture saving on rgb files.
Fixed off-by-one error in framerate calculation.
3.1.5 Froze 3.1.5
Added motion.action.quit to xml-rpc api.
Changed v4l code to convert rgb to yuv420p and
removed support for rgb24 from all other files.
Removed read() support from v4l code.
Changed netcam code to output yuv420p images.
Fixed libavcodec.h include in ffmpeg.h
3.1.4 Froze 3.1.4
Fixed ffmpeg segfault.
Removed motion.conf* from install section in Makefile
Fixed mail option.
Fixed conf list hang.
3.1.3 Froze 3.1.3
Made timelaps interval variable.
Added motion.conf.write to xmlrpc API
Motion can write its own config file.
Changed xmlrpc API to use strings for all option types.
Added comment fields for config options.
Added additional settings for ffmpeg.
3.1.2 Froze 3.1.2
Use SO_REUSEADDR on http listen sockets.
Added control_localhost and webcam_localhost options for
binding servers to the loopback interface (default=on).
xmlrpc-httpd now uses nonblocking io allowing for multiple
connections to be handled at the same time.
Set default for 'threshold_tune' and 'noise_tune' to yes.
Added threshold_tune config option.
3.1.1 Froze 3.1.1
Sync with 3.0.4
Added xmlrpc motion-control.
Changed description output to match input format.
Added Server and Connection fields to the webcam code.
Added threshold_tune????? for autotuning the max_changes level.
Added noise_tune option for autotuning the noise level.
Sync with 3.0.3
3.1.0 Froze 3.1.0
Added predict evaluation.
Added predict_description config option.
Started with predict functions.
Forked from 3.0.2
3.0.2 Froze 3.0.2
Changed strtok() call for argument in conf.c arguments with
'=' in them are now allowed.
3.0.1 Froze 3.0.1
Added 'dist' and 'updateguide' options to Makefile.
Added motion_guide.html to documentation.
Fixed mpeg names when using oldlayout.
Updated manpage.
Added check to low_cpu frame_delay calculation for a maximum
of 1 second.
3.0.0 Froze 3.0.0
Added string.h to ffmpeg.c
2.9.12 Froze 2.9.12
Added ffmpeg_bps option.
Fixed devpipe instead of devmpipe in motion.c
2.9.11 Froze 2.9.11
Added all config files to examples in Makefile
Fixed YUV422 converter for real :)
Use 2 as minimum fps for ffmpeg (less produces a floating point
exception)
2.9.10 Froze 2.9.10
Fixed YUV422 to YUV420 converter.
Fixed oldlayout for ffmpeg files.
Added -lz for mysql.
Removed TODO from makefile.
2.9.9 Froze 2.9.9
Fixed leaks in webcam.c
Fixed mask image use (imgs.motionsize instead of imgs.size)
Don't try to detect motion with threshold set to 0.
2.9.8 Froze 2.9.8
Always try to remove snapshot link.
Cleaned up config file.
Cleaned up ppm code, now loads pgm greyscale files.
Fixed max_mpeg_time segfault in ffmpeg close event.
Added -lm for libavcodec.
Updated FAQ.
Added timelaps option.
Fixed SIGHUP handling.
Added /usr/local/mysql/include and /usr/local/mysql/lib to
configure script and fixed bogus error message.
Fixed snapshot location (missing filepath)
2.9.7 Froze 2.9.7
Fixed some more #endif statements
Use cnt->lastrate for ffmpeg framerate.
Fixed ffmpeg code for RGB and GREY images.
Added YUV422 support (converted to YUV420P)
Added roundrobing on frequency.
2.9.6 Froze 2.9.6
Tweaked autobrightness mode.
Added webcam_maxrate option.
Reversed image and boundary in webcam code.
Added framerate control.
Added webcam_motion config option.
New frame_limit code.
Fixed include files for ffmpeg.h
Code cleanup.
Removed SIGHUP handler.
Removed draw on motion images.
Added speed and stepsize options to tracking code.
Reversed the night compensation.
Removed ffmpeg error in max mpegtime code.
Fixed #endif statements in header files.
Changed 'deamon' to 'daemon'
2.9.5 Froze 2.9.5
Added missing time.h define in webcam.c
Added 'frequency' option for v4l tuners.
Fixed max mpeg time with ffmpeg encoding
Added path for mpeg_encode (problems with PATH variable)
Fixed deamon mode.
Changed overlay to white on black (more readable).
2.9.4 Froze 2.9.4
Added webcam option.
Moved reference image update before draw()
Added fclose() to put_picture()
2.9.3 Froze 2.9.3
Added GNU license to all file headers.
New netcam code
Fixed snapshot filenames
Use correct image sizes (no more width*height*3)
2.9.2 Froze 2.9.2
Added ffmpeg code (from monitor) for realtime mpeg encoding.
Moved image creation to event.c
Moved put_picture functions to picture.c
Added support for Y plane images (YUV420P and GREYSCALE)
Set default jpeg quality from 50 to 75
PostgreSQL support
Moved event handlers from motion.c to event.c
Introduced new event() functions.
Updated xml-rpc rmon code.
2.9.1 Froze 2.9.1
Fixed lastsnap symlink for new layout.
switchfilter added
post_capture option added
Round robbing_skip added
Added roundrobing_frames option.
2.9.0 Froze 2.9.0
Shuffled everything around and added 'struct context', this
should make motion ready for some serious threading.
Added xml-rpc remote monitoring.
Higher quality settings for mpeg.
Added missing w to getopt in conf.c
Removed c++ style '//' comments, they're EVIL.
Removed some old outcommented code.
2.6.3 froze 2.6.3
Fixed removal of directories after mpeg creation.
Added new netcam code.
2.6.2 froze 2.6.2
Added support for YUV420P palette to video.c, this should fix
problems with the Philips webcams.
2.6.1 froze 2.6.1
Changed system() calls into remove() and symlink().
oldlayout option now also affects snapshots.
Fixed snapshot link name (ppm vs jpg).
Added new snapshot_overwrite option.
Changed directory permissions to 0755 instead of 0750.
Made timestamp overlay better readable, it is now black
or white depending on the back colour.
2.6.0 froze 2.6.0
Updated manpage.
Added iomojo Smilecam support.
Added uninstall option to Makefile
Added config file location to the FAQ.
Made timestamp overlay inverse of original pixel instead of
white.
Created 'struct images' to minimize the passing of arguments
between functions.
Move contents of various header files around to make things
more sane.
Made locate box inverse off original pixel instead of white.
Created alg.c and alg.h, they contain all functions that
have something to do with the motion detection algorithms.
Renamed video.c functions to vid_xxxxx.
Created video.h
Improved stepper tracking code.
Tracking code cleanup, multiple tracking interfaces are now
possible.
Added diff_hybrid, a combination of diff_fast and diff_standard
Introduced some pointer magic in the locate functions.
Added experimental diff_fast.
Fixed SIGHUP handling and blocking.
Added auto_bright option.
2.5.0 froze 2.5.0
Updated documentation, config files, man page.
Freeing 'line' in decompress_jpeg, this fixes a memory leak
when using Axis cameras.
Implemented SIGHUP handler for reloading config files.
Added realconfig option for starting multiple motion processes
or loading alternative config files.
Added 'jpg_cleanup' to the manpage.
Made 'low_cpu' lower on cpu.
Fixed mpeg creation for old layout.
Moved mpeg movies into year/month/day dir.
Remove empty directories when doing jpg_cleanup.
2.4.2 froze 2.4.2
Fixed low_cpu option to be actually low on the cpu.
Fixed missing case for '-w' in conf.c.
2.4.1 froze 2.4.1
New version numbering: ala linux kernel
Fixed includes for track.c
2.4 froze 2.4
Complete rewrite of the tracking stuff... it now uses a serial
stepper motor interface (and actually works!)
Fixed division by zero in adjust_rate code
Added 'low_cpu' option for minimizing the cpu load while not
detecting any motion.
Added 'oldlayout' option for using the old style filenames.
Added automatic location of vloopback inputs by using
/proc/video/vloopback/vloopbacks.
Fixed '-l' option
Uploaded motion to the sourceforge CVS
Alphabetized CREDITS file.
Added 'pal-nc' norm.
2.3 froze 2.3
Started faq.
Included fix for bad 'strtok' in glibc with RH 7.0
Added \t as a delimiter for config files.
Made mpeg creation checks more sane.
2.2 froze 2.2
Fixed segfault bug with filebase creation.
Added creation of mpegs when killed or when getting SIGUSR1
or when max_mpeg_time has been reached.
2.1 froze 2.1
Only create directories if they are going to be used.
Changed SYNC ioctl argument to int in video.c
Added realmotion option
Default config changed:
-gap is now 60 instead of 300 seconds.
-locate is on by default (-l function now works reversed)
-night_compensate is on by default
Added mpeg framerate adjustment.
Added night_compensate for dark pictures.
2.0 froze 2.0
Integrated motion tracking.
Improved lightswitch detection.
Added clipcount in video.c, quickcam should work good now.
1.99 froze 1.99
Fixed memory leak in mpeg creation.
Created put_picture for saving images.
Moved lightswitch code out of main loop.
Merged exec_externcommand, exec_onsavecommand and
exec_onmpegcommand into exec_command
Added onmpeg command.
1.81 froze 1.81
Fixed segfault bug in 'mysql_password' option.
1.8 froze 1.8
Added video loopback for motion pictures.
Location box is now only enlarged for heads, not for feet.
Merged in Axis 2100 camera support.
conf.c now also looks for '~/.motion/motion.conf'.
Moved filebase creation to mkfilebase
Minor improvements.
Loopback feed during lightswitch.
1.7 froze 1.7
Little bit of code cleanup
Splitted motion.c in motion.c and video.c
Changed config.in to correctly detect the mysql libraries and
include files.
1.6 froze 1.6
Motion now has its own mailinglist: motion@frogtown.com
Added MySQL support
Added creation of symbolic link to snapshots
Changed file names of snapshots
1.5 froze 1.5
Added video loopback support for realtime viewing.
Fixed division by zero bug.
Added install option to Makefile.
Fixed bug that prevented external commands, mail and sms from
being called at the first event.
1.4 froze 1.4
Added lightswitch filter
Updated manpage
1.3 froze 1.3
Added minimum gap option.
Changed /007 to /a, not a real change but more sane.
Added mask option.
Added get_ppm for reading ppm files
Optimized greyscale blowup code.
Added 'FORCE_ENCODE_LAST_FRAME' to mpeg params file.
Experimental tracking routines for mini ssc library
1.2 froze 1.2
Fixed some exit(-1) to exit(1)
Updated manpage with the new options.
Added adjustable noise level.
Snapshots can be made in ppm format to.
Fixed signal blocking code (this time right?)
1.1 froze 1.1
Motion now has it own logos!!!!
Added timestamp to picture.
Added ppm output format.
Rewrote locate function, small things (like fish :) don't
disturb the locate option anymore.
Added break for -B option
1.0 froze 1.0
Went back to alarm for automated snapshots
(signals should work with bttv now)
Moved usage to conf.c
Finished manpage
Added check for existing target dir.
Moved diff calculation and image_out generation out of main
loop, adding other methods is easier this way.
Removed sanity check for output formats since someone might
want no pictures at all but only warning messages.
Make snapshots separately from other pictures.
New snapshot names: YYYYMMDDHHMMSS-snapshot
Motion images are encoded to mpeg movies to.
Made movie file names and counter sane.
0.99-2 froze 0.99-2
Added signal blocking during ioctls, bttv should now continue
to work when receiving signals.
Snapshots with no movement don't go to the movies ;)
Also flush buffers when making snapshots.
Fixed for segfault when there is no config file.
(Second time, remember to fix the current version next time)
0.99 Last beta before 1.0
mpeg movies get timestamp in filename
mpeg_encode is now called from within motion
added chdir, filename generation is now much easier
Added check for complete frames with read
0.8 froze 0.8
Added script for mpeg_encode
Moved getopt stuff to conf.c
Added conf.h and conf.c for config file parsing
Added -f option for frame rate limit
Fixed frame nr count (starts at 0 again instead of 1 in v0.7)
0.7 froze 0.7
Added event nr to the filename, settable with -g (gap).
Added genhtml.sh (for creating a static version of show.cgi)
New show.cgi
Option for saving both motion and normal images.
Moved image_ref update into diff for loop.
*a option does not use alarm anymore, bttv card users can use
it to (they just miss the SIGALRM option...)
Added picture size settings for read.
Moved read back in, after mmap failure motion we fall back
to normal reads.
Greyscale camera fix
Added check for capture failure
0.6 froze 0.6
Fixed stupid typo for execute option (forgot the shift)
Added -l option for locating and marking movement
Added buffer flush to keep log files up to date
0.5 froze 0.5
Added contrib dir with infra red script
Option to always output changes between images
Output of motion images
configure script
0.4 froze 0.4
Gave the help text a new look.
Overall cleanup (moving defines to motion.h)
Added -E option for executing external commands
0.3 froze 0.3
New homepage: http://motion.technolust.cx
Fixed -t option (target path)
Changed from read to mmap for bttv cards
Added input and norm selection
Added alarm signal handler and snapshot (-a) option
(does not work with bttv....)
0.2 froze 0.2
Updated README and TODO
Added SMS and mail alert messages
Changed file name format to YYYYMMDDHHMMSS-fn.jpg
(fn=framenumber)
Added deamonize option
Cleaned up includes
Decaying reference picture added
Renamed image1 and image2 to image_ref and image_new
0.1 Initial release
================================================
FILE: CODE_STANDARD
================================================
Formatting rules for Motion code.
Version 2.0 - 15 Jul 2008
Note: To understand them you must view this document with spaces and tabs
visible.
--------------------
RULE 1
Code is generally indented using 4 spaces
Example
/* allocate some memory and check if that succeeded or not. If it failed
* do some error logging and bail out
*/
void * mymalloc(size_t nbytes)
{
void *dummy = malloc(nbytes);
if (!dummy) {
printf("Could not allocate %llu bytes of memory!\n", (unsigned long long) nbytes);
syslog(EMERG, TYPE_ALL, "%s: Could not allocate %llu bytes of memory!",
__FUNCTION__, (unsigned long long) nbytes);
exit(1);
}
return dummy;
}
--------------------
RULE 2
If a line or statement is broken into two lines you will normally want the text
in the 2nd line to align with text in the first line. The alignment is done
using spaces making the code on the following lines appear in a natural way below
the corresponding code above. Use common sense to enhance readability.
Example
/* allocate some memory and check if that succeeded or not. If it failed
* do some error logging and bail out
*/
void * mymalloc(size_t nbytes)
{
void *dummy = malloc(nbytes);
if (!dummy) {
printf("Could not allocate %llu bytes of memory!\n",
(unsigned long long) nbytes);
syslog(EMERG, TYPE_ALL,"Could not allocate %llu bytes of memory!",
__FUNCTION__, (unsigned long long) nbytes);
exit(1);
}
return dummy;
}
Example
cnt->sql_mask = cnt->conf.sql_log_image * (FTYPE_IMAGE + FTYPE_IMAGE_MOTION) +
cnt->conf.sql_log_snapshot * FTYPE_IMAGE_SNAPSHOT +
cnt->conf.sql_log_mpeg * (FTYPE_MPEG + FTYPE_MPEG_MOTION) +
cnt->conf.sql_log_timelapse * FTYPE_MPEG_TIMELAPSE;
Example
char msg[] = "This is a very long message which we would like to break"
"into two lines or more because otherwise the line gets"
"too long to read. We align them below each other for readability"
--------------------
RULE 3
Never use TABS to align anything. A tab may be 4 positions in one editor
and 8 in another. A space is always a space.
--------------------
RULE 4
Functions should be written with this syntax.
GOOD EXAMPLE
/* Comment block
* A comment block should be at least one line saying what the function does.
* It is better to make several lines explaining what it does, what it takes
* for arguments and what it returns. It is a bad idea to try to use tabs to
* align text in the comment block
*/
type function_name(parameters)
{
declarations
declarations
statements
statements
}
Do not split the function declaration into two lines.
Do not put the '{' after the function declaration. Put it on an empty line
right after. Note that this rule is only for functions.
BAD EXAMPLE
type
function_name(parameters) {
declarations
declarations
statements
statements
}
--------------------
RULE 5
Blocks follow K&R.
GOOD EXAMPLE
if ((picture=fopen(cnt->conf.mask_file, "r"))) {
cnt->imgs.mask=get_pgm(cnt, picture, cnt->imgs.width, cnt->imgs.height);
fclose(picture);
} else {
put_fixed_mask(cnt, cnt->conf.mask_file);
printf("Hello world\n");
}
BAD EXAMPLE (even though Kenneth loves this one personally)
if ((picture=fopen(cnt->conf.mask_file, "r")))
{
cnt->imgs.mask=get_pgm(cnt, picture, cnt->imgs.width, cnt->imgs.height);
fclose(picture);
}
else
{
put_fixed_mask(cnt, cnt->conf.mask_file);
printf("Hello world\n");
}
GOOD EXAMPLE
switch (expr) {
case ABC:
case DEF:
statement;
break;
case UVW:
statement;
break;
default:
/* default case */
statement;
}
BAD EXAMPLE
switch (expr) {
case ABC:
case DEF:
statement;
break;
case UVW:
statement;
break;
default:
/* default case */
statement;
}
--------------------
RULE 6
Whitespace.
To ensure that Motion code looks homogeneous and to enhance readability:
1. Do not use a space before a comma
2. Always leave at least one space after a comma
3. Use one space between a block start statement and a '{'
4. Do not use a space between a function name and the '('
5. Use spaces to enhance readability (a non objective rule but at least
think about it)
6. The '*' for pointers should be just before the variable name with no
space.
GOOD EXAMPLES
int function_name(int *par1, int par2, int par3) {
if (var1==2 || var2==3) {
BAD EXAMPLES
int function_name (int * par1 , int par2,int par3){
if (var1==2||var2==3){
--------------------
RULE 7
Comment your code
That's worth repeating - PLEASE, PLEASE comment your code.
We receive far too much code which is completely uncommented and where
variable names are short and say nothing about their function.
Use /* This style of comment for permament comments */ or
/*
* This style of comment for comments which
* require more that one line
*/
Use // this style comments for something you add temporarily while testing and
FIXME type comments. It is much easier to spot the temporary comments this way.
--------------------
RULE 8
Use variable names that say what the variable is used for.
Avoid x,t,vt type variable names.
Use names like image, image_buffer, image_height, output_buffer
Short names like i and j for loop index variable are a known good practice.
Variable and function names are in lower case. Use '_' to separate words.
MACROS are in uppercase.
camelCase (mix of upper and lower case) is not allowed because it creates too
many typos for many two finger typers.
--------------------
BEST PRACTICES
Not rules, but these suggestions make code easier to read.
Use lots of white space and empty lines to group code.
For example, large if statements are easier to read when there is an empty
line before and after them.
Use an empty line before a comment which describes the code lines below.
Always use spaces in statements like
thisvar->thismember>thisvar->thisothermember (bad)
thisvar->thismember > thisvar->thisothermember (good)
if (cnt->event_nr==cnt->prev_event||cnt->makemovie) (bad)
if (cnt->event_nr == cnt->prev_event || cnt->makemovie) (good)
frame_delay=(1000000L/cnt->conf.low_cpu)-frame_delay-elapsedtime; (bad)
frame_delay = (1000000L / cnt->conf.low_cpu) - frame_delay - elapsedtime; (good)
--------------------
This document can probably be enhanced more as time goes by.
Hope it helps developers to understand the ideas.
What happens if I do not follow the rules?
Your code will probably be accepted, but developers will have to spend a lot of
time rewriting the code to follow the standard. If this happens, he may make
a less-than-complimentary remark. Please help the developers by at least trying
to follow the spirit of this document. We all have our coding preferences, but
if Motion is coded in 40 different styles, readability (and at the end
quality) will become bad.
================================================
FILE: COPYING
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
================================================
FILE: CREDITS
================================================
Thanks go to:
Jeroen Vreeken
*** Original writer of this great program! ***
From 3.1.12 these contributions:
* Rewrite of PWC tracking code.
* Motion-control action.quit fix.
* Added tracking options to xmlrpc interface.
* Ignore SIGPIPE (crashes webcam code).
* Changed fast algorithm to imgs.size/10000 steps.
* Renamed prerecord to pre_capture to be more consistent with
post_capture.
* Redone pre_capture completely.
Kalle Andersson
* Created a patch that ensures that Motion detaches from
the stdin and stout devices so that a secure shell that was used to
start Motion in daemon mode does not hang when you exit the shell.
Ryan Ayers
* Implemented improvement of vid_putpipe so that Motion does not
spend time writing to a vloopback device which is not there.
Also introduced reporting to syslog of writing to vloopback
fails.
* Improved configure's ability to find custom installations of
ffmpeg.
* Misc. cosmetic changes in the code.
* Rewrote the ffmpeg functions completely added support for
new codecs/formats mpeg4 and msmpeg4. mpeg1 was improved also.
* Misc. improvement of the mpeg4 feature and new ffmpeg code.
Paul Beltrani
* Implemented a fix/work around to a bug related to building and installing
RPMs on Suse.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x07x14x212356
Michael Newlyn Blake
* For setting up the motion mailinglist and the onsave command.
Krzysztof Blaszkowski
* Removed a duplicate call to jpeg_destroy_decompress already is called from netcam_image_conv.
* Added V4L2 support http://www.lavrsen.dk/twiki/bin/view/Motion/VideoForLinuxTwoDiscussion, (Krzysztof Blaszkowski, Angel Carpintero).
Mathias Bogaert
* Lots of good ideas and the motion logos
William M Brack
* Added patch that enables Motion to work with vloopback version 0.94
and kernel 2.6.10+.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionAndVloopbackVideoDotCPatch
* Added support in configure for athlon64 from
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x190907
(Angel Carpintero and William M Brack)
* Fixed some gcc warnings
* Code cleanup from a valgrind analysis.
* Implemented WebcamShortWriteHandling patch
http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamShortWriteHandlingPatch
* Small code cleanup in motion.c for the variable holding the number of
microseconds since epoch. The old code worked fine but relied on an integer
overflow every 71 minutes. (Bill Brack and Kenneth Lavrsen)
* Complete rewrite of the Netcam code. Should fix many of the reported and
still open netcam bugs.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamCodeRewritePatch
* Improved the error reporting in the Netcam code and did a few minor
corrections and code cleanups.
* Implemented a much easier to use motion_log function which replaces the
calls to printf and syslog. The implementation to actually use this has been
implemented in video.c and the Netcam code files. Rest will be in next snap.
This code change as no impact to the user.
http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch
* Fixed a buf in video.c so that VIDEO_PALETTE_GREY cameras now actually work.
* Re-mplementation of optional Proxy Server for Network Cameras.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamProxyServerPatch
* Added the missing rotate feature in the new netcam code (Billl Brack)
* Netcam error handling improvements and cleanup from Valgrind analysis.
* Added a configure option --with-developer-flags which enables many compiler
warnings that can be used by developers to make code more robust. Not
for normal users building Motion.
* Removed all warnings originating from the motion sources when running
./configure --with-developer-flags.
The modifications were done by the following people: Peter Holik, Bill Brack,
Angel Carpintero and Kenneth Lavrsen.
http://www.lavrsen.dk/twiki/bin/view/Motion/ReduceWarningsPatch
* Fixed error message with unknown config option.
* Enhanced compatibility with Lumenera.
* Moved the motion_loop initialization into a new function motion_init.
* netcam code now waits for the next frame to arrive for a limited period
in order to avoid too many duplicate images.
* Last --with-developer-flags warnings eliminated simply by swapping the
order of the #include statements in the sources (Bill Brack and Kenneth Lavrsen).
* Enhancement to Netcam Code for Connection to Pixord Cameras.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFixPixordBug
* Fix related to connecting to the netcam. From mailing list 23 Dec 2005.
* Fixed problem related to fetching images from Network camera and error
handling when it fails. Motion would end in infinite loops.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x03x10x000151
* Fix conv_uyvyto420p segfault.
* Enhancing the palette selection.
John Bray
* Get current directory to allow write motion.conf properly
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x013419
Andy Brown
* Add swf codec to video creation (on behalf of Bowser Pete).
Ashley Cambrell
* PostgreSQL support, put_jpeg_grey(), webcam bugfixes.
Angel Carpintero
* Improved configure process which automatically detects presence
of xmlrpc-c and ffmpeg and makes the Makefile accordingly.
* Improvement of configure reporting of missing shared libraries.
* Fix for building motion without ffmpeg (missing #ifdef round newly
added ffmpeg timelapse code)
* Implemented RH (sysV) and Debian type control scripts for /etc/init.d
* Memory clean-up improvements when Motion exits normally.
* Provided several improvements of error handling.
* Ported Motion to FreeBSD.
* Created the spec file so that Kenneth can build RPMS when releasing
Motion.
* Improved error handling for the netcam functions.
* Implemented fix for compiling errors when building the FreeBSD version
without bktr support.
* Added a new config option --without-optimizecpu which disables the
CPU specific compiler optimizations introduced with the rotate phase 2
patch.
* Implemented Streaming Netcam Without Curl which enables connecting to
network cameras both with single jpeg frame mode and streaming mjpeg
mode. This enables much higher framerates with Netcams. (with
Christopher Price).
* Improved the Netcam patch (Angel Carpintero)
http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/
(pre2 patch fixes problem with not detecting Content-length and segfaults
in netcam)
* Implemented a POSIX compliant SIGCHLD signal handler as replacement for
the traditional signal(SIGCHLD, SIG_IGN) which can cause floods of
warnings in some RedHat versions. (with Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x26x134906
* Improved the Netcam patch (Angel Carpintero)
http://www.lavrsen.dk/twiki/pub/Motion/StreamingNetcamWithoutCurl/
(pre3 reconnection feature added)
* Fixed several bugs in new netcam code introduced in 3.1.18
(Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x16x030209
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x01x071546
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x03x035918
* Netcam code: Change printf() to fprintf().
* Netcam code: Cleanup memory netcam (netcam.c , motion.c ).
* Netcam code: Redesign of reconnection feature.
* Configure: Added debug , conditional compile of xmlrpc-c
* Fix a non allocated pointer to be freed.
* Added fix to BugReport2005x02x11x170019
* Added fix to BugReport2005x02x11x150802
* Major new feature. XMLRPC is replaced by a simpler http remote control
interface.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Fixed netcam->userpass problem
* Added support in configure for athlon64 from
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x190907
(Angel Carpintero and William M Brack)
* Updated code so Motion again runs on FreeBSD.
* Removed check for memmem from configure.
* Updated http control interface so that an additional check is done
before saving config files.
* Fixed a problem with URLs http://192.168.1.3:8080/0 which did not
work without a trailing space.
* Fix the compile issue with official ffmpeg packages from debian.
* Added basic authentication to the http control interface introducing new
config option control_authentication.
* Fixed memory leak when restarting Motion from http control.
* Small improvement in configure script for Debian.
* Added the ability to clear an option to off (bool), 0 (int) or undefined
(string) by submitting blank entry field in the http control interface.
* http interface small fixes (motion-3.2.1_snap14-small-fixes 1.1) incl
Add 'back' link to response_client errors.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Made the http control interface more RFC compliant.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x180550
* Fixed compatibility problem with Palantir. Fixed by making output more
compatible with RFC (\r\n). Original fixes by Roberto Spadim and Angel
Carpintero. However this fix made Firefox flicker even more than it normally
does. Final fix which works in both Palantir client, Firefox and Cambozola
was made by Kenneth Lavrsen. This closes the following bugs:
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x02x205307,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x07x042849
* In httpd control code: Fixed RAW syntax following API specs.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* MotionHttpControl Patch motion-3.2.1_snap18-pre1 v,1.0 19 May 2005.
Fixed some HTTP response codes and added header copyrights.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl
* Fixed problem compiling "ffmpeg reports only YUV420 is supported" when
ffmpeg is a recent CVS version.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x22x213229
* Bug fix in netcam code: Sometimes motion try to free an invalid memory area
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x21x105335
* Small configure fix related to --without-v4l.
* Fixes for http control HTML code.
* Added init script to RPM.
* Pthread deadlock in motion 3.2.1 fixed.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x05x26x125712
* http lockup bugfixes and ConvertSignalToSigaction only for webhttpd
* alg_draw_location: Use temporary variables to store the values used in
for() loops instead of compute them in each loop
http://www.lavrsen.dk/twiki/bin/view/Motion/ImproveAlgDrawLocation.
* Small speed boost to the function draw_textn (Andrew Hamilton and
Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextnImprovement
* Avoid Cleanup Segfault. Avoid Cleanup Segfault. Allocates filepath using
strdup to avoid segfault is target_dir parameter is not supplied in
motion.conf. Moves out from signal handler the cleanup for pipe and mpipe.
http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidCleanupSegfault
* Changed the configure script so that rpms can be made by normal non-root
users.
* Above change in configure script for 64 bit ffmpeg support also implemented
in the freeBSD configure.
* Webhttp control interface fixed so it also works in FreeBSD.
* Fixed a bug in the webhttpd code related to pan/tilt. Bug was introduced in
snap4 (Angel Carpintero, Kenneth Lavrsen).
* Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg
can increase performance. Especially for machines with very little CPU power.
It only modifies the configure script. If you do not have the libjpeg-mmx
the configure script with ignore this and use the standard libjpeg.
Note that RPMS will be built without this (Peter Holik and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/LibJpegMmx
* Fixed memory leak in webhttpd related to use of strdup.
* Error Logging Enhancement Patch v 1.3 including:
* Populate the motion_log to the whole motion source code.
* Fixed FreeBSD compilation.
* Added the possibility to pass NULL as struct context *
* Removed unused errno variables.
* Fixed errno in rotate.c , set to 0.
* Fixed some errno flags in webhttpd.c and motion.c
* Fixed a bug when not motion.conf is found
* Removed printf from all files
* Fixed the conf_list[] index in motion.c
* http://www.lavrsen.dk/twiki/bin/view/Motion/ErrorLoggingEnhancementPatch
* http-control: Fixed segfault when motion is restarted from command line
( kill -s 1 pid_motion ). Improved control code so Motion can Restart and
Finish 'smoothly'.
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionHttpControl.
* Fixed a bug in the http control code that failed to accept a client
connecting in some systems
* Removed all warnings originating from the motion sources when running
./configure --with-developer-flags.
The modifications were done by the following people: Peter Holik, Bill Brack,
Angel Carpintero and Kenneth Lavrsen.
http://www.lavrsen.dk/twiki/bin/view/Motion/ReduceWarningsPatch
* Fixed small mistake in allocating memory for cnt->imgs.common_buffer.
* http control updated: (null) messages replaced by "disabled", last parameter
in conf/list are displayed correctly and only in Main thread. When motion runs
with only one thread, it displays "No threads".
* http control: selectbox instead of a textfield for changing boolean configs
(Peter Holik and Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/WebhttpEnhancements.
* Added the debian sub directory so that people can build the deb package.
* Sync configure.in.freebsd (adding support for jpeg-mmx, developer-flags and
some cosmetic changes ).
* Implemented --with-developer-flags fixes in FreeBSD code.
* In v4l_start change map from unsigned char * to void * to be ANSI C compliant
with mmap
* http control: Changed disabled to (not defined) when displaying option list.
* FreeBSD Code improvements by Angel Carpintero
* Implemented set/get hue , saturation , contrast and brightness.
* Better support to capture with big resolution ( 640x480 , 768x576 ).
* Update Readme adding information about "how to configure a capture
card and settings" , update packages dependencies .
* Remove support for libjpeg-mmx , motion segfault ( future fix ).
* Cosmetics changes in configure.in.freebsd ( replace --without-v4l by
without-bktr ).
* Cleanup code and fix warnings.
* Implemented fix to configure so that LDFLAGS from the environment are used
when making the Makefile.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x09x15x185558
* Changed configure so that --with-jpeg-mmx is default off as a reaction to
known problems seen when using the jpeg-mmx library.
* Added the %t conversion specifier to show the thread number.
http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadConversionSpecifierPatch
* Fixed bug related to init of mutex in netcam code.
* Netcam_ftp code fixes (Angel Carpintero and Asbjørn Pettersen)
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamWithFtpEnhancements
* Enhanced ffmpeg detection.
http://www.lavrsen.dk/twiki/bin/view/Motion/BetterFFmpegDetection
* New Feature: Motion is now also supported on MaxOSX with similar
feature set as for Free BSD. See README.MacOSX for details how to install
it. (Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/MacOSXPatch
* Added a work-around so people in FreeBSD that uses a capture card
where input 1 is not tuner can use motion if frequency is set -1 in
motion.conf or thread#.conf.
* Fixed misc problems in FreeBSD.
* Update README.FreeBSD
* Fix problems with tuner_device and frequency, now by default is not
defined to allow use any input without problem.
* Replace strndup() by memcpy() in netcam.c
* Merged configure.in.freebsd with configure.in (configure.in.freebsd
deleted)
* Remove a warning when used --without-bktr
* Remove cpu optimization (is broken)
* Fixed http control of pan and tilt.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x12x22x122649
* Fixed sql_mask not initialised correctly
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x09x175603
* Fixed the management of strings from http remote control , setting to NULL
when they are set to "blank" and fixes a problem with despeckle , that didn't
allow to remove labeling action from http remote control.
http://www.lavrsen.dk/twiki/bin/view/Motion/FixStringsAndDisableLabeling
* Fix many typos in comments ( i ran aspell against the code ). Also there's a
fix to free cnt->eventtime_tm when motion exits.
http://www.lavrsen.dk/twiki/bin/view/Motion/FixTypoInComments
* Fix the problem that happens in FreeBSD and Debian Sarge because
version of ffmpeg is LIBAVFORMAT_BUILD < 4629. ( Pete Shipley and Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x01x12x120335
* Updated motion.spec. Changing D_FORTIFY_SOURCE=2 by D_FORTIFY_SOURCE=1 to fix
problem related to building with ffmpeg. (Angel Carpintero)
* Added Tilt support to stepper track.
* Fixed mysql configure auto-detection for x64 systems.
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x03x02x152208
* Fixed a bug that only allowed remote control of max 9 cameras. Now
Motion can present up to 99 cameras in its http remote control interface
(Angel Carpintero based on idea by Chuck Sheehan)
http://www.lavrsen.dk/twiki/bin/view/Motion/WebHttpManyThreads
* Removed annoying debug messages (v4l_set_input really needed ?) in the FreeBSD
version.
* Added new feature: minimum_frame_time which enables capturing at a lower rate
than 2 frames per second (Kenneth Lavrsen and Angel Carpintero)
* Fix segfault when netcam_url has no service ( http , ftp )
* Fixed interlace issue with METEOR_GEO_EVEN_ONLY in FreeBSD
* Fixed possible syntax error in configure related to MySQL
* Put a new global mutex around avcodec_close to avoid problems with not thread
safe functions in ffmpeg
* Put a new global mutex around avcodec_close to avoid problems with not thread
safe functions in ffmpeg.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x04x07x164654
* On FreeBSD configure defines a redundant freebsd for motion. Fixed by replacing
-D__freebsd_ by BSD macro included in sys/param.h for BSD platforms.
(JukkaUkkonen and Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x070417
* For BSD platforms changed to using native pthreads as default and adding
linuxthreads as a optional parameter from configure.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x07x08x071646
* Added process_id_file feature
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x06x06x123003
* Add connection status for all devices available from http web interface.
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2006x11x09x050638
* Improved deb packaging , install the init.d script.
* Reconnect to mysql if connection dropped.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x10x10x081903
* Track pan/tilt support for uvcvideo ( Michal Licko ,Dirk Wesenberg and Angel Carpintero )
http://www.lavrsen.dk/twiki/bin/view/Motion/LinuxUvcTrackingPatch
* Added V4L2 support http://www.lavrsen.dk/twiki/bin/view/Motion/VideoForLinuxTwoDiscussion, (Krzysztof Blaszkowski, Angel Carpintero).
* Added support for V4L2_PIX_FMT_SBGGR8 ( bayer ), V4L2_PIX_FMT_SN9C10X, V4L2_PIX_FMT_MJPEG and V4L2_PIX_FMT_UYVY.
* Added a FreeBSD directory to allow people from BSD to get a daily version and create a port.
* Removed mysql dependency from debian package and added a note to setup motion to run as daemon to create the pid file.
* Changed the way configure search mysql headers and libs, added 3 parameters to configure --without-mysql to disable support,
--with-mysql-include directory of mysql.h and --with-mysql-lib directory of libmysqlclient.a or libmysqlclient.so
* Fix an error in FreeBSD , the use of capture even fields depends on height value.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x03x073610
* Fixed autodetection for VIA cpu , no needed to use --without-optimizecpu. Added many others.
* Fix , don't remove pid file when motion reload config file( HUP signal ).
* Fix compilation broken by uvc track type.
* Fix RoundRobin v4l2 buffers in driver when switching input,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x07x07x182605
(Dag Erlandsson and Angel Carpintero).
* Check EIO for VIDIOC_DQBUF to workaround saa7134 problem.
(Dag Erlandsson and Angel Carpintero).
* Change bayer2rgb24() to fix a problem with sn9c102 driver
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x06x05x012249
(Jared D and Angel Carpintero).
* Added MYSQL_OPT_RECONNECT flag for mysql connection (MYSQL 5.x only) and
changed default value for mysql_host.
* Fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=391055 , change
motion man page , -d requires level.
* Handle mjpeg decoding and fix colour issue adding mjpegtools dependency
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegColorIssue
http://www.lavrsen.dk/twiki/bin/view/Motion/MjpegToYUV420pPatch
(Marius Rieder, Angel Carpintero).
* Fix segfault in webhttpd.c on motion restart.
* Fix segfault in debian http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x09x24x175945
* Add debug level > 5 to get logs from v4l2_select_input, v4l2_set_control and v4l2_set_input.
* Removed debian ( to avoid conflicts with debian package) and FreeBSD
( no needed to deploy BSD port here ) directories.
* Improve debian package, create user/group motion and added --chuid motion to init script.
* Added help in http control http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x181541
* Fixed http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x23x093651
* Fix process_id_file when is passed from command line
* Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x10x27x150419
* Added Choose V4L2 palette http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x11x19x032318
* Improved in http control ( 'back' link, select box, show current values when are going to be changed ).
* Fix http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x25x102808
* Avoid random errors , initialising some structs for V4L1
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x11x26x010755 (Jason Sharpee & Angel Carpintero)
* Fix motion segfault because ffmpeg API change
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2007x12x29x17553
* Little fix in ffmpeg.c comparing version of LIBAVFORMAT_BUILD, since ffmpeg svn -r4486 LIBAVFORMAT_BUILD and
LIBAVCODEC_BUILD uses LIBAVFORMAT_VERSION_INT ((49<<16)+(0<<8)+0) and LIBAVCODEC_VERSION_INT ((49<<16)+(0<<8)+0)
* Fix broken PostgreSQL detection for custom location,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x02x25x025134
* Fixed stepper when is used track_auto on.
* Added to configure.in --with-pwcbsd to allow compile motion in freebsd with webcam support instead of bktr.
* IPV6 for http-control and webcam stream not netcam yet http://www.lavrsen.dk/twiki/bin/view/Motion/IPv6
(Jeroen Massar & Angel Carpintero)
* Fix a security issue in web control interface http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484572
* Fix Problem Encoding 1280x1024 resolution videos
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x06x11x183727
* Add write/read nonblock functions in webhttpd( timeout on read/write).
* Add a new parameter netcam_tolerant_check, to be less strict with some buggy network cameras firmwares.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2008x06x19x123218
* Remove mjpegtools dependencies and integrate only needed functions from library.
* Fix rotate for v4l2 devices using JPEG / MJPEG palettes.
* External pipe to allow external video encoders
http://www.lavrsen.dk/twiki/bin/view/Motion/DarkwindHackeronMotionPatching (Bill Payne, Angel Carpintero)
* Allow change/setup framerate in FreeBSD using pwcbsd
* Get rid of ffmpeg-config in configure.in for debian.
* Fix warning for x86_64 in conf.c using pointers LP64 compliant.
* Fix warning for syslog() , Added support for some new bayer palettes introduced in kernel 2.6.27.
http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2008x10x15x130110
Increased buffer in ffmpeg to allow encoding at 1600x1200
* Avoid possible stack smashing in v4l_open_vidpipe().
* Allow compile with OpenSuse ffmpeg package (15594svn-20081010)
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2008x10x25x070400
* Avoid segfault detecting strerror_r() version GNU or SUSv3.
* Fix fd leaks in external pipe.
* Fix segfault for new libjpeg v7.
* Allow to change Standard method ( PAL / NECAM / SECAM ).
* Exit when image dimension are not modulo 16.
* Avoid logs flooding using some options of netcam_keepalive and try to discard images with
weird header Content-Lenght 0.
* Only use post capture when we setup to record videos with external pipe or ffmpeg.
* Fixed FFV1 codec encode with ffmpeg.
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x13x032553
* No PQfinish().
* Added a conditional check for avformat_alloc_context , av_avformat_alloc_context to fix
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2011x10x05x071936
* Added a new starting option -m to disable motion detection.
Jared D
* Change bayer2rgb24() to fix a problem with sn9c102 driver
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x06x05x012249
(Jared D and Angel Carpintero).
John Edwards
* Added the 'pal-nc' norm.
Dag Erlandsson
* Fix RoundRobin v4l2 buffers in driver when switching input,
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x07x07x182605
(Dag Erlandsson and Angel Carpintero).
* Check EIO for VIDIOC_DQBUF to workaround saa7134 problem.
(Dag Erlandsson and Angel Carpintero).
* Added the pre_capture buffer redesign to throttle load and enhance pre_capture feature.
http://www.lavrsen.dk/twiki/bin/view/Motion/PreCaptureRedesign
* Fixed a problem with locate and fixed mask overlay
* Added preview center feature.
http://www.lavrsen.dk/twiki/bin/view/Motion/PreviewCenter
* Fixed timestamp for preview pictures.
* Insert Blanking frames http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRequest2007x12x16x132522
Stephen Farrugia
* Fixing the division by zero problem.
This makes motion a lot more stable.
Michael Finsterbusch
* Add authentication methods 'Basic Authentication' and 'Digest Authentication'
to the "Live Stream Server".
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionStreamAuthPatch
Mark Feenstra
* Fix zombies on OpenBSD.
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2010x04x28x054348
Miguel Freitas
* Came up with the round robing idea.
Aaron Gage
* Pointed me to the vid_mmap/int problem when calling SYNC in
video.c
Giacomo Graziosi
* Sqlite3 support http://www.lavrsen.dk/twiki/bin/view/Motion/SQLite3Patch
Christophe Grenier
* Fixed some file descriptor leaks in webcam.c and netcam.c.
* Renamed the top level global context structure to cnt_list so it can be
reached from child threads and by above mentioned close_anything_open()
* Contributed with most of the code for new function in event.c
close_anything_open() which is called from send_sms, send_mail and
exec_command in order to prevent file descriptor and open sockets to be
inherited by the shell causing freezing and instability.
Code contributed by Christophe Grenier, Christopher Price and
Kenneth Lavrsen.
* Change the working directory to / in daemon mode. This way you don't have
to kill motion to umount the partition from where you start it.
http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch
* In netcam-wget header_get() didn't always in add a \0 string terminator.
This was fixed.
http://www.lavrsen.dk/twiki/bin/view/Motion/ChdirNetCamWgetPatch
* Made a pthread fix.
http://www.lavrsen.dk/twiki/bin/view/Motion/PthreadFixPatch
* Implemented the conversion of signal to sigaction which should be more
thread safe. Hopefully this still keeps Motion from making Zombies.
http://www.lavrsen.dk/twiki/bin/view/Motion/ConvertSignalToSigaction
Mihnea-Costin Grigore
* Fixed the oldlayout behaviour of snapshots.
* Fixed snapshot link extension.
* Added the snapshot_overwrite option.
* Fix for correct mpeg names when using mpeg_encode.
Alain Guidez
* Fix of ffmpeg_avcodec_log code.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2007x03x25x074612
Jan Gyselinck
* Original time/date-stamp code.
* ppm support
* Good ideas
Colling H
* New frame_limit.
Steffen Haas
* Improved on screen display by adding more symbols and lower
case letters.
Andrew Hamilton
* Small speed boost to the function draw_textn (Andrew Hamilton and
Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextnImprovement
* Added new feature: Double size text. A new config option 'text_double' can
be set 'on' and this scales the text to double size. Default is off.
http://www.lavrsen.dk/twiki/bin/view/Motion/TextScalingPatch
* Fixed memory leak in ffmpeg code.
* Added the ffmpeg_deinterlace feature
http://www.lavrsen.dk/twiki/bin/view/Motion/MotionffmpegDeinterlace
* Added FFV1 ( FF video codec 1 ) codec , Lossless encoding
http://www.lavrsen.dk/twiki/bin/view/Motion/LosslessEncoding
* Added mov , Quicktime file format (Andrew Hamilton).
Gerrit Hannaert
* Fix v4l2_palette http://www.lavrsen.dk/twiki/bin/view/Motion/UvcvideoMjpegPatch
Peter Holik
* Netcam First Header patch. If an error with jpeg decompression occurred at
connecting to a mjpeg streaming webcam, this patch skips this jpeg and tries
to decompress next jpeg up to MAX_HEADER_RETRIES (20).
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamFirstHeader
* Small improvement in framerate accuracy.
http://www.lavrsen.dk/twiki/bin/view/Motion/FramerateAdjust
* Implemented a modified version of the WebcamCompressInMemory so that Motion
no longer uses the tmpfile() function for buffering the frames of the mjpeg
stream.
http://www.lavrsen.dk/twiki/bin/view/Motion/WebcamCompressInMemory
* Implemented the libjpeg-mmx patch. Installing the MMX version of libjpeg
can increase performance. Especially for machines with very little CPU power.
It only modifies the configure script. If you do not have the libjpeg-mmx
the configure script with ignore this and use the standard libjpeg.
Note that RPMS will be built without this (Peter Holik and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/LibJpegMmx
* Small code cleanup in webcam.c and picture.c and .h for the webcam code
(Peter Holik and Kenneth Lavrsen).
* Small speed optimization in the creation of reference frame.
* Removed all warnings originating from the motion sources when running
./configure --with-developer-flags.
The modifications were done by the following people: Peter Holik, Bill Brack,
Angel Carpintero and Kenneth Lavrsen.
http://www.lavrsen.dk/twiki/bin/view/Motion/ReduceWarningsPatch
* Implemented a speed-up patch of the draw text feature.
http://www.lavrsen.dk/twiki/bin/view/Motion/DrawTextspeedup
* http control: selectbox instead of a textfield for changing boolean configs
(Peter Holik and Angel Carpintero).
http://www.lavrsen.dk/twiki/bin/view/Motion/WebhttpEnhancements.
* Introduced check for device image size being a multiple of 16.
http://www.lavrsen.dk/twiki/bin/view/Motion/NetcamModulo16Patch
* Fixed netcamera bug related to separating frames in an mjpeg stream.
From mailing list 23 Dec 2005.
* Avoid open file descriptor when connecting to network cameras fails
http://www.lavrsen.dk/twiki/bin/view/Motion/AvoidOpenfiledescriptors
* Fix Segfault on reload or quit for vloopback (maybe other v4l1 devices too)
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x090603
* Fix warning for __USE_GNU redefined
http://www.lavrsen.dk/foswiki/bin/view/Motion/BugReport2009x06x17x122137
* Use static memory allocation in ffmpeg_deinterlace()
http://www.lavrsen.dk/foswiki/bin/view/Motion/FfmpegDeinterlaceStatic
* Atom optimizacion in configure.in
http://www.lavrsen.dk/foswiki/bin/view/Motion/AtomOptimizations
Wesley Hosking
* For pointing me to the absence of a frame length check using
read for capturing
Peter Ilin
* Patch for handling vloopback pipes better when Motion receives
SIGTERM or SIGHUB
Per Jönsson
* Added the rotate feature.
* Improved the Makefile with automatic check of dependencies and
nicer output for the user.
http://www.lavrsen.dk/twiki/bin/view/Motion/MakefileWithAutoDependencies
* Improved rotate feature (speed)
http://www.lavrsen.dk/twiki/bin/view/Motion/RotatePatch
* Implemented new ffmpeg patch
http://www.lavrsen.dk/twiki/bin/view/Motion/FfmpegPatch049
* Implemented labelling speed patch
http://www.lavrsen.dk/twiki/bin/view/Motion/LabelingSpeedPatch
* Improved the signal handling of ctrl-C
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x181426
* Fixed the ffmpeg code so that Motion also compiles against libavcodec
build 4754 or later.
* Fixed a bug in the autobrightness algorithm.
* RotateBswapFix Patch v 2 including:
* cleanup in code comments
* fix for __bswap_32 macro collision
* fixed bug where initialization would be incomplete for invalid degrees
of rotation
* now uses motion_log for error reporting
http://www.lavrsen.dk/twiki/bin/view/Motion/RotateBswapFix
* Implemented Threadnr in TLS (thread-local storage)patch. It puts the thread
number into TLS and modifies motion_log() so that we do not have to drag the
cnt struct around just to be able to print the thread number in the log and
on the console. (Per Jönsson with additional removal of unused cnt by
Kenneth Lavrsen).
http://www.lavrsen.dk/twiki/bin/view/Motion/ThreadNrTlsPatch
* Simplified rotation code based on the fact that images must have dimensions
that are a multiple of 16.
http://www.lavrsen.dk/twiki/bin/view/Motion/RotateSimplificationPatch
Mike Kenney
* Implemented a fix for the rare problem where some experienced that the
move file names would only consist of the extension .mpg or .avi with no
name in front. The root cause was the use of sprintf for appending to
strings. (Mike Kenney and Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2005x09x05x133031
http://www.lavrsen.dk/twiki/bin/view/Motion/SupportQuestion2006x06x19x174238
Rafis Khayrullin
* Fix memory management in ffmpeg.c
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2006x12x19x062432
Matthias Kilian
* Configure patch which enables configure to find and use a
dynamic library of ffmpegs libavcodec.so
Daniel Ladd
* Fixed a bug in the rgb2yuv420p function.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x30x011107
Kenneth Lavrsen (Currently project managing Motion)
* Wrote the excellent Motion Guide. (Jeroen wrote this :-) )
* Fixed low_cpu to check for a 1sec. maximum wait.
* Updated manpage for 3.0.0
* New usertext additions to draw.c
* Fixed ffmpeg compatibility for ffmpeg 0.4.8
* Fixed ffmpeg instability problem
* Fixed "ioctl(VIDIOCGCHAN): Invalid argument" error
* Changed motion.conf to motion-dist.conf.
* Changed the parsing of the motion.conf and thread.conf files so
that spaces are now allowed.
* Changed the parsing of the user defined on screen display text
so that you can enclose a string in "" both in config file
and using the XML-RPC interface. Ie. you can use spaces in the
text.
* Changed conf.c so that xml-rpc command motion.conf.write creates
a much more user friendly motion.conf file.
* Modified Ian's on screen display putting back the config parameter
drawtext_changes. If enabled the number of changed pixes are shown
in the upper right corner of the image.
* Removed the snap_override feature and reduced the oldlayout to an
Berkeley mpeg_encode feature only renaming it to
berkeley_single_directory. Instead the flexible filename
feature now has oldlayout as default and the "new" directory layout
specified in the motion.conf file.
* Motion.conf sequency re-arranged so the important things comes first.
* Changed names of many options to be more user friendly.
* Renamed the options for displayed text to text_right, text_left and
text_changes.
* Change the parsing of config files so that the argument can be in
quotation marks (" or ') allowing leading spaces for the text_left
and text_right options. This means that you can place the text
anywhere on the picture by using spaces and new lines \n.
* Fixed problem with strftime based names with event number %v when
event numbers were higher than 99.
* Changed motion-control to make a proper output from motion.conf.list.
* Renamed ffmpeg_timelaps to ffmpeg_timelapse (we change now or never)
* Corrected man page (\n) (thanks Daniel).
* Added setting access rights to 644 (755 for configure) when doing
make dist.
* Small improvement on xmlrpc-api.html document.
* Fixed missing init of viddev.frequency causing VIDIOCGCHAN errors.
XML-RPC changes of threshold and noise_level are now being used as
long as threshold_tune and noise_level are not enabled.
* Enabled the round robin feature to also work by changing frequency on
the same device and same input.
* Fixed the pre_capture feature so that it also stores the jpegs properly.
* Fixed the ffmpeg_timelapse feature so that the calculated time is
correct and the current image is used instead of an old image from
position 0 in the pre_capture ring buffer.
* Fixed ffmpeg routines so that also graytone images can be
pre_captured and used with ffmpeg_timelapse.
* Fixed the position of the incrementing of shots in the motion_loop
so that it is correct before any functions use it.
* Added quite many comments to the code to make it easier to maintain
(more comments will be added).
* Removed some old debugging printf's that were displayed in non-quiet
mode.
* Changed to snapshot feature from being alarm driven to being timer
driven. This means that each thread can have its own interval
value. The XML-RPC motion.action.snapshot still works. The SIGALRM
method has been changed so that all thread that have the snapshot_interval
non zero will take a snapshot when being signaled with SIGALRM. A
negative value for snapshot_interval will activate the SIGALRM trigger
but not the timing interval.
* Kenneth Lavrsen changed the enhanced SQL config from single sql_mask
option to 5 sel_log_ options for more user friendly control.
* Changed the behaviour of onsave back to original mode where also
snapshots causes onsave command to be run.
* Fixed a bug in frequency setting of V4L device.
* A few lines of code for Dan's improved handling of config strings.
* Daniel Sterling and Kenneth Lavrsen added a feature that checks for
two threads having the same webcam_port. If this is the case the last
thread gets its webcam disabled and a warning message is written
to console and syslog.
* Small improvements in messages sent to console and syslog during
startup of Motion.
* Fixed the problem with default strings being written to thread
config files when using the XMLRPC command motion.conf.write.
* Fixed memory leaks in new ffmpeg code.
* Changed the ffmpeg code so that mpeg1 files are created using the
libavcodec method and mpeg4 and msmpeg4 are created using the new
libavframe method in ffmpeg.
* Added seconds and frame fields to the database feature.
* Fixed a small bug related to the filename given for onffmpegclose.
changed the configure option --with-libavcodec to --with-ffmpeg
and updated Guide and man pages and text in code and config file to
match the new shared library way of using ffmpeg.
* Added the new fields to the SQL security table camera (thread
number), text (text_left) and time (timestamp).
* Simplified the sql functions (1 instead of 3) and ensured that the
text field is not assigned when text_left is an empty string. This
allows for the field to be auto defaulted.
* Added additional error reporting to console.
* Implemented a new lightswitch feature so that is now triggers lightswitch
detected based on the percentage of pixels set by the lightswitch option which
is now an integer instead of a boolean. When lightswitch is detected motion
skips 5 frames to allow camera to settle.
* Fixed a bug in the autobrightness function.
* Fixed a bug in netcam_start() - wrong imgs.size calculation.
* Removed the obsolete Berkeley mpeg feature.
* Corrected a small error in the usage help text
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x05x174139
* Improved the help text for config option night_compensate in docs,
conf.c, motion man pages and config file.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x06x103939
* Implemented a POSIX compliant SIGCHLD signal handler as replacement for
the traditional signal(SIGCHLD, SIG_IGN) which can cause floods of
warnings in some RedHat versions. (with Angel Carpintero)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2004x10x26x134906
* Changed the reporting of the changes of noise detection level so that
it is only displayed in the console (daemon off) when the always_changes
option is enabled. (Kenneth Lavrsen)
* Changed the ffmpeg>0.4.8 = no mpeg1 gcc warning message so that it is
clear to people that it is information and not an error message.
* Changed allocation of despeckle buffer to avoid a segfault when using
a netcam where the image is wider than defined in motion.conf width.
* The noise tune value displayed in the upper left corner along with
number of changed pixels is no longer displayed (was there for debugging).
* Changed the SIGCHLD handler introduced in snap10 so that it is a shorter
and faster function. Disabled this handler in the xmlrpc thread as this
caused unnecessary loops of cpu cycles. Additionally made the code in
xmlrpc more correct and robust (handling of select()) (Kenneth Lavrsen)
* Fixed a bug in the timelapse feature. Both the rollover events of the
timelapse video and timelapse shots could be missed if the CPU load was
very high or the time was changes by ntp. Motion will now catch up a few
seconds later if this happens. Also fixed the code for monthly rollover.
(Kenneth Lavrsen)
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x23x133554
* Small improvement in timelapse feature so that an image is added when
the new mpeg is created and not waiting till the following timelapse
(Kenneth Lavrsen).
* Small improvement so that the rollover happens on the hour and not one
timelapse past the hour (Kenneth Lavrsen).
* Fixed a bug in noise tune which was most visible at very low light.
* Re-arranged many of the const char declarations so that they are always
before any statements within a block { }. This is to avoid compiler errors
with older but still used gcc versions such as 2.9.5.
* Changed the use of %zd to %llu in printf statements of size_t types.
This is done to avoid compiler errors with older but still used gcc versions
such as 2.95.
* Fixed even more gcc 2.95 compiler errors (declarations not at beginning
of block).
* Removed a gcc 2.95 compiler warning (netcam.c:1036: warning: variable `pic'
might be clobbered by `longjmp' or `vfork').
* The values for cnt->locate and cnt->new_img are now #defines in motion.h
to enhance code readability.
* The setting of sql_mask is now only done once per second to save CPU power.
* Adding checking for conflict between control port and webcam port. Webcam
port for a thread is disabled if it is set to the same value as the control
port.
* Added "motion-http:" prefix to error messages from the http control thread.
(Kenneth Lavrsen)
* Added additional error information when connection to MySQL fails.
* Initiate cnt->event_nr to 1 to avoid code related to end of events and long
mpeg films to be run during startup of Motion.
* Added new function in event.c close_anything_open() which is called from
send_sms, send_mail and exec_command in order to prevent file descriptor and
open sockets to be inherited by the shell causing freezing and instability.
Code contributed by Christophe Grenier, Christopher Price and Kenneth Lavrsen.
* Added new context global cnt_list.control_socket_server set by the httpd
thread so that the above mentioned close_anything_open() can close open
control sockets.
* Threw away the file descriptor leak fix from snap 9 because it caused
more trouble than it fixed. Removed the close_anything_open() and the
cnt_list.control_socket_server field. Replaced it all with a simple
piece of code that all server daemons call when started: setsid() followed
by for (i=getdtablesize(); i>2; --i) close(i). Dirty and simple.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x03x21x070534
* Fixed a bug where rate of fetching picture frames was disturned by
the signal SIG_CHLD from exec_command programs terminating. The symptom
was that the number of post_capture frames became inaccurate and motion
in mpegs did not have constant time between frames.
* Fixed a bug where motion did not work with gap=1.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x01x30x073616
* Added the feature gap=0 which now also works. It disables gap completely
so that one single mpeg file is created. You can end the event from the
remote control interface make movie feature using for example cron.
This makes Motion close the mpeg and make a new with event number increased
by one.
* Improved the http remote control action features so that makemovie
and snapshot for thread 0 (all) works on all threads instead of being
ignored.
* Moved some code in the beginning of the motion_loop to a position later
to improve the accuracy of time calculations for the framerate.
* Improvements of motion.conf help comments including improvements in new
onxxxx options.
* Motion Guide refactored completely for 3.2.1 with better web navigation and
auto generation of pages. Makefile updated so that the Motion TWiki topic
MotionGuideOneLargeDocument is fetched when updating the guide and making
releases.
* Removed the debug_parameter option which had no use. Programmers can still
use it because the code is only commented out. This change required a small
update in the code that rewrites motion.conf so that a remote control command
to write the config files still adds a text header for the thread section at
the end of motion.conf.
* Changed the default values for a few options: quiet on, webcam_maxrate 1,
threshold_tune off, webcam_quality 50.
* Changed some cosmetics in the way motion.conf is written (space after #).
* Updated the motion-dist.conf to use default values unless there is a reason
not to.
* Fixed a bug in the low_cpu feature where cpu load increased instead of
decreasing because the framerate calculations were completely wrong. This was
an old bug introduced in 3.0.1.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x04x24x205933
* Improved the auto-brightness algorithm. When auto-brightness is enabled
the brightness option becomes a target value for the brightness level.
This should also close a bug report.
http://www.lavrsen.dk/twiki/bin/view/Motion/BugReport2005x02x26x195358.
* Made the http control HTML responses nicer to look at as sources and
therefore easier to debug errors.
* Code style cleanup of webhttpd.
gitextract_r2owztvo/ ├── .gitignore ├── CHANGELOG ├── CODE_STANDARD ├── COPYING ├── CREDITS ├── FAQ ├── INSTALL ├── Makefile.in ├── README ├── README.FreeBSD ├── README.MacOSX ├── README.axis_2100 ├── alg.c ├── alg.h ├── commit-version.sh ├── conf.c ├── conf.h ├── config.h.in ├── configure ├── configure.in ├── draw.c ├── event.c ├── event.h ├── ffmpeg-0.4.8-macosx.patch ├── ffmpeg.c ├── ffmpeg.h ├── git-commit-version.sh ├── jpegutils.c ├── jpegutils.h ├── logger.c ├── logger.h ├── md5.c ├── md5.h ├── mmx.h ├── motion-dist.conf.in ├── motion.1 ├── motion.c ├── motion.h ├── motion.init-Debian.in ├── motion.init-Fedora.in ├── motion.init-FreeBSD.sh.in ├── motion.spec.in ├── motion_guide.html ├── netcam.c ├── netcam.h ├── netcam_ftp.c ├── netcam_ftp.h ├── netcam_jpeg.c ├── netcam_rtsp.c ├── netcam_rtsp.h ├── netcam_wget.c ├── netcam_wget.h ├── picture.c ├── picture.h ├── pwc-ioctl.h ├── pwc-ioctl.h-10.0.10 ├── pwc-ioctl.h-10.0.5 ├── pwc-ioctl.h-pwc8.0 ├── pwc-ioctl.h-pwc9.0.1 ├── rotate.c ├── rotate.h ├── sdl.c ├── sdl.h ├── stream.c ├── stream.h ├── thread1.conf.in ├── thread2.conf.in ├── thread3.conf.in ├── thread4.conf.in ├── track.c ├── track.h ├── version.sh ├── video.c ├── video.h ├── video2.c ├── video_common.c ├── video_freebsd.c ├── video_freebsd.h ├── vloopback_motion.c ├── vloopback_motion.h ├── webhttpd.c └── webhttpd.h
SYMBOL INDEX (610 symbols across 44 files)
FILE: alg.c
function alg_locate_center_size (line 24) | void alg_locate_center_size(struct images *imgs, int width, int height, ...
function alg_draw_location (line 172) | void alg_draw_location(struct coord *cent, struct images *imgs, int widt...
function alg_draw_red_location (line 240) | void alg_draw_red_location(struct coord *cent, struct images *imgs, int ...
function alg_noise_tune (line 359) | void alg_noise_tune(struct context *cnt, unsigned char *new)
function alg_threshold_tune (line 397) | void alg_threshold_tune(struct context *cnt, int diffs, int motion)
type Segment (line 451) | typedef struct {
function iflood (line 459) | static int iflood(int x, int y, int width, int height,
function alg_labeling (line 519) | static int alg_labeling(struct context *cnt)
function dilate9 (line 590) | static int dilate9(unsigned char *img, int width, int height, void *buffer)
function dilate5 (line 677) | static int dilate5(unsigned char *img, int width, int height, void *buffer)
function erode9 (line 748) | static int erode9(unsigned char *img, int width, int height, void *buffe...
function erode5 (line 792) | static int erode5(unsigned char *img, int width, int height, void *buffe...
function alg_despeckle (line 832) | int alg_despeckle(struct context *cnt, int olddiffs)
function alg_tune_smartmask (line 886) | void alg_tune_smartmask(struct context *cnt)
function alg_diff_standard (line 929) | int alg_diff_standard(struct context *cnt, unsigned char *new)
function alg_diff_fast (line 1202) | static char alg_diff_fast(struct context *cnt, int max_n_changes, unsign...
function alg_diff (line 1235) | int alg_diff(struct context *cnt, unsigned char *new)
function alg_lightswitch (line 1251) | int alg_lightswitch(struct context *cnt, int diffs)
function alg_switchfilter (line 1271) | int alg_switchfilter(struct context *cnt, int diffs, unsigned char *newimg)
function alg_update_reference_frame (line 1319) | void alg_update_reference_frame(struct context *cnt, int action)
FILE: alg.h
type coord (line 15) | struct coord {
type segment (line 26) | struct segment {
type images (line 34) | struct images
type coord (line 34) | struct coord
type coord (line 35) | struct coord
type images (line 35) | struct images
type coord (line 36) | struct coord
type images (line 36) | struct images
type context (line 37) | struct context
type context (line 38) | struct context
type context (line 39) | struct context
type context (line 40) | struct context
type context (line 41) | struct context
type context (line 42) | struct context
type context (line 43) | struct context
type context (line 44) | struct context
type context (line 45) | struct context
FILE: conf.c
type config (line 45) | struct config
type context (line 165) | struct context
type context (line 165) | struct context
type context (line 166) | struct context
type context (line 166) | struct context
type context (line 167) | struct context
type context (line 167) | struct context
type context (line 169) | struct context
type context (line 170) | struct context
type context (line 171) | struct context
type context (line 172) | struct context
function conf_cmdline (line 1544) | static void conf_cmdline(struct context *cnt, int thread)
type context (line 1607) | struct context
type context (line 1607) | struct context
type context (line 1666) | struct context
type context (line 1666) | struct context
function conf_print (line 1740) | void conf_print(struct context **cnt)
type context (line 1824) | struct context
type context (line 1824) | struct context
type config (line 1837) | struct config
function malloc_strings (line 1963) | void malloc_strings(struct context *cnt)
type context (line 2016) | struct context
type context (line 2016) | struct context
type context (line 2046) | struct context
type context (line 2046) | struct context
type context (line 2074) | struct context
type context (line 2074) | struct context
type context (line 2196) | struct context
type context (line 2221) | struct context
type context (line 2238) | struct context
type context (line 2254) | struct context
type context (line 2289) | struct context
type context (line 2289) | struct context
type context (line 2317) | struct context
type context (line 2320) | struct context
type context (line 2323) | struct context
function usage (line 2355) | static void usage()
FILE: conf.h
type config (line 21) | struct config {
type context (line 143) | struct context
type context (line 143) | struct context
type context (line 144) | struct context
type config_param (line 149) | typedef struct {
type context (line 160) | struct context
type context (line 160) | struct context
type context (line 161) | struct context
type context (line 161) | struct context
type context (line 163) | struct context
type context (line 164) | struct context
type context (line 167) | struct context
type context (line 167) | struct context
FILE: draw.c
type draw_char (line 22) | struct draw_char {
type big_char (line 27) | struct big_char {
type draw_char (line 32) | struct draw_char
type big_char (line 1075) | struct big_char
type draw_char (line 1075) | struct draw_char
function draw_textn (line 1081) | static int draw_textn(unsigned char *image, unsigned int startx, unsigne...
function draw_text (line 1138) | int draw_text(unsigned char *image, unsigned int startx, unsigned int st...
function initialize_chars (line 1173) | int initialize_chars(void)
FILE: event.c
function exec_command (line 28) | static void exec_command(struct context *cnt, char *command, char *filen...
function event_newfile (line 63) | static void event_newfile(struct context *cnt ATTRIBUTE_UNUSED,
function event_beep (line 72) | static void event_beep(struct context *cnt, int type ATTRIBUTE_UNUSED,
function on_picture_save_command (line 90) | static void on_picture_save_command(struct context *cnt,
function on_motion_detected_command (line 103) | static void on_motion_detected_command(struct context *cnt,
function event_sqlnewfile (line 114) | static void event_sqlnewfile(struct context *cnt, int type ATTRIBUTE_UN...
function on_area_command (line 218) | static void on_area_command(struct context *cnt, int type ATTRIBUTE_UNUSED,
function on_event_start_command (line 227) | static void on_event_start_command(struct context *cnt, int type ATTRIBU...
function on_event_end_command (line 236) | static void on_event_end_command(struct context *cnt, int type ATTRIBUTE...
function event_stop_stream (line 245) | static void event_stop_stream(struct context *cnt, int type ATTRIBUTE_UN...
function event_stream_put (line 254) | static void event_stream_put(struct context *cnt, int type ATTRIBUTE_UNU...
function event_sdl_put (line 263) | static void event_sdl_put(struct context *cnt, int type ATTRIBUTE_UNUSED,
function event_vid_putpipe (line 273) | static void event_vid_putpipe(struct context *cnt, int type ATTRIBUTE_UN...
type context (line 284) | struct context
function event_image_detect (line 292) | static void event_image_detect(struct context *cnt, int type ATTRIBUTE_U...
function event_imagem_detect (line 318) | static void event_imagem_detect(struct context *cnt, int type ATTRIBUTE_...
function event_image_snapshot (line 348) | static void event_image_snapshot(struct context *cnt, int type ATTRIBUTE...
function event_camera_lost (line 394) | static void event_camera_lost(struct context *cnt, int type ATTRIBUTE_UN...
function on_movie_end_command (line 402) | static void on_movie_end_command(struct context *cnt, int type ATTRIBUTE...
function event_extpipe_end (line 412) | static void event_extpipe_end(struct context *cnt, int type ATTRIBUTE_UN...
function event_create_extpipe (line 427) | static void event_create_extpipe(struct context *cnt, int type ATTRIBUTE...
function event_extpipe_put (line 493) | static void event_extpipe_put(struct context *cnt, int type ATTRIBUTE_UN...
function event_new_video (line 514) | static void event_new_video(struct context *cnt, int type ATTRIBUTE_UNUSED,
function grey2yuv420p (line 533) | static void grey2yuv420p(unsigned char *u, unsigned char *v, int width, ...
function event_ffmpeg_newfile (line 540) | static void event_ffmpeg_newfile(struct context *cnt, int type ATTRIBUTE...
function event_ffmpeg_timelapse (line 628) | static void event_ffmpeg_timelapse(struct context *cnt,
function event_ffmpeg_put (line 698) | static void event_ffmpeg_put(struct context *cnt, int type ATTRIBUTE_UNU...
function event_ffmpeg_closefile (line 728) | static void event_ffmpeg_closefile(struct context *cnt,
function event_ffmpeg_timelapseend (line 755) | static void event_ffmpeg_timelapseend(struct context *cnt,
type event_handlers (line 778) | struct event_handlers {
type event_handlers (line 783) | struct event_handlers
function event (line 924) | void event(struct context *cnt, int type, unsigned char *image, char *fi...
FILE: event.h
type context (line 36) | struct context
type tm (line 36) | struct tm
type context (line 38) | struct context
type tm (line 38) | struct tm
type context (line 39) | struct context
FILE: ffmpeg.c
type ffmpeg (line 83) | struct ffmpeg
type ffmpeg (line 84) | struct ffmpeg
type ffmpeg (line 85) | struct ffmpeg
function file_open_append (line 109) | static int file_open_append(URLContext *h, const char *filename, int flags)
function file_open (line 170) | static int file_open(URLContext *h, const char *filename, int flags)
function file_read (line 197) | static int file_read(URLContext *h, unsigned char *buf, int size)
function file_write (line 206) | static int file_write(URLContext *h, unsigned char *buf, int size)
function file_seek (line 215) | static int64_t file_seek(URLContext *h, int64_t pos, int whence)
function file_close (line 226) | static int file_close(URLContext *h)
function mpeg1_write_trailer (line 258) | static int mpeg1_write_trailer(AVFormatContext *s)
function ffmpeg_init (line 281) | void ffmpeg_init()
function AVOutputFormat (line 326) | static AVOutputFormat *get_oformat(const char *codec, char *filename)
type ffmpeg (line 452) | struct ffmpeg
type ffmpeg (line 458) | struct ffmpeg
type ffmpeg (line 467) | struct ffmpeg
type ffmpeg (line 468) | struct ffmpeg
function ffmpeg_cleanups (line 732) | void ffmpeg_cleanups(struct ffmpeg *ffmpeg)
function ffmpeg_close (line 767) | void ffmpeg_close(struct ffmpeg *ffmpeg)
function ffmpeg_put_image (line 814) | int ffmpeg_put_image(struct ffmpeg *ffmpeg)
function ffmpeg_put_other_image (line 828) | int ffmpeg_put_other_image(struct ffmpeg *ffmpeg, unsigned char *y,
function ffmpeg_put_frame (line 854) | int ffmpeg_put_frame(struct ffmpeg *ffmpeg, AVFrame *pic)
function AVFrame (line 947) | AVFrame *ffmpeg_prepare_frame(struct ffmpeg *ffmpeg, unsigned char *y,
function ffmpeg_deinterlace (line 988) | void ffmpeg_deinterlace(unsigned char *img, int width, int height)
function ffmpeg_avcodec_log (line 1023) | void ffmpeg_avcodec_log(void *ignoreme ATTRIBUTE_UNUSED, int errno_flag,...
FILE: ffmpeg.h
type ffmpeg (line 38) | struct ffmpeg {
type ffmpeg (line 65) | struct ffmpeg
type ffmpeg (line 79) | struct ffmpeg
type ffmpeg (line 83) | struct ffmpeg
type ffmpeg (line 90) | struct ffmpeg
FILE: jpegutils.c
function init_source (line 71) | static void init_source(j_decompress_ptr cinfo ATTRIBUTE_UNUSED)
function boolean (line 86) | static boolean fill_input_buffer(j_decompress_ptr cinfo)
function skip_input_data (line 99) | static void skip_input_data(j_decompress_ptr cinfo, long num_bytes)
function term_source (line 114) | static void term_source(j_decompress_ptr cinfo ATTRIBUTE_UNUSED)
function jpeg_buffer_src (line 123) | static void jpeg_buffer_src(j_decompress_ptr cinfo, unsigned char *buffe...
function jpeg_skip_ff (line 153) | static void jpeg_skip_ff(j_decompress_ptr cinfo)
function init_destination (line 177) | static void init_destination(j_compress_ptr cinfo ATTRIBUTE_UNUSED)
function boolean (line 190) | static boolean empty_output_buffer(j_compress_ptr cinfo)
function term_destination (line 207) | static void term_destination(j_compress_ptr cinfo ATTRIBUTE_UNUSED)
function jpeg_buffer_dest (line 219) | static void jpeg_buffer_dest(j_compress_ptr cinfo, unsigned char *buf, l...
type my_error_mgr (line 256) | struct my_error_mgr {
function my_error_exit (line 266) | static void my_error_exit(j_common_ptr cinfo)
function my_emit_message (line 281) | static void my_emit_message(j_common_ptr cinfo, int msg_level)
function add_huff_table (line 306) | static void add_huff_table(j_decompress_ptr dinfo, JHUFF_TBL **htblptr,
function std_huff_tables (line 336) | static void std_huff_tables (j_decompress_ptr dinfo)
function guarantee_huff_tables (line 412) | static void guarantee_huff_tables(j_decompress_ptr dinfo)
function decode_jpeg_raw (line 442) | int decode_jpeg_raw (unsigned char *jpeg_data, int len,
function decode_jpeg_gray_raw (line 768) | int decode_jpeg_gray_raw(unsigned char *jpeg_data, int len,
function encode_jpeg_raw (line 1044) | int encode_jpeg_raw(unsigned char *jpeg_data, int len, int quality,
FILE: logger.c
function get_log_type (line 31) | int get_log_type(const char *type)
function set_log_type (line 63) | void set_log_type(unsigned int type)
function set_log_level (line 86) | void set_log_level(unsigned int level)
function set_log_mode (line 98) | void set_log_mode(int mode)
function FILE (line 110) | FILE * set_logfile(const char *logfile_name)
function motion_log (line 160) | void motion_log(int level, unsigned int type, int errno_flag, const char...
FILE: md5.c
function MD5Init (line 105) | void MD5Init(MD5_CTX *context)
function MD5Update (line 120) | void MD5Update (
function MD5Final (line 162) | void MD5Final (
function Encode (line 283) | static void Encode (output, input, len)
function Decode (line 302) | static void Decode (output, input, len)
function MD5_memcpy (line 316) | static void MD5_memcpy (output, input, len)
function MD5_memset (line 328) | static void MD5_memset (output, value, len)
function MD5 (line 339) | void MD5(unsigned char *message,unsigned long message_length,unsigned ch...
FILE: md5.h
type UINT2 (line 49) | typedef unsigned short int UINT2;
type UINT4 (line 52) | typedef unsigned int UINT4;
type MD5_CTX (line 66) | typedef struct {
FILE: mmx.h
type mmx_t (line 14) | typedef union {
FILE: motion.c
type context (line 26) | struct context
type context (line 27) | struct context
type context (line 51) | struct context
function image_ring_resize (line 89) | static void image_ring_resize(struct context *cnt, int new_size)
function image_ring_destroy (line 153) | static void image_ring_destroy(struct context *cnt)
function image_save_as_preview (line 185) | static void image_save_as_preview(struct context *cnt, struct image_data...
function context_init (line 236) | static void context_init(struct context *cnt)
function context_destroy (line 270) | static void context_destroy(struct context *cnt)
function sig_handler (line 294) | static void sig_handler(int signo)
function sigchild_handler (line 367) | static void sigchild_handler(int signo ATTRIBUTE_UNUSED)
function motion_remove_pid (line 380) | static void motion_remove_pid(void)
function motion_detected (line 411) | static void motion_detected(struct context *cnt, int dev, struct image_d...
type context (line 517) | struct context
type image_data (line 524) | struct image_data
function else (line 601) | else if (cnt->imgs.image_ring[cnt->imgs.image_ring_out].shot != (cnt->mo...
function motion_init (line 666) | static int motion_init(struct context *cnt)
function motion_cleanup (line 960) | static void motion_cleanup(struct context *cnt)
type context (line 1080) | struct context
type timeval (line 1097) | struct timeval
type image_data (line 1103) | struct image_data
type sigaction (line 1171) | struct sigaction
type sigaction (line 1172) | struct sigaction
type tm (line 1456) | struct tm
function become_daemon (line 2271) | static void become_daemon(void)
function cntlist_create (line 2372) | static void cntlist_create(int argc, char *argv[])
function motion_shutdown (line 2412) | static void motion_shutdown(void)
function motion_startup (line 2443) | static void motion_startup(int daemonize, int argc, char *argv[])
function setup_signals (line 2531) | static void setup_signals(struct sigaction *sig_handler_action, struct s...
function start_motion_thread (line 2571) | static void start_motion_thread(struct context *cnt, pthread_attr_t *thr...
function main (line 2646) | int main (int argc, char **argv)
function create_path (line 2924) | int create_path(const char *path)
type MyBuffer (line 2957) | struct MyBuffer {
function FILE (line 2982) | FILE * myfopen(const char *path, const char *mode, size_t bufsize)
function myfclose (line 3077) | int myfclose(FILE* fh)
function mystrftime (line 3119) | size_t mystrftime(const struct context *cnt, char *s, size_t max, const ...
FILE: motion.h
type images (line 213) | struct images
type image_data (line 234) | struct image_data {
type images (line 284) | struct images {
type rotdata (line 315) | struct rotdata {
type context (line 337) | struct context {
type context (line 454) | struct context
type tm (line 454) | struct tm
FILE: netcam.c
function netcam_url_parse (line 148) | static void netcam_url_parse(struct url_t *parse_url, const char *text_url)
function netcam_url_free (line 235) | static void netcam_url_free(struct url_t *parse_url)
function check_quote (line 271) | static void check_quote(char *str)
function netcam_check_content_length (line 301) | static long netcam_check_content_length(char *header)
function netcam_check_keepalive (line 336) | static int netcam_check_keepalive(char *header)
function netcam_check_close (line 364) | static int netcam_check_close(char *header)
function netcam_check_content_type (line 398) | static int netcam_check_content_type(char *header)
function netcam_read_next_header (line 439) | static int netcam_read_next_header(netcam_context_ptr netcam)
function netcam_read_first_header (line 552) | static int netcam_read_first_header(netcam_context_ptr netcam)
function netcam_disconnect (line 834) | static void netcam_disconnect(netcam_context_ptr netcam)
function netcam_connect (line 861) | static int netcam_connect(netcam_context_ptr netcam, int err_flag)
function netcam_check_buffsize (line 1049) | static void netcam_check_buffsize(netcam_buff_ptr buff, size_t numbytes)
function netcam_read_html_jpeg (line 1132) | static int netcam_read_html_jpeg(netcam_context_ptr netcam)
function netcam_http_request (line 1387) | static int netcam_http_request(netcam_context_ptr netcam)
function netcam_mjpg_buffer_refill (line 1446) | static int netcam_mjpg_buffer_refill(netcam_context_ptr netcam)
function netcam_read_mjpg_jpeg (line 1511) | static int netcam_read_mjpg_jpeg(netcam_context_ptr netcam)
function netcam_read_ftp_jpeg (line 1650) | static int netcam_read_ftp_jpeg(netcam_context_ptr netcam)
function netcam_read_file_jpeg (line 1732) | static int netcam_read_file_jpeg(netcam_context_ptr netcam)
function tfile_context (line 1852) | tfile_context *file_new_context(void)
function file_free_context (line 1865) | void file_free_context(tfile_context* ctxt)
function netcam_setup_file (line 1876) | static int netcam_setup_file(netcam_context_ptr netcam, struct url_t *url)
type context (line 1918) | struct context
function netcam_http_build_url (line 2104) | static int netcam_http_build_url(netcam_context_ptr netcam, struct url_t...
function netcam_setup_html (line 2285) | static int netcam_setup_html(netcam_context_ptr netcam, struct url_t *url)
function netcam_setup_mjpg (line 2333) | static int netcam_setup_mjpg(netcam_context_ptr netcam, struct url_t *url)
function netcam_setup_ftp (line 2361) | static int netcam_setup_ftp(netcam_context_ptr netcam, struct url_t *url)
function netcam_setup_rtsp (line 2417) | static int netcam_setup_rtsp(netcam_context_ptr netcam, struct url_t *url)
function netcam_recv (line 2499) | ssize_t netcam_recv(netcam_context_ptr netcam, void *buffptr, size_t buf...
function netcam_cleanup (line 2541) | void netcam_cleanup(netcam_context_ptr netcam, int init_retry_flag)
function netcam_next (line 2681) | int netcam_next(struct context *cnt, unsigned char *image)
function netcam_start (line 2747) | int netcam_start(struct context *cnt)
FILE: netcam.h
type netcam_context (line 50) | struct netcam_context
type url_t (line 77) | struct url_t {
type netcam_buff (line 90) | typedef struct netcam_image_buff {
type netcam_buff (line 97) | typedef netcam_buff *netcam_buff_ptr;
type tfile_context (line 99) | typedef struct file_context {
type netcam_context (line 114) | typedef struct netcam_context {
type mjpg_header (line 274) | typedef struct {
type netcam_context (line 293) | struct netcam_context
type netcam_context (line 294) | struct netcam_context
type context (line 296) | struct context
type context (line 297) | struct context
type netcam_context (line 298) | struct netcam_context
FILE: netcam_ftp.c
function ftp_context_pointer (line 30) | ftp_context_pointer ftp_new_context(void)
function ftp_free_context (line 55) | void ftp_free_context(ftp_context_pointer ctxt)
function ftp_parse_response (line 90) | static int ftp_parse_response(char *buf, int len)
function ftp_get_more (line 135) | static int ftp_get_more(ftp_context_pointer ctxt)
function ftp_get_response (line 193) | static int ftp_get_response(ftp_context_pointer ctxt)
function ftp_send_user (line 267) | static int ftp_send_user(ftp_context_pointer ctxt)
function ftp_send_passwd (line 293) | static int ftp_send_passwd(ftp_context_pointer ctxt)
function ftp_quit (line 327) | static int ftp_quit(ftp_context_pointer ctxt)
function ftp_connect (line 358) | int ftp_connect(netcam_context_ptr netcam)
function ftp_get_connection (line 494) | static int ftp_get_connection(ftp_context_pointer ctxt)
function ftp_close_connection (line 663) | static int ftp_close_connection(ftp_context_pointer ctxt)
function ftp_get_socket (line 717) | int ftp_get_socket(ftp_context_pointer ctxt)
function ftp_send_type (line 791) | int ftp_send_type(ftp_context_pointer ctxt, char type)
function ftp_read (line 835) | int ftp_read(ftp_context_pointer ctxt, void *dest, int len)
function ftp_close (line 872) | int ftp_close(ftp_context_pointer ctxt)
FILE: netcam_ftp.h
type ftp_context (line 16) | typedef struct ftp_context {
FILE: netcam_jpeg.c
type netcam_source_mgr (line 24) | typedef struct {
type netcam_source_mgr (line 32) | typedef netcam_source_mgr *netcam_src_ptr;
function netcam_init_source (line 48) | static void netcam_init_source(j_decompress_ptr cinfo)
function boolean (line 59) | static boolean netcam_fill_input_buffer(j_decompress_ptr cinfo)
function netcam_skip_input_data (line 97) | static void netcam_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
function netcam_term_source (line 111) | static void netcam_term_source(j_decompress_ptr cinfo ATTRIBUTE_UNUSED)
function netcam_memory_src (line 129) | static void netcam_memory_src(j_decompress_ptr cinfo, char *data, int le...
function netcam_error_exit (line 167) | static void netcam_error_exit(j_common_ptr cinfo)
function netcam_output_message (line 199) | static void netcam_output_message(j_common_ptr cinfo)
function netcam_init_jpeg (line 242) | static int netcam_init_jpeg(netcam_context_ptr netcam, j_decompress_ptr ...
function netcam_image_conv (line 347) | static int netcam_image_conv(netcam_context_ptr netcam,
function netcam_proc_jpeg (line 435) | int netcam_proc_jpeg(netcam_context_ptr netcam, unsigned char *image)
function netcam_get_dimensions (line 500) | void netcam_get_dimensions(netcam_context_ptr netcam)
FILE: netcam_rtsp.c
function netcam_check_buffsize (line 24) | static void netcam_check_buffsize(netcam_buff_ptr buff, size_t numbytes)
function decode_packet (line 54) | static int decode_packet(AVPacket *packet, netcam_buff_ptr buffer, AVFra...
function open_codec_context (line 83) | static int open_codec_context(int *stream_idx, AVFormatContext *fmt_ctx,...
type rtsp_context (line 123) | struct rtsp_context
type rtsp_context (line 125) | struct rtsp_context
type rtsp_context (line 128) | struct rtsp_context
type rtsp_context (line 130) | struct rtsp_context
function rtsp_free_context (line 147) | static void rtsp_free_context(struct rtsp_context *ctxt)
function rtsp_connect (line 172) | int rtsp_connect(netcam_context_ptr netcam)
function netcam_read_rtsp_image (line 220) | int netcam_read_rtsp_image(netcam_context_ptr netcam)
function netcam_shutdown_rtsp (line 324) | void netcam_shutdown_rtsp(netcam_context_ptr netcam)
FILE: netcam_rtsp.h
type rtsp_context (line 9) | struct rtsp_context {
type rtsp_context (line 19) | struct rtsp_context
FILE: netcam_wget.c
function header_get (line 68) | int header_get(netcam_context_ptr netcam, char **hdr, enum header_get_fl...
function header_process (line 137) | int header_process(const char *header, const char *name,
function header_extract_number (line 159) | int header_extract_number(const char *header, void *closure)
function header_strdup (line 189) | int header_strdup(const char *header, void *closure)
function skip_lws (line 201) | int skip_lws(const char *string)
function base64_encode (line 219) | void base64_encode(const char *s, char *store, int length)
function http_process_type (line 270) | int http_process_type(const char *hdr, void *arg)
function rbuf_initialize (line 291) | void rbuf_initialize(netcam_context_ptr netcam)
function rbuf_read_bufferful (line 297) | int rbuf_read_bufferful(netcam_context_ptr netcam)
function rbuf_peek (line 308) | int rbuf_peek(netcam_context_ptr netcam, char *store)
function rbuf_flush (line 335) | int rbuf_flush(netcam_context_ptr netcam, char *where, int maxsize)
function http_result_code (line 356) | int http_result_code(const char *header)
FILE: netcam_wget.h
type rbuf (line 32) | struct rbuf
type header_get_flags (line 85) | enum header_get_flags{
type header_get_flags (line 90) | enum header_get_flags
FILE: picture.c
type mem_destination_mgr (line 25) | typedef struct {
type mem_destination_mgr (line 32) | typedef mem_destination_mgr *mem_dest_ptr;
function init_destination (line 35) | METHODDEF(void) init_destination(j_compress_ptr cinfo)
function empty_output_buffer (line 43) | METHODDEF(boolean) empty_output_buffer(j_compress_ptr cinfo)
function term_destination (line 53) | METHODDEF(void) term_destination(j_compress_ptr cinfo)
function _jpeg_mem_dest (line 59) | static GLOBAL(void) _jpeg_mem_dest(j_compress_ptr cinfo, JOCTET* buf, si...
function _jpeg_mem_size (line 80) | static GLOBAL(int) _jpeg_mem_size(j_compress_ptr cinfo)
function put_uint16 (line 145) | static void put_uint16(JOCTET *buf, unsigned value)
function put_sint16 (line 151) | static void put_sint16(JOCTET *buf, int value)
function put_uint32 (line 157) | static void put_uint32(JOCTET *buf, unsigned value)
type tiff_writing (line 165) | struct tiff_writing {
function put_direntry (line 171) | static void put_direntry(struct tiff_writing *into, const char *data, un...
function put_stringentry (line 192) | static void put_stringentry(struct tiff_writing *into, unsigned tag, con...
function put_subjectarea (line 204) | static void put_subjectarea(struct tiff_writing *into, const struct coor...
function put_jpeg_exif (line 224) | static void put_jpeg_exif(j_compress_ptr cinfo,
function put_jpeg_yuv420p_memory (line 416) | static int put_jpeg_yuv420p_memory(unsigned char *dest_image, int image_...
function put_jpeg_grey_memory (line 497) | static int put_jpeg_grey_memory(unsigned char *dest_image, int image_siz...
function put_jpeg_yuv420p_file (line 550) | static void put_jpeg_yuv420p_file(FILE *fp,
function put_jpeg_grey_file (line 626) | static void put_jpeg_grey_file(FILE *picture, unsigned char *image, int ...
function put_ppm_bgr24_file (line 675) | static void put_ppm_bgr24_file(FILE *picture, unsigned char *image, int ...
function overlay_smartmask (line 740) | void overlay_smartmask(struct context *cnt, unsigned char *out)
function overlay_fixed_mask (line 784) | void overlay_fixed_mask(struct context *cnt, unsigned char *out)
function overlay_largest_label (line 828) | void overlay_largest_label(struct context *cnt, unsigned char *out)
function put_picture_memory (line 882) | int put_picture_memory(struct context *cnt, unsigned char* dest_image, i...
function put_picture_fd (line 900) | void put_picture_fd(struct context *cnt, FILE *picture, unsigned char *i...
function put_picture (line 920) | void put_picture(struct context *cnt, char *file, unsigned char *image, ...
function put_fixed_mask (line 1023) | void put_fixed_mask(struct context *cnt, const char *file)
function preview_save (line 1065) | void preview_save(struct context *cnt)
FILE: picture.h
type context (line 15) | struct context
type context (line 16) | struct context
type context (line 17) | struct context
type context (line 18) | struct context
type context (line 19) | struct context
type context (line 20) | struct context
type context (line 21) | struct context
type context (line 23) | struct context
FILE: pwc-ioctl.h
type __u16 (line 61) | typedef __u16 __le16;
type pwc_coord (line 94) | struct pwc_coord
type pwc_probe (line 102) | struct pwc_probe
type pwc_serial (line 108) | struct pwc_serial
type pwc_whitebalance (line 128) | struct pwc_whitebalance
type pwc_wb_speed (line 140) | struct pwc_wb_speed
type pwc_leds (line 148) | struct pwc_leds
type pwc_imagesize (line 155) | struct pwc_imagesize
type pwc_mpt_angles (line 171) | struct pwc_mpt_angles
type pwc_mpt_range (line 180) | struct pwc_mpt_range
type pwc_mpt_status (line 186) | struct pwc_mpt_status
type pwc_video_command (line 198) | struct pwc_video_command
type pwc_table_init_buffer (line 300) | struct pwc_table_init_buffer {
type pwc_raw_frame (line 324) | struct pwc_raw_frame {
FILE: rotate.c
type __uint32 (line 40) | typedef unsigned TYPE_32BIT __uint32;
function __uint32 (line 111) | static inline __uint32 rot__bswap_32(__uint32 __bsx)
function reverse_inplace_quad (line 137) | static void reverse_inplace_quad(unsigned char *src, int size)
function rot90cw (line 167) | static void rot90cw(unsigned char *src, register unsigned char *dst, int...
function rot90ccw (line 200) | static inline void rot90ccw(unsigned char *src, register unsigned char *...
function rotate_init (line 229) | void rotate_init(struct context *cnt)
function rotate_deinit (line 318) | void rotate_deinit(struct context *cnt)
function rotate_map (line 340) | int rotate_map(struct context *cnt, unsigned char *map)
FILE: rotate.h
type context (line 28) | struct context
type context (line 39) | struct context
type context (line 65) | struct context
FILE: sdl.c
function sdl_video_open (line 21) | static int sdl_video_open(int width, int height)
function sdl_start (line 76) | int sdl_start(int width, int height)
function sdl_put (line 113) | void sdl_put(unsigned char *image, int width, int height)
function sdl_stop (line 169) | void sdl_stop(void)
FILE: stream.c
type auth_param (line 34) | struct auth_param {
function set_sock_timeout (line 49) | static int set_sock_timeout(int sock, int sec)
function read_http_request (line 69) | static int read_http_request(int sock, char* buffer, int buflen, char* u...
type stream (line 160) | struct stream
type auth_param (line 169) | struct auth_param
type auth_param (line 169) | struct auth_param
function CvtHex (line 269) | static void CvtHex(IN HASH Bin, OUT HASHHEX Hex)
function DigestCalcHA1 (line 293) | static void DigestCalcHA1(
function DigestCalcResponse (line 330) | static void DigestCalcResponse(
type auth_param (line 388) | struct auth_param
type auth_param (line 388) | struct auth_param
function do_client_auth (line 628) | static void do_client_auth(struct context *cnt, int sc)
function http_bindsock (line 711) | int http_bindsock(int port, int local, int ipv6_enabled)
function http_acceptsock (line 797) | static int http_acceptsock(int sl)
function stream_flush (line 823) | static void stream_flush(struct stream *list, int *stream_count, int lim)
type stream_buffer (line 933) | struct stream_buffer
type stream_buffer (line 935) | struct stream_buffer
type stream_buffer (line 935) | struct stream_buffer
function stream_add_client (line 947) | static void stream_add_client(struct stream *list, int sc)
function stream_add_write (line 984) | static void stream_add_write(struct stream *list, struct stream_buffer *...
function stream_check_write (line 1019) | static int stream_check_write(struct stream *list)
function stream_init (line 1039) | int stream_init(struct context *cnt)
function stream_stop (line 1053) | void stream_stop(struct context *cnt)
function stream_put (line 1097) | void stream_put(struct context *cnt, unsigned char *image)
FILE: stream.h
type stream_buffer (line 24) | struct stream_buffer {
type stream (line 30) | struct stream {
type context (line 41) | struct context
type context (line 42) | struct context
type context (line 43) | struct context
FILE: track.c
type trackoptions (line 17) | struct trackoptions
type context (line 44) | struct context
type context (line 46) | struct context
type context (line 47) | struct context
type context (line 48) | struct context
type context (line 50) | struct context
type coord (line 50) | struct coord
type images (line 50) | struct images
type context (line 51) | struct context
type coord (line 51) | struct coord
type images (line 52) | struct images
type context (line 53) | struct context
type coord (line 53) | struct coord
type images (line 53) | struct images
type context (line 56) | struct context
type context (line 57) | struct context
type coord (line 57) | struct coord
type images (line 58) | struct images
type context (line 60) | struct context
type context (line 61) | struct context
type coord (line 61) | struct coord
type images (line 62) | struct images
function track_center (line 67) | unsigned int track_center(struct context *cnt, int dev ATTRIBUTE_UNUSED,
function track_move (line 104) | unsigned int track_move(struct context *cnt, int dev, struct coord *cent...
function stepper_command (line 140) | static unsigned int stepper_command(struct context *cnt, unsigned int mo...
function stepper_status (line 167) | static unsigned int stepper_status(struct context *cnt, unsigned int motor)
function stepper_center (line 173) | static unsigned int stepper_center(struct context *cnt, int x_offset, in...
function stepper_move (line 232) | static unsigned int stepper_move(struct context *cnt,
function servo_open (line 294) | static int servo_open(struct context *cnt)
function servo_command (line 327) | static unsigned int servo_command(struct context *cnt, unsigned int motor,
function servo_position (line 361) | static unsigned int servo_position(struct context *cnt, unsigned int motor)
function servo_move (line 376) | static unsigned int servo_move(struct context *cnt, struct coord *cent,
function servo_status (line 548) | static unsigned int servo_status(struct context *cnt, unsigned int motor)
function servo_center (line 564) | static unsigned int servo_center(struct context *cnt, int x_offset, int ...
function iomojo_command (line 619) | static char iomojo_command(struct context *cnt, char *command, int len, ...
function iomojo_setspeed (line 639) | static void iomojo_setspeed(struct context *cnt, unsigned int speed)
function iomojo_movehome (line 651) | static void iomojo_movehome(struct context *cnt)
function iomojo_center (line 661) | static unsigned int iomojo_center(struct context *cnt, int x_offset, int...
function iomojo_move (line 725) | static unsigned int iomojo_move(struct context *cnt, int dev, struct coo...
function lqos_center (line 791) | static unsigned int lqos_center(struct context *cnt, int dev, int x_angl...
function lqos_move (line 840) | static unsigned int lqos_move(struct context *cnt, int dev, struct coord...
function uvc_center (line 919) | static unsigned int uvc_center(struct context *cnt, int dev, int x_angle...
function uvc_move (line 1063) | static unsigned int uvc_move(struct context *cnt, int dev, struct coord ...
FILE: track.h
type trackoptions (line 15) | struct trackoptions {
type trackoptions (line 43) | struct trackoptions
type context (line 45) | struct context
type context (line 46) | struct context
type coord (line 46) | struct coord
type images (line 46) | struct images
FILE: video.c
function v4l_picture_controls (line 19) | static void v4l_picture_controls(struct context *cnt, struct video_dev *...
type video_dev (line 130) | struct video_dev
type video_capability (line 134) | struct video_capability
type video_channel (line 135) | struct video_channel
type video_tuner (line 136) | struct video_tuner
type video_mbuf (line 137) | struct video_mbuf
type video_mmap (line 138) | struct video_mmap
type video_channel (line 150) | struct video_channel
type video_tuner (line 168) | struct video_tuner
function v4l_next (line 298) | int v4l_next(struct video_dev *viddev, unsigned char *map, int width, in...
function v4l_set_input (line 376) | void v4l_set_input(struct context *cnt, struct video_dev *viddev, unsign...
FILE: video.h
type video_buff (line 42) | typedef struct video_image_buff {
type video_dev (line 51) | struct video_dev {
type context (line 89) | struct context
type context (line 90) | struct context
type context (line 91) | struct context
type context (line 99) | struct context
type video_dev (line 99) | struct video_dev
type video_dev (line 104) | struct video_dev
type context (line 106) | struct context
type video_dev (line 106) | struct video_dev
type config (line 107) | struct config
type video_dev (line 108) | struct video_dev
type context (line 111) | struct context
type video_dev (line 111) | struct video_dev
type context (line 113) | struct context
type video_dev (line 113) | struct video_dev
type config (line 114) | struct config
type context (line 115) | struct context
type video_dev (line 115) | struct video_dev
type video_dev (line 116) | struct video_dev
type video_dev (line 117) | struct video_dev
FILE: video2.c
type src_v4l2_t (line 160) | typedef struct {
function xioctl (line 182) | static int xioctl(int fd, int request, void *arg)
function v4l2_get_capability (line 196) | static int v4l2_get_capability(src_v4l2_t * vid_source)
function v4l2_select_input (line 247) | static int v4l2_select_input(struct config *conf, struct video_dev *viddev,
function v4l2_do_set_pix_format (line 394) | static int v4l2_do_set_pix_format(u32 pixformat, src_v4l2_t * vid_source,
function v4l2_set_pix_format (line 447) | static int v4l2_set_pix_format(struct context *cnt, src_v4l2_t * vid_sou...
function v4l2_set_fps (line 546) | static void v4l2_set_fps(src_v4l2_t * vid_source) {
function v4l2_set_mmap (line 565) | static int v4l2_set_mmap(src_v4l2_t * vid_source)
function v4l2_scan_controls (line 661) | static int v4l2_scan_controls(src_v4l2_t * vid_source)
function v4l2_set_control (line 718) | static int v4l2_set_control(src_v4l2_t * vid_source, u32 cid, int value)
function v4l2_picture_controls (line 768) | static void v4l2_picture_controls(struct context *cnt, struct video_dev ...
type context (line 806) | struct context
type video_dev (line 806) | struct video_dev
type config (line 821) | struct config
function v4l2_set_input (line 868) | void v4l2_set_input(struct context *cnt, struct video_dev *viddev, unsig...
function v4l2_next (line 943) | int v4l2_next(struct context *cnt, struct video_dev *viddev, unsigned ch...
function v4l2_close (line 1076) | void v4l2_close(struct video_dev *viddev)
function v4l2_cleanup (line 1090) | void v4l2_cleanup(struct video_dev *viddev)
FILE: video_common.c
type code_table_t (line 23) | typedef struct {
function sonix_decompress_init (line 37) | static void sonix_decompress_init(code_table_t * table)
function sonix_decompress (line 103) | int sonix_decompress(unsigned char *outp, unsigned char *inp, int width,...
function bayer2rgb24 (line 183) | void bayer2rgb24(unsigned char *dst, unsigned char *src, long int width,...
function conv_yuv422to420p (line 261) | void conv_yuv422to420p(unsigned char *map, unsigned char *cap_map, int w...
function conv_uyvyto420p (line 299) | void conv_uyvyto420p(unsigned char *map, unsigned char *cap_map, unsigne...
function conv_rgb24toyuv420p (line 339) | void conv_rgb24toyuv420p(unsigned char *map, unsigned char *cap_map, int...
function mjpegtoyuv420p (line 388) | int mjpegtoyuv420p(unsigned char *map, unsigned char *cap_map, int width...
function vid_do_autobright (line 455) | int vid_do_autobright(struct context *cnt, struct video_dev *viddev)
type video_dev (line 516) | struct video_dev
function vid_init (line 524) | void vid_init(void)
function vid_cleanup (line 534) | void vid_cleanup(void)
function vid_close (line 546) | void vid_close(struct context *cnt)
type context (line 649) | struct context
type config (line 651) | struct config
type video_dev (line 653) | struct video_dev
type video_dev (line 728) | struct video_dev
type video_dev (line 729) | struct video_dev
function vid_start (line 856) | int vid_start(struct context *cnt)
type context (line 899) | struct context
type config (line 902) | struct config
type video_dev (line 916) | struct video_dev
FILE: video_freebsd.c
type camparam_st (line 44) | struct camparam_st {
function catchsignal (line 70) | static void catchsignal(int sig)
function yuv422to420p (line 76) | static void yuv422to420p(unsigned char *map, unsigned char *cap_map, int...
function rgb24toyuv420p (line 114) | static void rgb24toyuv420p(unsigned char *map, unsigned char *cap_map, i...
function set_hue (line 176) | static int set_hue(int viddev, int new_hue)
function get_hue (line 191) | static int get_hue(int viddev , int *hue)
function set_saturation (line 206) | static int set_saturation(int viddev, int new_saturation)
function get_saturation (line 221) | static int get_saturation(int viddev , int *saturation)
function set_contrast (line 236) | static int set_contrast(int viddev, int new_contrast)
function get_contrast (line 251) | static int get_contrast(int viddev, int *contrast)
function set_brightness (line 267) | static int set_brightness(int viddev, int new_bright)
function get_brightness (line 283) | static int get_brightness(int viddev, int *brightness)
function set_freq (line 322) | static int set_freq(struct video_dev *viddev, unsigned long freq)
function set_input (line 364) | static int set_input(struct video_dev *viddev, unsigned input)
function set_geometry (line 401) | static int set_geometry(struct video_dev *viddev, int width, int height)
function set_input_format (line 444) | static int set_input_format(struct video_dev *viddev, unsigned newformat)
function v4l_picture_controls (line 561) | static void v4l_picture_controls(struct context *cnt, struct video_dev *...
type video_dev (line 604) | struct video_dev
type sigaction (line 608) | struct sigaction
function v4l_next (line 797) | static int v4l_next(struct video_dev *viddev, unsigned char *map, int wi...
function v4l_set_input (line 858) | static void v4l_set_input(struct context *cnt, struct video_dev *viddev,...
type video_dev (line 930) | struct video_dev
function vid_init (line 938) | void vid_init(void)
function vid_cleanup (line 948) | void vid_cleanup(void)
function vid_close (line 960) | void vid_close(struct context *cnt)
function vid_start (line 1052) | int vid_start(struct context *cnt)
function vid_next (line 1273) | int vid_next(struct context *cnt, unsigned char *map)
FILE: video_freebsd.h
type video_dev (line 92) | struct video_dev {
type context (line 128) | struct context
type context (line 129) | struct context
type context (line 130) | struct context
FILE: vloopback_motion.c
function v4l_open_vidpipe (line 20) | static int v4l_open_vidpipe(void)
function v4l_startpipe (line 182) | static int v4l_startpipe(const char *dev_name, int width, int height, in...
function v4l_putpipe (line 234) | static int v4l_putpipe(int dev, unsigned char *image, int size)
function vid_startpipe (line 243) | int vid_startpipe(const char *dev_name, int width, int height, int type)
function vid_putpipe (line 252) | int vid_putpipe (int dev, unsigned char *image, int size)
FILE: webhttpd.c
function write_nonblock (line 194) | static ssize_t write_nonblock(int fd, const void *buf, size_t size)
function read_nonblock (line 220) | static ssize_t read_nonblock(int fd ,void *buf, ssize_t size)
function send_template_ini_client (line 246) | static void send_template_ini_client(int client_socket, const char *temp...
function send_template_ini_client_raw (line 258) | static void send_template_ini_client_raw(int client_socket)
function send_template (line 269) | static void send_template(int client_socket, char *res)
function send_template_raw (line 280) | static void send_template_raw(int client_socket, char *res)
function send_template_end_client (line 289) | static void send_template_end_client(int client_socket)
function response_client (line 298) | static void response_client(int client_socket, const char *template, cha...
function url_decode (line 347) | static void url_decode(char *urlencoded, size_t length)
function config (line 393) | static unsigned int config(char *pointer, char *res, unsigned int length...
function action (line 926) | static unsigned int action(char *pointer, char *res, unsigned int length...
function detection (line 1108) | static unsigned int detection(char *pointer, char *res, unsigned int len...
function track (line 1272) | static unsigned int track(char *pointer, char *res, unsigned int length_...
function handle_get (line 1944) | static unsigned int handle_get(int client_socket, const char *url, void ...
function read_client (line 2207) | static unsigned int read_client(int client_socket, void *userdata, char ...
function acceptnonblocking (line 2359) | static int acceptnonblocking(int serverfd, int timeout)
function httpd_run (line 2388) | void httpd_run(struct context **cnt)
type context (line 2537) | struct context
FILE: webhttpd.h
type context (line 21) | struct context
Condensed preview — 82 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,090K chars).
[
{
"path": ".gitignore",
"chars": 16,
"preview": "*.log\n.svn/\n*.o\n"
},
{
"path": "CHANGELOG",
"chars": 124286,
"preview": "SVN trunk Summary of Changes\n\nFeatures\n * Insert Blanking frames http://www.lavrsen.dk/twiki/bin/view/Motion/FeatureRe"
},
{
"path": "CODE_STANDARD",
"chars": 7032,
"preview": "Formatting rules for Motion code.\nVersion 2.0 - 15 Jul 2008\n\nNote: To understand them you must view this document with s"
},
{
"path": "COPYING",
"chars": 17982,
"preview": "\t\t GNU GENERAL PUBLIC LICENSE\n\t\t Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
},
{
"path": "CREDITS",
"chars": 83300,
"preview": "Thanks go to:\n\nJeroen Vreeken\n *** Original writer of this great program! ***\n From 3.1.12 these contributions:\n"
},
{
"path": "FAQ",
"chars": 1030,
"preview": "This FAQ is no longer kept up to date\nLook at this URL for a more up to date wiki based FAQ\nhttp://www.lavrsen.dk/twiki/"
},
{
"path": "INSTALL",
"chars": 111,
"preview": "Very simple:\n\ntype:\n\n ./configure\n\nfollowed by:\n\n make\n\nAnd\n\n make install\n\n \nNext read the README\n"
},
{
"path": "Makefile.in",
"chars": 13148,
"preview": "################################################################################\n# Makefile for Motion "
},
{
"path": "README",
"chars": 2479,
"preview": "Motion up to version 3.1.8 was created and maintained by Jeroen Vreeken.\nVersions 3.1.9-3.1.12 was maintained by Kenneth"
},
{
"path": "README.FreeBSD",
"chars": 2173,
"preview": "The motion port to *BSD is still in very beta state, but\nhas been tested with network cameras support successfully.\nThis"
},
{
"path": "README.MacOSX",
"chars": 1034,
"preview": " The motion port to MacOSX is only working with network cameras. \n\n Tested in latest MacOSX \n\n Packages needed :\n\n * au"
},
{
"path": "README.axis_2100",
"chars": 577,
"preview": "Using motion with the Axis 2100 network camera\n\nFirst compile the motion binary as described in README and INSTALL\nThen "
},
{
"path": "alg.c",
"chars": 43289,
"preview": "/* alg.c\n *\n * Detect changes in a video stream.\n * Copyright 2001 by Jeroen Vreeken (pe1rxq@amsat.org)\n * T"
},
{
"path": "alg.h",
"chars": 1318,
"preview": "/* alg.h\n *\n * Detect changes in a video stream.\n * Copyright 2001 by Jeroen Vreeken (pe1rxq@amsat.org)\n * T"
},
{
"path": "commit-version.sh",
"chars": 166,
"preview": "#!/bin/sh\n\nSNV_VERSION=`cd \"$1\" && LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2`\nSNV_VERSION=`expr $SN"
},
{
"path": "conf.c",
"chars": 76130,
"preview": "/*\n **\n ** conf.c\n **\n ** I originally wrote conf.c as part of the drpoxy package\n ** thanks to Matthew Pratt and o"
},
{
"path": "conf.h",
"chars": 4767,
"preview": "/*\n *\n * conf.h - function prototypes for the config handling routines\n *\n * Originally written for the dproxy package b"
},
{
"path": "config.h.in",
"chars": 3473,
"preview": "/* config.h.in. Generated from configure.in by autoheader. */\n\n/* Define to 1 if you have the <fcntl.h> header file. *"
},
{
"path": "configure",
"chars": 215142,
"preview": "#! /bin/sh\n# Guess values for system-dependent variables and create Makefiles.\n# Generated by GNU Autoconf 2.69 for moti"
},
{
"path": "configure.in",
"chars": 35831,
"preview": "# Process this file with autoconf to produce a configure script\n\nAC_INIT(motion, esyscmd(['./version.sh']))\nAC_CONFIG_SR"
},
{
"path": "draw.c",
"chars": 26343,
"preview": "/*\n * draw.c\n *\n * Routines for drawing text on images\n *\n * Copyright 2000, Jeroen Vreeken\n * This program "
},
{
"path": "event.c",
"chars": 31576,
"preview": "/*\n event.c\n\n Generalised event handling for motion\n\n Copyright Jeroen Vreeken, 2002\n This software is distr"
},
{
"path": "event.h",
"chars": 1208,
"preview": "/*\n * event.h\n *\n * Include file for event.c\n *\n * Copyright Jeroen Vreeken, 2002\n * This software is distri"
},
{
"path": "ffmpeg-0.4.8-macosx.patch",
"chars": 1923,
"preview": "diff -Naupr ffmpeg-0.4.8/configure ffmpeg-0.4.8-macosx/configure\n--- ffmpeg-0.4.8/configure\t2003-09-28 08:26:39.00000000"
},
{
"path": "ffmpeg.c",
"chars": 30101,
"preview": "/*\n *\n * ffmpeg.c\n *\n * This software is distributed under the GNU Public License version 2\n * See also the file 'COPYIN"
},
{
"path": "ffmpeg.h",
"chars": 2513,
"preview": "#ifndef _INCLUDE_FFMPEG_H_\n#define _INCLUDE_FFMPEG_H_\n\n#ifdef HAVE_FFMPEG\n#include <errno.h>\n\n#ifdef FFMPEG_NEW_INCLUDES"
},
{
"path": "git-commit-version.sh",
"chars": 77,
"preview": "#!/bin/sh\n\nSNV_VERSION=`git show -s --format=%H`\necho -n \"Git-$SNV_VERSION\"\n\n"
},
{
"path": "jpegutils.c",
"chars": 41762,
"preview": "/*\n * jpegutils.c: Some Utility programs for dealing with\n * JPEG encoded images\n *\n * Copyright (C) 199"
},
{
"path": "jpegutils.h",
"chars": 2788,
"preview": "/*\n * jpegutils.h: Some Utility programs for dealing with\n * JPEG encoded images\n *\n * Copyright (C) 1999"
},
{
"path": "logger.c",
"chars": 6707,
"preview": "/*\n * logger.c\n *\n * Logger for motion\n *\n * Copyright 2005, William M. Brack\n * Copyright 2008 by A"
},
{
"path": "logger.h",
"chars": 2748,
"preview": "/*\n * logger.h\n *\n * Include file for logger.c\n *\n * Copyright 2005, William M. Brack\n * Copyright 2"
},
{
"path": "md5.c",
"chars": 10509,
"preview": "/*\n * MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm\n * taken from RFC 1321\n */\n\n/*\n Copyright (C) 1991-"
},
{
"path": "md5.h",
"chars": 2256,
"preview": "/*\n * MD5.H - header file for MD5C.C\n * taken from RFC 1321\n */\n\n#ifndef MD5_H\n#define MD5_H\n\n/* Copyright (C) 1991-2,"
},
{
"path": "mmx.h",
"chars": 12321,
"preview": "/*\n * mmx.h\n * Copyright (C) 1997-2001 H. Dietz and R. Fisher\n */\n#ifndef I386MMX_H\n#define I386MMX_H\n\n/*\n * The type of"
},
{
"path": "motion-dist.conf.in",
"chars": 27712,
"preview": "# Rename this distribution example file to motion.conf\n#\n# This config file was generated by @PACKAGE_NAME@ @PACKAGE_VER"
},
{
"path": "motion.1",
"chars": 35961,
"preview": ".TH MOTION 1 2011-12-12 \"Motion\" \"Motion Options and Config Files\"\n.SH NAME\nmotion \\- Detect motion using a video4linu"
},
{
"path": "motion.c",
"chars": 123121,
"preview": "/* motion.c\n *\n * Detect changes in a video stream.\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org)\n * "
},
{
"path": "motion.h",
"chars": 14461,
"preview": "/* motion.h\n *\n * Include file for motion.c\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org)\n * Th"
},
{
"path": "motion.init-Debian.in",
"chars": 1391,
"preview": "#! /bin/bash\n#\n# @PACKAGE_NAME@ @PACKAGE_VERSION@\t\n# Start the motion detection .\n#\n\nNAME=@PACKAGE_NAME@\nPATH=/bin:/usr/"
},
{
"path": "motion.init-Fedora.in",
"chars": 2761,
"preview": "#!/bin/bash\n#\n# motion Startup script for the Motion Detection System \n#\n# chkconfig: - 85 15\n# description: "
},
{
"path": "motion.init-FreeBSD.sh.in",
"chars": 475,
"preview": "#!/bin/sh\n#\n# motion.sh for rc.d usage 2006 Angel Carpintero \n#\n# Add the following line in /etc/rc.conf to enable @PACK"
},
{
"path": "motion.spec.in",
"chars": 5891,
"preview": "Name: @PACKAGE_NAME@\nVersion: @PACKAGE_VERSION@\nRelease: 1%{?dist}\nSummary: A motion dete"
},
{
"path": "motion_guide.html",
"chars": 357014,
"preview": "<h1><a name=\"Motion_Guide_One_Large_Document\"></a><a name=\"_Motion_Guide_One_Large_Document\"></a> Motion Guide - One La"
},
{
"path": "netcam.c",
"chars": 106729,
"preview": "/*\n * netcam.c\n *\n * Module for handling network cameras.\n *\n * This code was inspired by the original ne"
},
{
"path": "netcam.h",
"chars": 12533,
"preview": "/*\n * netcam.h\n *\n * Include file for handling network cameras.\n *\n * This code was inspired by the original ne"
},
{
"path": "netcam_ftp.c",
"chars": 22196,
"preview": "/*\n * Much of the FTP code was inspired by the nanoftp.c module from\n * libxml2 (Copyright Daniel Veillard, 20"
},
{
"path": "netcam_ftp.h",
"chars": 1738,
"preview": "/*\n * Much of the FTP routines was inspired by the nanoftp.c module from\n * libxml2 (Copyright Daniel Veillard"
},
{
"path": "netcam_jpeg.c",
"chars": 16357,
"preview": "/*\n * netcam_jpeg.c\n *\n * Module for handling JPEG decompression for network cameras.\n *\n * This code was inspi"
},
{
"path": "netcam_rtsp.c",
"chars": 8774,
"preview": "#include <stdio.h>\n#include \"netcam_rtsp.h\"\n#include \"motion.h\"\n\n#ifdef have_av_get_media_type_string\n\n/****************"
},
{
"path": "netcam_rtsp.h",
"chars": 683,
"preview": "#include \"netcam.h\"\n#include <libavcodec/avcodec.h>\n#include <libavformat/avformat.h>\n#include <libavformat/avio.h>\n#inc"
},
{
"path": "netcam_wget.c",
"chars": 10199,
"preview": "/*\nCopyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002\n Free Software Foundation, Inc.\n\nAdditional Copyright (C) 2"
},
{
"path": "netcam_wget.h",
"chars": 3591,
"preview": "/*\nCopyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002\n Free Software Foundation, Inc.\n\nAdditional Copyright (C) 2"
},
{
"path": "picture.c",
"chars": 34697,
"preview": "/* picture.c\n *\n * Various funtions for saving/loading pictures.\n * Copyright 2002 by Jeroen Vreeken (pe1rxq@am"
},
{
"path": "picture.h",
"chars": 916,
"preview": "/*\n * picture.h\n *\n * Copyright 2002 by Jeroen Vreeken (pe1rxq@amsat.org)\n * Portions of this file are Copy"
},
{
"path": "pwc-ioctl.h",
"chars": 11628,
"preview": "#ifndef PWC_IOCTL_H\n#define PWC_IOCTL_H\n\n/* (C) 2001-2004 Nemosoft Unv.\n (C) 2004-2006 Luc Saillard (luc@saillard.org)"
},
{
"path": "pwc-ioctl.h-10.0.10",
"chars": 11628,
"preview": "#ifndef PWC_IOCTL_H\n#define PWC_IOCTL_H\n\n/* (C) 2001-2004 Nemosoft Unv.\n (C) 2004-2006 Luc Saillard (luc@saillard.org)"
},
{
"path": "pwc-ioctl.h-10.0.5",
"chars": 9467,
"preview": "#ifndef PWC_IOCTL_H\n#define PWC_IOCTL_H\n\n/* (C) 2001-2004 Nemosoft Unv.\n (C) 2004 Luc Saillard (luc@saillard.org)"
},
{
"path": "pwc-ioctl.h-pwc8.0",
"chars": 7500,
"preview": "#ifndef PWC_IOCTL_H\n#define PWC_IOCTL_H\n\n/* (C) 2001-2003 Nemosoft Unv. webcam@smcc.demon.nl\n \n This program is f"
},
{
"path": "pwc-ioctl.h-pwc9.0.1",
"chars": 8950,
"preview": "#ifndef PWC_IOCTL_H\n#define PWC_IOCTL_H\n\n/* (C) 2001-2004 Nemosoft Unv. webcam@smcc.demon.nl\n\n This program is free"
},
{
"path": "rotate.c",
"chars": 14671,
"preview": "/*\n * rotate.c\n *\n * Module for handling image rotation.\n *\n * Copyright 2004-2005, Per Jonsson (per@pjd.nu)\n *"
},
{
"path": "rotate.h",
"chars": 1635,
"preview": "/*\n * rotate.h\n *\n * Include file for handling image rotation.\n *\n * Copyright 2004-2005, Per Jonsson (per@pjd."
},
{
"path": "sdl.c",
"chars": 5819,
"preview": "/*\n * sdl.c\n *\n * sdl functions for motion.\n * Copyright 2009 by Peter Holik (peter@holik.at)\n * This softwa"
},
{
"path": "sdl.h",
"chars": 406,
"preview": "/* sdl.h\n *\n * Include file for sdl.c\n * Copyright 2009 by Peter Holik (peter@holik.at)\n * This software is "
},
{
"path": "stream.c",
"chars": 36832,
"preview": "/*\n * stream.c (based in webcam.c)\n * Streaming using jpeg images over a multipart/x-mixed-replace stream\n * Co"
},
{
"path": "stream.h",
"chars": 1372,
"preview": "/*\n * stream.h\n * \n * Include file for stream.c\n * Copyright (C) 2002 Jeroen Vreeken (pe1rxq@amsat.o"
},
{
"path": "thread1.conf.in",
"chars": 2132,
"preview": "# /usr/local/etc/thread1.conf\n#\n# This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ \n\n\n\n###############"
},
{
"path": "thread2.conf.in",
"chars": 2131,
"preview": "# /usr/local/etc/thread2.conf\n#\n# This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@\n\n\n\n################"
},
{
"path": "thread3.conf.in",
"chars": 2135,
"preview": "# /usr/local/etc/thread3.conf\n#\n# This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ \n\n\n\n###############"
},
{
"path": "thread4.conf.in",
"chars": 2628,
"preview": "# /usr/local/etc/thread4.conf\n#\n# This config file was generated by @PACKAGE_NAME@ @PACKAGE_VERSION@ \n\n#################"
},
{
"path": "track.c",
"chars": 42441,
"preview": "/* track.c\n *\n * Experimental motion tracking.\n *\n * Copyright 2000, Jeroen Vreeken\n * This program is publi"
},
{
"path": "track.h",
"chars": 4869,
"preview": "/* track.h\n *\n * Experimental motion tracking.\n *\n * Copyright 2000, Jeroen Vreeken\n * This program is publi"
},
{
"path": "version.sh",
"chars": 273,
"preview": "#!/bin/sh\n\nSNV_VERSION=`cd \"$1\" && LC_ALL=C svn info 2> /dev/null | grep Revision | cut -d' ' -f2`\ntest $SNV_VERSION || "
},
{
"path": "video.c",
"chars": 16116,
"preview": "/*\n * video.c\n *\n * Video stream functions for motion.\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org)\n "
},
{
"path": "video.h",
"chars": 3809,
"preview": "/*\tvideo.h\n *\n *\tInclude file for video.c\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat.org)\n * This softw"
},
{
"path": "video2.c",
"chars": 37613,
"preview": "/*\n * video2.c\n *\n * V4L2 interface with basically JPEG decompression support and even more ...\n * Copyright 20"
},
{
"path": "video_common.c",
"chars": 28306,
"preview": "/* video_common.c\n *\n * Video stream functions for motion.\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@am"
},
{
"path": "video_freebsd.c",
"chars": 39917,
"preview": "/* video_freebsd.c\n *\n * BSD Video stream functions for motion.\n * Copyright 2004 by Angel Carpintero (motionde"
},
{
"path": "video_freebsd.h",
"chars": 3561,
"preview": "/*\n * video_freebsd.h\n *\n * Include file for video_freebsd.c\n * Copyright 2004 by Angel Carpintero (motiondevelop@"
},
{
"path": "vloopback_motion.c",
"chars": 7134,
"preview": "/*\n * vloopback_motion.c\n *\n * Video loopback functions for motion.\n * Copyright 2000 by Jeroen Vreeken (pe1rxq"
},
{
"path": "vloopback_motion.h",
"chars": 538,
"preview": "/* vloopback_motion.h\n *\n * Include file for vloopback_motion.c\n * Copyright 2000 by Jeroen Vreeken (pe1rxq@amsat"
},
{
"path": "webhttpd.c",
"chars": 110838,
"preview": "/*\n * webhttpd.c\n *\n * HTTP Control interface for motion.\n *\n * Specs : http://www.lavrsen.dk/twiki/bin/v"
},
{
"path": "webhttpd.h",
"chars": 607,
"preview": "/*\n * webhttpd.h\n *\n * Include file for webhttpd.c\n *\n * Specs : http://www.lavrsen.dk/twiki/bin/view/Mot"
}
]
About this extraction
This page contains the full source code of the sackmotion/motion GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 82 files (1.9 MB), approximately 548.0k tokens, and a symbol index with 610 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.