pantec's robocam

content
  1. Introduction
  2. Environment
  3. Dataflow
  4. Components
  5. the working Example
  6. 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

environment/parts

Dataflow

dataflow schematic

Components

Here is the list of the components used in the client/server image gathering system.
  1. capture card (miroMedia PCTV)
  2. bttv-driver version 0.4.3
  3. image server
  4. jpeg-compressor (needs libjpeg6a)
  5. X-viewer (needs XForms)
  6. 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.
  1. 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.
  2. 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.
  3. 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