IMPORTANT !!! The development of this system was started for one of our customers. Unfortunately, he did not pay even for the initial stage. We are going to complete the system, and we have created working prototype and flash demonstration. You can download these materials for free..
Right now we are looking for a partner/investor or anybody who will be interested in completion of work on this system and bringing its power to end-users. We are absolutely sure that we won't be able to do that by our own. Only our youth and lack of business experience made it possible to spend our efforts on the system development in the nearest past. It is not acceptable for us to let this system die.
Please contact us if you have any questions or suggestions.
Video surveillance system (VSS) is a software analog of a real hardware based system. This means that the program system has the same characteristics as its hardware equivalent: speed, scalability, extensibility and smart and flexible control.
All this is possible, since the program is constructed under open COM-based software architecture. The main package consists of a software kernel which persists as a constant. All system components can be attached and connected together if necessary. I.e. a user can construct his own surveillance system.
The main concept of the program is possibility for users to create several surveillance channels. Each channel contains a set of different interacting objects. For example, a simple surveillance channel must contain a video source object (camera), a motion detector object and a channel display object. The program is built in channel editor. A user can graphically create a channel by dragging and connecting the available objects to the channel scheme. Then he has to define the design-time properties of objects: for example, to select a camera for the video source object, to define precision for the motion detector and so on.
The main "pearl" of a channel is its self-control, i.e. ability of one object to control another one. For example, the motion detector object can control the AVI writer object, which starts recording AVI file when motion is detected. The same is true for other objects: each object can be controlled by another one. This concept is based on the object state notion. Each object has its own object state. For example, the color processing filter stores four values as its state: brightness, contrast, hue and saturation. In general, to control this object you have to access each property and set its value. But this approach is too complex for common users, since it can be implemented only via script writing (real programming). So we found another way which is close to hardware systems. Hardware systems are controlled by logical signals. For example, a signal from a motion sensor turns on a video recorder, or a siren. The same approach is realized in the program. Each channel object, as mentioned before, has its own state. To control separate values by a logical signal is too complicated, but we can control the entire object state. For each object a user can define a separate set of states. For example, for a color processing filter he can define states "Day" and "Night", for AVI writer - "Writing" and "Stopped" and so on. All we have to do after that is to transmit the specified state to a program sensor (for example, the motion detector). This can be done also by channel editor. An object has a logical input pin for each state, so you simply have to connect the sensor output pin with the object state input pin. Based on this concept users can construct systems with different levels of complexity, from systems of personal use with one or two channels (home, flat, car surveillance systems) to large industrial systems with more than 16 channels (shops, offices, supermarkets and so on).
Open COM-based architecture allows the program functionality extension. If you want to add a new function, there is no need in rebuilding of the whole program. It is sufficient to create an additional object for the surveillance channel level, or for the application level. For example, the creation on customer's demand of an object to dial the customer's phone number when alarm occurs will take 1-2 days at a very low cost. But if the customer has some experience in programming, he can create this object himself. He can use Microsoft VB or Microsoft Visual C++ for that purpose.
And of course the system has properties intrinsic to all software systems: security access, smart searching of video records, logging, integrated help, translation to different languages on the fly and so on.
Presently the program is actively used by our customers. It has about twenty standard objects: several video inputs for object, motion sensor, light sensor, direction sensor, alarm phone caller, AVI writer, AVI reader, logical objects, display and so on. The program is still developing, and we do believe that it will live for a long time and be successful and useful in future.
Total project development time:
180 developer days
Lines of the code:
> 40 000
MSVC++, CVS, Intel VTune
VC++, ActiveX, ATL, COM, WIN32 API, Direct Show, Direct Draw