README95.TXT Driver File Contents (ZoraUSB.zip)

USB Camera VfW and Twain Drivers
=======================================

Version 1.60   6th November 1998
================================


Introduction
=============
This file describes how to install and use the Video for Windows and
Twain drivers for the USB Camera. 

The driver is a VfW installable video capture driver which can be used with 
standard VfW applications, eg VidCap, to capture video and still image 
data.

It is compatible with a wide range of applications which utilise the VfW 
interface to access image capture devices. In particular the camera is an
ideal low cost video input device for video telephone applications.

The driver comprises a thin 16bit VfW layer with a 32bit core DLL implementing
the VfW API functions. This DLL communicates with a USB WDM mini-driver 
(essentially a DirectShow driver) via a stream class emulator. 



Compatibility Status
====================
The driver will run under under Windows 95 (OSR2.1 or later) and 
Windows 98. The driver will not run under Windows 2000 beta2.

The camera has passed USB-IF compliance testing.



Installation
============
Driver installation can be achieved by running an executable or via INF file.

Under Windows 95, if the installation program detects that the Windows 95 
OSR2.1 version is NOT 1214, it will exit. Install the USB Supplement from 
the Windows CD which was shipped with your PC. If you cannot locate the 
USB Supplement on your Windows CD please contact you PC Supplier to 
receive the USB Supplement Version 1214 for your PC.

Under Windows 98 the installation program ensures the operating system is
a beta3 release or later.

The following driver files are installed
VVLUSB95.INF	- INF file
VVLUSB16.DRV    - 16bit VfW interface layer
VVLUSB32.DLL	- Core VfW driver
VVLSTRM.SYS     - Stream class emulator
VVLUSB.SYS      - WDM mini-driver
VVLCODEC.DLL    - 32bit VfW codec for all driver supported FOURCCs
VVLUSB.DS       - 32bit Twain driver
VVLPRIV.DLL     - Private Interface used by test applet and Twain Driver
TWAIN.DLL       - Twain system file
TWAIN_32.DLL    - Twain system file
TWUNK_16.DLL    - Twain system file
TWUNK_32.DLL    - Twain system file


The driver can be uninstalled by running the installation program with the
/uninstall command line parameter.
 

Driver capabilities
===================
- Support for VfW frame and stream capture
- Arbitrary image sizes up to 4CIF with 8 by 4 pixel granularity
- RGB24, RGB16, YV12, I420, UYVY and YUY2 image formats
- Palette support
- A codec for converting the above YUV formats to RGB is also supplied
- USB bandwidth used by camera can be selected via properties dialog box
- Twain32 support


Camera Settings Dialog Box
==========================

Brightness
  Moving this to the right increases the brightness of the image

Contrast
  Controls the contrast of the image. Moving to right increases the color
  contrast.

Color
  Controls the color saturation of the image.

Compression Control
  The slider acts as an image quality control. Moving to the right increases
  image quality, at the expense of image framerate, while moving to the left
  decreases image quality, but give a higher framerate. If your video 
  conferencing application is slow, try decreasing the image quality (move
  the slider to the left).

Optimize for Video Preview
  Use this setting if you are looking at local video or want to capture a
  video sequence to a file. This setting allows the driver to use a large
  proportion of the available frametime to capture the best, and fastest,
  video possible.  
  
Optimize for Video Conferencing
  Use this setting if you are using the camera with a videoconferencing 
  application. This compression setting limits the proportion of the 
  available frametime that the driver will use. Thus allowing the 
  videoconferencing application time to perform audio and video
  compression.
  
Restore Defaults
  This restores factory settings for the controls in the Camera Settings
  dialog and the Advanced dialog. Brightness, Contrast, Colour and Compression 
  Control are all set to their default value of 50.  Compression mode is set
  to Video Preview.  Lighting is set to Automatic, backlit is set off Pan/Tile is
  also turned off.  The banding filter is enabled for 60Hx Lighting. 


Advanced Settings Dialog Box
----------------------------

Lighting
  This lets you select for your current lighting condition, and is 
  particularly useful in low lighting conditions. Note - The setting selected
  will affect the maximum framerate available from the camera, as the medium 
  and low settings slow the camera down to improve sensitivity. There is also
  an "Automatic" setting that selects the most appropriate level.
        
Backlit 
  This makes the auto exposure controller attempt to correctly expose the 
  centre portion of the the image, while disregarding bright objects around
  the periphery of the scene. It works well for "head and shoulders" type
  scenes. Unchecking this box sets the exposure controller use a "flat", 
  equally weighted, algorithm.
   
Banding Filter 
  This removes the horizontal banding that sometimes appears in the scenes
  lit by artifical mains lighting. This banding is caused by the mains 
  lighting flickering on and off at the mains supply frequency. When the 
  banding filter is selected the "Filter Type", see below, must be set 
  appropriately.
  
Filter Type
  Set this to match the frequency of the mains supply in your country. This
  is 60Hz in the USA, and 50Hz in the UK. 

Zoom control
  The driver supports a zoom mode. Enabling this feature allows you to pan and 
  tilt a capture window within the full capture area. The capture area is 352x288 
  unless the displayed image is larger than this in eirher dimension, in which case
  the capture window becomes 704x576. The driver always starts 'unzoomed'.



Image Format Options
====================

Image Sizes
-----------

               24 Bit RGB      16 Bit RGB      8 Bit RGB         YUV 

  704 X 576        Yes              -              -               -

  640 x 480        Yes              -              -               -

  352 x 288        Yes             Yes            Yes             Yes

  320 x 240        Yes             Yes            Yes             Yes

* 176 x 144        Yes             Yes            Yes             Yes

  160 x 120        Yes             Yes            Yes             Yes


* default image size for the camera

Image sizes other than those tabulated above may be used. However the
following restrictions apply:
- Maximum image size is 704 x 576.
- Minimum number of columms is 8, and the minimum number of rows is 4.
- Row size must be a factor of 8 and columm size a factor of 4 for image sizes
  smaller than CIF.  If the image size is larger than CIF in either axis, the 
  row size must be a factor of 16 and columm size a factor of 8.

Image Formats (aka FourCCs)
---------------------------
The YUV column refers to the various YUV image formats (also known as 
four character codes) that the driver supports. These are:
- RGB (24 and 16 bit depth)
- YV12
- I420
- UYVY
- YUY2


Properties Dialog Box
======================
This dialog shows driver version info and useful for customer support.
It also reports the requested the allocated USB bandwith (see section
below on USB transfer modes for more details). Selecting a lower bandwith
setting will lower the framerate, but allow improved operation of other
USB peripherals.



Twain Driver
============

The dialogue box features a preview window displaying the current camera
image, and has a number of controls for tuning and capturing an image.

 - Button to set the image size and format. The display updates to reflect
   any new settings. The image is scaled to fit the preview box. This may
   result in a distorted image being seen. This is purely a feature of the
   preview windows, and the image will appear correctly when it is displayed
   by your application.

 - Button to set the brightness/contrast/colour and compression controls.

 - Button to capture an image from the camera
   Note that cameras push button support will capture an image when the
   button is pressed.

 - Button to freeze the image. A frozen image may be captured any number of
   times. The image is frozen automatically when the capture button is
   pressed, and the button text changed to "Resume". Pressing it will restart
   the video camera display.
   Note - Some applications only allow the capture of a single image before
          unloading the Twain driver. If this is the case, you won't be able
          to capture the same image more than once.

 - Button to close the driver.

The dialog box may disappear after the image has been captured. This is
entirely under the control of the application that loaded the driver. If it
does disappear, choose Acquire to capture another image.

Only RGB24 colour is supported. If another format is chosen, the driver
warn the user that the format change has been ignored and resets it to RGB24.



USB Data Transfer Modes
=======================

Isochronous Video Transfer
--------------------------
The USB Camera uses isochronous transactions to transfer video data to the PC. 
An isochronous transaction guarantees bandwidth and latency of the transfer and the
recommended transfer mode for streaming multimedia devices (e.g video and audio).

High speed USB has a bandwidth of 12MBit/s or 1.5MByte/s. The USB bus is 
framed into 1ms time slots. During each 1ms time slot 1500 bytes can be 
transfered. An isochronous device can request a maximum of 1023 bytes for 
data transfer per 1ms time slot. If granted (depending on which other 
isochronous devices are on the bus) this bandwidth is reserved for the 
device within each 1ms time slot. Therefore once the camera has reserved 
bandwidth it is guaranteed to have that bandwidth avaiable within each 1ms 
time slot even if it does not always use it. Thus if another isochronous 
device subsequently requests more bandwidth than remains available on the 
bus it will be rejected.

The only problem with this approach is that if you request too much 
bandwidth and other isochronous devices are active on the bus then the
camera will be unable to supply video. To counteract this problem the camera 
has 4 bandwidth settings: high bandwidth of 960 bytes/ms, medium bandwidth 
of 704 bytes/ms, low bandwidth of 448 bytes/ms and zero bandwidth. When no 
VfW application is using the camera we sit enumerated at our zero bandwidth 
setting. This lets other isochronous devices use the bus. (Note when other 
isochronous devices are not 'running' they should also request zero 
bandwidth). When a VfW application starts to use the camera we request our 
high bandwidth setting. If this is unavailable we try our medium bandwidth 
setting and then low bandwidth setting etc. (The starting point for 
requesting bandwidth can be modified via the multimedia properties as high, 
medium or low).


Bulk Video Transfer
-------------------
The alternative approach to transfering video to the PC is to use Bulk 
transfer. Bulk transfer bandwidth is not guaranteed but allows you to 
transfer packets of video data of maximum size 64 bytes to the host. If no 
other devices are attached to the bus the Host controller can schedule 
multiple Bulk transactions per 1ms frame and video data will be transfered 
very quickly to the Host. (In fact this can be slightly faster than 
isochronous transfer because there is no 1023 bytes out of 1500 bytes 
limit). However the danger is that when isochronous devices are attached to 
the bus and reserve bandwidth and/or multiple devices are attached then bulk 
transactions will be scheduled by the Host Controller only as and when there 
is free bus time. If the bus is very busy this results in video data being 
trickled through as and when there is time. The resultant latency issues are 
significant in video transfer.



Why Graphics Card Drivers Can Upset Isochronous USB Data Transfer
=================================================================

The cause of the problem with USB Isochronous streaming and certain graphics
accelerators is related to the graphics accelerator effectively blocking
access to the PCI Bus.  USB Controllers need to be serviced regularly in
order function correctly when in ISO mode.  This is because the controller
must issue an 'IN' token in each 1 millisecond USB frame in order to allow
the device to send its data.  Shown simply:

  |.....Idddddddddddd|...Idddddddddddd..|....Idddddd.......|

  where
  | delimits the USB frame
  . is idle time or other traffic
  I is the IN token
  d is data sent from the camera

Therefore the above shows 3 USB frames with the camera sending data.  The
definition of the iso stream is that the camera may send up to x bytes each
frame where x is determined by the bandwidth allocated.  In the above, the
limit is represented by the 12 b's in the first two frames, and the camera
chooses to send less in the last frame.  Note that there was still enough
room for it to sends its full quota of data before the end of the frame if
it had chosen to do so.

When access to the PCI bus is blocked by the card, the host issues the
IN token to the controller as normal, however, the token is delayed on the
PCI bus until the accelerator has finished.  The alters the picture:

  |.....Idddddddddddd|...XXXXXXIdddddddd*

where

  X is the delay introduced by the PCI bus

Because the IN token was delayed, the camera started transmitting late.
This means that it was still transmitting data at the end of the frame
(indicated by *).  This is a USB bus error condition which causes the device
to be effectively shut down.  All further communications with the device are
impossible until it has been unplugged and plugged in again.

If the bandwidth allocated to the device were halved,  the same delay would
not cause an error because the camera would have stopped transmitting before
the end of the frame:


  |.....Idddddd......|...XXXXXXIdddddd..|....Idddddd.......|


The probability of an error occurring is therefore a function of the
following:

- frequency of accelerator induced delays
- duration of accelerator induced delays
- bandwidth allocated to camera

In our experience, problem graphics accelerators tend to produce long delays
at regular intervals.  The consequence of this is that even trivially small
Isochronous transfers are at risk.  If we repeat the previous example with a
longer delay, even the low bandwidth transfer will die:

  |.....Idddddd......|...XXXXXXXXXXIdddd*

Since each USB frame is 1 millisecond,  there are 1000 opportunities for
failure to occur each second... It only takes one delay in the wrong place
at the wrong time to trigger this problem.

The only real solution therefore is to reduce the duration and frequency of
the delays by reducing the graphics acceleration.  The delays can usually be
eliminated entirely by disabling graphics acceleration completely.  Reducing
the bandwidth used by the peripheral may help, but only if the particular
graphics accelerator in use is causing sufficiently short delays, which is
not normally the case.



Known Problems
==============

Side Effects of Iscochronous Transfer Mode
------------------------------------------
The camera uses the isochronous transfer mode, which guarantees latency and
bandwidth, but not data intergrity (see previous section for more details).
The resulting data corruption can cause frames to be dropped, which results
in occasional pauses in the video.

Some graphics card drivers can interfere with USB traffic by spending too
much time on the the PCI bus. This is a well documented problem that affects
all isochronous USB devices. When the driver encounters the problem, the video
will pause and become completely white. In most cases, you can revover by
closing the application and re-plugging the camera. However the best
workaround is to lower the graphics hardware acceleration setting. 



Camera Doesn't Work When Windows Starts With It Plugged In
----------------------------------------------------------
On some PCs, the camera does not work correctly if Windows starts with it
plugged in. You will see a yellow exclamation mark on the camera's entry
in Device Manager when this happens. Re-plugging the camera will clear the
problem.

A driver "patch" is available that prevents this problem - contact your
supplier for details.


Camera Does Not Enumerate When Plugged In
------------------------------------------
Some motherboards (particuarily early Elite models) provide questionable
USB data signals, which may prevent the camera from enumerating and
operating correctly. 

A camera test applet is available which can detect this problem.



Changes since version 1.53
==========================
- Minor stability issues addressed with additional checks and timeouts
- General improvements to compression, framerate and flicker control
- Arbitary image sizes CIF->4CIF now supported
- Modified zoom to work correctly at any image size (including >CIF)
- Added "Automatic Lighting" mode that automatically adjusts to low lighting
- Sharper QCIF (and smaller) video under high compression
- Added push-button support to Twain driver

Changes since version 1.58
==========================
- Extra languages supported (French,Italian,German, Spanish and Portugese)
- Stability improvements (especially for images larger than CIF)

Changes since version 1.59
==========================
- Streaming behaviour improved
- Added support for enumeration fix
Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web3, load: 2.71