SC2 Readme

0. Slack
1. System Requirements
2. Features
3. Installation
4. Operational Overview
5. Known Issues
6. Changes in this version
7. Contact



--------------------------------------------------------------------------------
0. Slack

Only one subgenius was harmed in the making of SC2, myself.  The application is
written entirely in Borland Delphi; Currently it is compiled with Delphi 6,
Enterprise Edition.

I should say thanks to some people that have been helpful in my authoring and
distributing SC2:

Thanks to Randall and Travis for setting me up with places to host this thing so
people downloading it didn't hurt the 1mbps SDSL line I had initially, and the
crummy cable I have now since Northpoint went *implode*.

Thanks to murex, ax, otterr, stifled, skawt, and the rest of you clowns who've
helped me betatest this thing, suggested features, and harassed me into making
the UI more useable than my slack-enhanced ass would've done otherwise.

Dobbs, you are the man.  No.  The Man.  No, THE MAN.

No thanks whatsoever to:

Nullsoft.  On top of being entirely lacking in protocol design skills, you've
also proven to me that you would rather waste time on entirely useless eye
candy "features" than making your software usable to anyone other than the llama
whos ass you claim to whip.  Gnutella protocol sucked.  The Icy protocol sucked.
Winamp 3 really sucks.

Mr. Coffee.  Thanks for having your coffee pot decide that my last pot was my
LAST pot, and exploding on me when I tried to make another.  Cleaning all 12
cups of water off the countertop was very fun.  Also, lacking any button like
"set" for the clock on the coffee maker was a great idea;  I love how bumping
the buttons changes the time so the thing not only displays the incorrect time,
but the automatic timer then comes on minutes or hours ahead of time so I wake
up to a cold pot of coffee.  That said, I've bought another Mr. Coffee.  Three
years later and although you've improved the carafe spout design greatly, the
button issue is the same.  The coffee makers are cheap, but not so cheap you
couldn't add one more damn button to fix the clock crap.



--------------------------------------------------------------------------------
1. System Requirements

SC2 has the following _minimum_ system requirements.
 - 32bit Windows.  Windows 2000/XP are supported.  Windows 95/98/ME should also
   work, but they are untested.
 - DirectX 9 or newer.
 - Windows Media Player 9 or newer.
 - Pentium-class or newer processor.
 - A reasonably fast processor, although not as fast as other webcam products
   require.
 - 2MB of disk space, not counting space for images you save.
 - 10MB of free memory.

The latest SC2 (Currently V1.3.2.27) is available at:
  http://asym.macroshell.com/sc2/



--------------------------------------------------------------------------------
2. Features

SC2 is designed to be simple to use, with all the features you "need" in a
webcam package, with none of the useless frills you'll find in other packages.
Here is a short list of features.

 - Streaming support via Windows Media Player 8 or greater.  Streams can be
   viewed from inside the internal http server, or directly through WMP.

 - Support for ANY Directshow supported video capture device. This means not
   only will it work with your average Logitech USB device, but it can also
   capture from IEEE-1394 (firewire) camcorders, TV-tuners, etc.

 - Captures can be 'smartly' named.  Not only does SC2 support normal
   overwriting of previous images, but it can also save the images in a sequence
   (limited to 10,000 images per directory) or with a timestamp
   in the filename.

 - Captures can be saved to the local hard drive, uploaded via FTP, or both.
   File naming settings are separate for local vs. FTP; you could capture
   sequential images and save them locally while using overwrite to FTP a single
   image up to an FTP site for example.

 - Smarter file saving options than your average webcam software.  SC2 can
   capture / FTP upload to a temporary file and then quickly delete the old file
   and rename the new one.  This eliminates the majority of "half complete"
   images you sometimes get when overwriting the old file directly.

 - Options are saved in an easy to edit .ini file in the directory where you put
   the executable file.  Nothing is put into any other directory (other than
   images!), nothing is put into the registry.

Future versions of SC2 will implement more powerful features, but never at the
expense of usability.  SC2 will NEVER contain "useless" features that serve only
to bloat the feature list and/or degrade overall performance of the system.


--------------------------------------------------------------------------------
3. Installation

Installing SC2 is dead easy.  Download the archive (currently sc2.zip), and run
the provided installer, setup.exe.

SC2 installs no 3rd party libraries (DLLs), does not put anything into the
registry except for installer information, and is entirely self contained.  The
only files required to use SC2
are SC2.exe, sc2.ini, and users.dat.  The latter two will be automatically
created if they are not found, and are thus not included in the download.

sc2.exe is the application itself.
sc2.ini holds the configuration information and settings for SC2.
users.dat is the user database for the internal HTTP server.



--------------------------------------------------------------------------------
4. Operational Overview

SC2 is designed to be rather simple to use.  When starting, you will be
presented with a list of available capture devices in the treeview to the left.
Double-clicking a device opens a preview window for that device inside the
right-hand area of the application.  If previously saved settings for that
device are available, they will be loaded, otherwise default settings are
applied.

The interface is designed to be both intuitive and consistent.  As with the
preview windows, double-clicking anything in the tree opens the associated
window.  Aside from the preview and HTTP server windows, all windows are modal;
modal means that you cannot do anything else with the application until you
close the new window.

There are several buttons along the top of the preview window.  The first three
are related to local file capture.  The camera icon captures a single frame
according to the "File Settings" for the device.  The clock icon starts an
interval capture timer according to those same settings.  The greyed out icon is
for capturing video clips, a feature that is not yet implemented.  The two
following icons, another camera and clock, are identical to their counterparts
except that they save via FTP instead of to a local file.  After that come the
stream support buttons.  The first one toggles streaming for that device on/off,
the second one allows you to configure your stream options.  The final icon in
the group is a disk, which will save the settings for the device in the .ini file.

Below these buttons is the caption text area, where you enter any caption you
want to be applied to the saved images.  This area is greyed out until you edit
your caption settings at least once for that device.  There are currently two
special sequences you can enter into the caption area which will be replaced in
the image.  '%d' will insert the current date, '%t' will insert the current
time.  %w will insert the currently playing track from winamp but ONLY from
version 2.x until nullsoft gets with the program; no winamp3, sorry.

The caption settings are the first thing in the tree below each device, and
changing these settings is straight forward.  You can choose a font for the
caption, change the captions foreground and background colors, change the font
size, etc.  The only unintuitive thing may be the color selection; simply
left-click a box to select the foreground color, right-click to select a
background color.  Changes are effective immidiately in the "Sample Text" area
at the bottom, additionally the current foreground color shows "FG" and the
current background color shows "BG" in the color box; If the two colors are the
same (why?!) the color box will show "FB".

Next are the file settings, and they are again rather self explanatory.  You
pick the directory you want to save the files to, the name of the file (not
including the extension), what type of file you want, and the naming method.
Here is a list of the (three currently) supported naming methods.

 - Overwrite.  The default method, new captures overwrite old ones.  This is the
   normal way to use this as webcam software.
 - Sequential.  The images are named sequentially, starting with <name>_0000 and
   continuing up to <name>_9999.
 - Timestamp.  The images are named according to the current date and time with
   the format <name>_yyyymmdd_hhmmss.

The FTP settings are similar, although they provide areas to enter the name and
address of the FTP server and other such settings.  PASSWORDS ARE SAVED IN
PLAINTEXT IN THE .INI FILE.  I recommend you either upload anonymously, upload
with an "unimportant" account, or keep your .ini file safe.  This will change
eventually, but that's just the way it is for now.

The HTTP settings again are similar, although there are less options here.
Currently you can set the port and the refresh interval for the built-in HTTP
server, as well as enable/disable authorization (user/password required to
access) and manage the authorization username and password list.

You can change the device settings by right-clicking the preview window.  This
is where you can change the properties of your capture device such as the
captured file resolution, adjust color properties, etc.  Features here are
dependant upon the camera manufacturer, please don't ask me to add more features
to the dialogs you see here;  I have no choice in the matter.  I know they are
named oddly as well, that is something I am working on.  Currently they are
named as they are seen in the windows SDK utility "graphedit."  Basically this
means that a few of them are named the same as variable names in the application
(vwPreview for example); the rest are named as windows names them when using
it's "smart" graph building.



--------------------------------------------------------------------------------
5. Known Issues

Of course, sometimes you have to release software that isn't quite "done" just
to get the bugs ironed out of the parts that ARE done.  That said, here is a
short list of things I already know are either broken or suboptimal.

 - Occasionally when streaming, the stream will "freeze" along with the preview
   window.  I'm trying to find out what's causing this, it only happens after
   several hours of streaming, and so far only with one device I've tried.
   Closing the preview window and reopening it (and restarting the stream)
   is all you can do for now.

 - PNG files are really large.  I'm working on this, although this seems normal
   for windows. (Try it in Photoshop.)

 - There should be an option to keep the proper aspect ratio on the preview
   window.

 - Sometimes your mouse cursor can disappear when you open a device preview
   window!  I think I've fixed this one, but if not, don't panic, it's easy to
   get back.  Just hit alt-f4 (this will close SC2), then after the application
   has closed, press ctl-alt-del to get the shutdown dialog.  Just move your
   mouse around here, it will quickly come back, then you can hit escape to
   close the dialog.  This may not work properly on windows 9x.  You can AVOID
   this happening for the most part, if it is happening to you (so far it's
   only happening to me.. the reverse of the normal bug situation!) by simply
   not moving your mouse after you double-click until the preview window is
   playing.

 - Again, FTP passwords are STORED IN PLAINTEXT IN THE INI FILE.  This will
   probably change.  If you are worried about this, use some other method.  You
   should probably use another method anyway if you are using a "real" account
   since FTP passwords are sent in plaintext to the server, and can be
   intercepted by any device between the server and your computer, as well as
   any device on an attached network.  I may add SSL HTTP support if there is
   demand.

 - If you have multiple identical capture devices, they will probably fight over
   settings, since the .ini file is organized by device name.  I'm working on
   this.

Here is a short list of features I would like to add in the future, pardon me if
I duplicate some of the above "known issues" because some things blur the line
for me.

 - Multithreading.  I intend to eventually have every preview window running in
   it's own thread instead of having one big, interrupt-driven thread.  This
   will negate some of the current problems such as the application becoming
   unresponsive when file or FTP activity is slow.  This will also allow PNGs
   to be created without tying up the entire application.  They currently cause
   noticable lag when they are compressing.

 - A more "modular" save support system.  For example, you should be able to
   save images in more than just the two places.  Maybe you want to have it
   put an "overwrite" image in one directory for a live webcam, and have it put
   the same image elsewhere with the "sequential" option for archival.

 - Video saving.  I will eventually add support to capture to video files.  They
   will probably be mpeg compressed ASF files to start with, since that is very
   easy to do with DirectShow.  I may add more support for other formats later
   if it isn't too difficult.



--------------------------------------------------------------------------------
6. Changes in this version

I should probably have added this section sooner, but then again, I'll probably
forget to update it all the time anyway.  With that in mind, here is the current
version history.


1.3.2.27
 - Fixed some bugs associated with the .26 release.
 - Fixed this readme to reflect prior versions were release 1 and not release 2
   as it previously indicated.  This is the first release 2 version to go
   public.  If you're curious, windows version numbers in four parts like this
   one are of the format: <major_version>.<minor_version>.<release>.<build>

1.3.1.26
 - Added some code to support streaming.  If streaming doesn't work for you, the
   buttons to enable/configure it will be greyed out.  I'm not sure why it won't
   work for some people, but I've implemented a work around.
 - Added more code related to the .25 release to make things more robust if you
   get silly and delete the directory you're saving images to.

1.3.1.25
 - Fixed a REALLY nasty bug that would cause the file thing not to work if
   you didn't have a directory "images" in your SC2 directory after a
   default install.  Sorry.

1.3.1.24
 - The temporary stream files are now stored in "<application_dir>\temp" which
   is automatically cleaned whenever SC2 starts up or shuts down.  This should
   eliminate nasty temp file buildup for good.
 - Hotkeys added to some common tasks in the menu of the main form.
 - Items added to help menu to visit SC2 homepage, forums, and get email support.
 - Installer updated to place shortcut to help and homepage in the start menu.
 - New internal device manager and HTML generation in perperation for user
   defined custom HTML templates in the future.
 - Miscellaneous little "tweaks" representing my last attempt to get this thing
   on Tucows.  If they won't take it now, to hell with 'em.  All you users know
   SC2 is the best webcam application -- ever.

1.3.1.23
 - Implemented a "stream connections" view in the HTTP status window.  Now you
   can keep track not only of people connecting to the internal HTTP server, but
   to any and all of your streams as well.
 - Updated the help file, now with pictures!

1.3.1.22
 - Forgot to implement "remove user" in the HTTP user manager.  Whoops.
 - Removed the property pages for the stream in favor of the new stream
   settings form.  More features to come.

1.3.1.21
 - Reworked the HTTP server a little bit.  Mostly code cleanup, but allowed me
   to implement something I wanted to have in here; multiple account support
   for the internal server.  You can add new users to the internal server by
   simply typing the name and password, then hitting enter.  To delete them,
   select the user in the grid, right click, and select delete.  User names and
   passwords are limited to 64 characters each.
 - The above rework also resulted in a few other changes.  Usernames and
   passwords for the internal http server are stored in the file 'users.dat' in
   whatever directory SC2 is in.  The passwords are no longer stored in plain
   text, but as an MD5 hash.  When new connections come in, the code hashes the
   provided password and looks through the userlist for a username.  If no user
   name is found or the hashes don't match, the connection is rejected.

1.2.4.19
 - Streaming support is finally in.  It's a little odd, but it works.  It
   creates a temporary ASF file in the SC2 directory that will be named
   nnnn.asf. It should delete this file when you close the device preview
   window, but if you terminate SC2 or it crashes, these files can be left
   behind.  They are zero bytes in size and can safely be deleted when SC2
   is not running.

1.2.3.17
 - Added the connection list to the HTTP Server, which also now uses keep-alive
   which should cut down some on overhead for people using it.

1.2.3.16
 - HTTP Auth now works propery.  You can specify a username and password,
   users can not connect without knowing it.

1.2.3.15
 - Fixed the internal HTTP server, it works again, and works fine.  CPU usage
   is starting to climb for SC2.  I'm going to look into it.

1.2.3.14
 - Fixed a bug with the timed capture for files.  It may exist in the FTP part
   as well but I don't think so.  The internal HTTP server is not working right
   now, but I'm looking into it.

1.2.3.10
 - Fixed a bug that caused the bug reporter to automatically send out the
   email instead of asking you first.  Sorry about that to anyone I may have
   worried or annoyed.
 - Video streaming and capture is coming along.  I'm having a few problems with
   it, nothing I can't handle though.  It does work, but it's disabled.  It
   only works in a very low bandwidth mode right now, and I can't keep it from
   creating a file.  Not good if you want to run it a long time without filling
   your drive up.

1.2.3.9
 - Increased number of digits in filenames using "sequential" mode from 4 to 5.
   This means that there is enough range to capture at 1FPS, as fast as SC2 can
   currently capture, with a 24 hour periods worth of images in one directory.
   This was primarily a support feature for the new "create a directory..."
   option.
 - The above "create a directory..." option is under the file settings for each
   device, and actually went into version 1.2.3.8.  I updated the help file, but
   forgot to update this file.  Additionaly, with 1.2.3.8, the file settings
   window has been changed in appearance to support more options in the future.
 - Added bug tracking capability.  Whenever there is a bug trapped by SC2, you
   will get a popup describing the bug, and an opportunity to email the log it
   generates to me.  I encourage you to click the button to send me the report.
   Alternatively, you can copy and paste the bug text to the bug reporting
   forum @ http://asym.macroshell.com/forums/

1.2.3.8
 - Began implementation of video capture/streaming.  This is not yet available
   to end users, but the code is starting to take shape.
 - Fixed a bug that caused the "Enable caption" setting to not work properly,
   resulting in captions always being applied.

1.2.3.7
 - Added an included file to the downloaded .zip, EULA.txt.  I highly recommend
   you read this file, since you agree to abide by it when you use SC2.  It's
   not long, and it's not a bunch of legal mumbo jumbo.
 - Created a help file (html help .chm) and help contexts to all major
   components to explain their operation.

1.2.3.6
 - Modified HTTP server so the images always come up in the same order, which
   is determined by their order in the device treeview.  If the preview window
   for the device is not available, the device is skipped.  The frame capture
   timer also does immediate conversion to jpeg as well.  This will cause some
   extra load overall, but drastically reduces load when many people are viewing
   the camera as the compression is not repeated over and over for each user.
 - Updated right-click menu on preview window to use friendlier names, also
   removed entries in the filtergraph that lack a property page.
 - Added a countdown timer to the preview window for file/ftp captures.  File
   captures show "L:nn", FTP captures show "N:nn".  L means Local, N means
   network.

1.2.2.5
 - Fixed a dumbass bug adding the property menu items for the video window
   over and over every time you selected one of them.
   
1.2.2.4
 - Moved the HTTP server to the main application.  Still very basic, but
   as I said before, at least it's in and working.  Only one port is required
   now to display all images.
 
1.2.1.4
 - Added a miniature HTTP server.  Currently, one server per device.  Each one
   must run on its own port.
 - Modified the frame capturing code so it's only called in one place for each
   preview window, currently captured at 1FPS.



--------------------------------------------------------------------------------
7. Contact

If you have an idea for a feature or just want to say something, feel free to
email me.  SC2 is currently donationware for non-commercial use.  You can use it
(I said use, not distribute) it any way you wish so long as you aren't making
any money off it, and you can send me a donation if you feel so inclined.  You
of course can distribute the application, provided that it and this file remain
unmodified; of course, you are not allowed to charge for this either.

People with commercial uses in mind should contact me, I'm a reasonable guy and
I'm sure we can work something out.

My email address (and paypal id, heh!) is all@biosys.net.

Copyright (C) 2003, Allen Landsidel
All rights reserved.

See the about box in the application for more copyright information.