pantec's robocam
content
- Introduction
- Environment
- Dataflow
- Components
- the working Example
- Sources
Introduction
This page explains my client/server image gathering system. In the future there
should be also an image processing part in it.
The main aim is to monitor the video stream while the pioneer robot
can make use of it. The most important part
(beside the capturing card + driver) is the image-server
which allows the delivery of up to 4 video streams. The following pictures
illustrate the environment in which it is used and the dataflow.
Environment
Dataflow
Components
Here is the list of the components used in the client/server image
gathering system.
- capture card (miroMedia PCTV)
- bttv-driver version 0.4.3
- image server
- jpeg-compressor (needs libjpeg6a)
- X-viewer (needs XForms)
- image processing (not ready yet)
The viewer, the image server and the client/server-part of the
jpeg-compressor are written by me. I designed the image server to
deliver a image with 160x120 pixels in size, because it should be
small enough to do a reasonable fast image processing with it and
it is not too small to watch it. Also the data rate could be higher.
In the future I will review the concept and decide to put the
jpeg-compression into the image server to obtain higher data rates
(or reduce the load on the network). Currently the compression is on
the client side because of its lossy algorithm. I guess it's not proofed that
this compression can be done without side effects to the image
processing client.
There could also be a scenario that the image server can deliver compressed
AND uncompressed images. If the image processing client runs on the same
host there is no need for compressing and decompressing the image because
the connection can go thru the virtual loopback network device.
The jpeg-compressor is designed to use serverpush as described in
1 and
2 to
feed the data to the web-client. It's a application especially
to place in a web servers cgi-bin directory.
I patched also the bttv-driver to improve capturing in user memory and
to reduce its consumtion of memory. Currently the (patched) driver cannot
deliver images larger than 384x288 with 16 bit color depth.
The viewer was the first application that was written for the image server.
It was derived from a viewer wich used the bttv-device directly. The viewer
can easily be "socksified" to work also behind SOCKS-firewalls.
Demo
Here is the working example,
but read the BIG FAT WARNINGS first.
- It doesn't work if you don't have a browser wich supports serverpush.
As far as I know only netscape supports this. If your browser claims to
be "Mozilla" in the HTTP_USERAGENT resource you will get the stream, wether
your browser can handle it or not. If your browser doesn't claim to be
"Mozilla" as "Mosaic" for example, you will get a single still image.
- If you have enabled an external image viewer, don't try to open the image.
Your viewer will be spawned for every image in the video stream.
- Up to 256 consecutive images are delivered for network load reasons.
If you like to see more¹ simply press the 'reload' button.
Yes , I want see it anyway.
¹ currently white noise because the pioneer is switched off most of the time
More Links
A beta version of my hacks can be downloaded here.
You will also need the
JPEG
- and the XForms
- libraries to get it compiled.
maintained by
Thomas Pantzer ,
mailto
pantec@aix520.informatik.uni-leipzig.de,
PGP public key available