File Release Notes and Changelog
Release Name: 1.00
Notes:
History:
Date: 2004-04-03
Summary: Stable release!
This is the first stable release. Some minor changes
were made since the last release candidate to insure that
data is never lost:
1. The ffmpeg.log file is now always created, in the movie
directory. In addition, after the movie processing is
completed, the ffmpeg.log is scanned for the number of
images processed. This allows you to confirm that the
processing was successful. For example:
Creating: 20040402-20040403000033.mpg from 12594 images
Movie creation completed, 12594 images processed
The first message (from the /var/log/dcs1000w.log) lists
12594 image captures that are being provided to ffmpeg as
input for the movie creation. The second message lists
the same number of images processed, extracted from the
ffmpeg.log file.
2. Instead of erasing the images after each day's processing,
they are moved to a 'yesterday' subdirectory in the image
capture directory. This allows full quality frames to be
extracted if needed, or to be used for local processing.
3. Since ffmpeg will stop processing when it finds a missing
image in the sequence, the script now scans the images to
insure there are no gaps prior to invoking ffmpeg. Any
gaps are backfilled with the prior frame. This prevents
premature termination of the movie creation and prevents
loss of data.
Date: 2004-03-11
Summary: Bug fix update, version 0.91
This is the second release candidate. If no additional
problems are encountered, this release will be renamed
1.0, and become the first stable release. Changes:
1. An additional hole in the date change detection was
corrected.
2. Better handling of restart processing, when movie
creation was in progress at the time of the interrupt.
3. A temporary "Please Standby" image is now created during
image file cleanup. The current.jpg symlink is pointed
at this file, so image viewers don't see the symlink
as broken for a few seconds. Opera, for example,
complained (error dialog) when this happened.
4. I added a good amount of debug code, to find the next
bug. Rather than remove it, I added a 'debug' option
which you can add as the last parameter on the command
line (see the new syntax). If you turn this on, the
script will generate considerable detail on its activity.
In addition, the ffmpeg processing messages will be
written to /var/log/ffmpeg.log.
5. Occasionally, ffmpeg would terminate after only a
brief period of processing. This would cause loss of
the days images, because the captures would be erased
when ffmpeg finished. This was finally traced to a
condition that could cause the image number to be
incremented twice, causing an image number to be
skipped in the sequence. When ffmpeg encountered the
gap, it thought it had run out of images and ended
normally. Fixed.
Date: 2004-02-28
Summary: Major feature update, version 0.90
The version number jump reflects that this release is a 1.0
release candidate. Significant changes:
1. Continuous capture is now performed. The daily creation
of the movie is now a low priority background process and
it occurs concurrent with the image captures. On slow
machines, the movie creation can take over an hour, which
would create a gap in the captures. This no longer occurs.
2. Robust recovery in the event processing is interrupted
during image capture or movie creation. In either case
proper recovery action occurs.
3. The trigger for the movie creation is now when the
filesystem date on the captured image changes. This
allows for shutting down the system for days, and still
having proper recovery.
4. A symlink to the most current image captured is maintained
as 'current.jpg' in the image capture directory. This allows
you to use an image viewer that can reload the images
periodically (like the Opera web browser) to monitor the
camera, without incurring any additional bandwidth load
on the camera itself. You can also use the ImageMagick
display command, for example:
display -update 5 -size 320x240 /camera/current.jpg &
5. The user error recovery routine, dcs1000w-error, can now be
anywhere in the path. It previously had to be in
/usr/local/bin. Note that since the default PATH (at least
on my distribution) doesn't include /usr/local/bin, I still
look there if I can't find dcs1000w-error in the PATH.
6. Directory paths are now used on all file references.
7. General cleanup and optimization all over the place.
More comments, and clearer explanations in comments.
Sleep in one second increments, so that response to an
interrupt is more timely. Better error messages.
Checks for things that shouldn't happen. The usual.
Date: 2004-02-07
Summary: Bug fix, cleanup, version 0.55
1. Reformatted long lines for readability
2. If an image capture results in a corrupted JPEG (RF noise
or premature termination due to firmware error), skip the
corrupted image. The next successful image capture will
take its place. This corrects the problem ffmpeg had when
an image was missing from the sequence.
Date: 2004-01-25
Summary: Bug fix, Feature addition, version 0.54
1. A misplaced option on the ffmpeg command caused the
created movies to only contain one frame per minute
of the original captures.
2. Support for a user exit on an error retrieving images
has been added. The program '/usr/local/bin/dcs1000w-error'
will be executed when an error is detected and logged if
it exists. A sample routine that uses X10 units to power
cycle the camera is included.
Date: 2004-01-15
Summary: Overall improvements, version 0.53
1. Remove movie creation on interrupt
This was unnecessary with the restart code.
2. Display version on startup
Useful to make sure you're running the correct release
3. Write messages to system log too
That way, log monitors (like swatch) can perform automated
recovery operations, page you, whatever.
4. Intercept additional signals
No matter how the script is killed, it should clean up
the temporary files it creates.
5. Check for midnight processing during error delay
If we were in the original error handler when midnight
arrived, the code skipped the movie creation. Duh.
6. Improve wget error recovery
I managed to lock-up the camera firmware a couple of times,
by pounding it with too fast retries. This code has been
working very reliably. The firmware in the camera still
reboots occassionally (reported as a bug to D-Link),
but it recovers automatically in a few seconds.
Date: 2004-01-05
Summary: Initial public release, version 0.52
I had purchased the D-Link DCS-1000W as a present for myself. Since
I only use Linux, the included software was of no value. I wanted to
use the camera for security, and occasionaly for other projects. For
example, I had recently watched a caterpillar metamorphize into a
Luna moth. It would have been neat to capture the whole process in
time-lapse. Since I couldn't find any existing software to do this
I created this Bash script.
Changes:
# Changelog:
#
# 1.00 - Always create the ffmpeg.log in the movies directory
# Note the number of images processed in the ffmpeg.log
# Move the day's images to a yesterday subdirectory in the
# image capture directory, so they can be reprocessed
# in the event of a discrepency in the image counts.
# Add a protective scan of the images to insure there are
# no missing sequence numbers. Backfill with the image
# immediately preceding the missing image if needed.
# 0.91 - Further improvement in day change detection
# Further improvement in restart recovery
# Maintain a valid current.jpg symlink during post-midnight
# processing cleanup
# Debugging support added with option 'debug'
# Correct a bug that occasionally caused an image to be skipped
# which in turn caused a premature termination of ffmpeg
# 0.90 - Maintain a symlink to the current image as current.jpg
# Change call to dcs1000w-error to use PATH vs hard location
# Allow continuous capture during movie creation
# Use proper path qualifiers on file references
# Many small enhancements
# 0.55 - Split long lines to prevent wrap
# Skip corrupted images that won't convert
# 0.54 - Correct misleading comment
# Correct misplaced ffmpeg option
# Call '/usr/local/bin/dcs1000w-error' on an image retrieval
# error, if it exists
# 0.53 - Remove movie creation on interrupt
# Display version on startup
# Write messages to system log too
# Intercept additional signals
# Check for midnight processing during error delay
# Improve wget error recovery
# 0.52 - Initial public release