|
Submitted by , posted on 31 January 2002
|
|
Image Description, by
This IOTD is just to show you guys (and gals?) what Ive been working on for a
while. Its a system called Point (bloody marketing people) which is used by TV
companies to do Telestration (Horrid word, not mine),
or in other words, drawing over live TV images.
Its currently in use by Sky TV in the UK for their Monday night football
program, and by a couple of people
In the United Arab Emirates. It will hopefully be used in the summer for the
coverage of the world cup.
Enough of that sort of thing, onto the techie bit.
Feature List
OpenGL UI and rendering ~ 50fps.
DirectShow live video capture @ 24fps.
~10 Different Animated tools including
Line
Arrows
Curved Arrows
Bitmaps
Spotlights,
Perspective corrected bitmaps
True-type Text
Freehand draw
Floating, customizable toolbar.
Skin-able UI.
Shadows (of a sort)
Undo Redo.
Full serialization.
Fantastic programmer-art themed skin supplied as standard
It was implemented mainly in VC++ with OpenGL, DirectX and DirectShow thrown in
for good measure.
It captures (DirectShow) and displays (OpenGL) full broadcast resolution video
(use of texture rectangle and BGRA extensions helped a lot)
Although there is a static scene in the background of the sample pics, the
system does display live video at ~24fps (honest).
Various little tools are provided for drawing and illustration (various types of
lines, spotlights, circles, bitmaps). It uses OpenGL to do
all of the rendering, including the UI. The whole thing is controlled from a
touch screen plasma or LCD monitor. One nice thing it does, is to
scale bitmaps with correct perspective (theres a quick example lower left).
Curved line drawing is done with Catmull-Rom splines.
There was some talk early on about porting it across to Irix, so I decided (as
you do) to implement my own OpenGL based windowing system.
The windowing system turned out, to my shame, to be a lot like MFC under the
hood, although using Action objects for message calls
Instead of the not-very OOD MFC method of direct function calls. It does however
support nice things like complete application serialization, plugins and factory
based object creation.
The actual coding of the system took about three months, but the final system
(after much can you just change this?) was
ready for use after about five months. One thing that really helped was the use
of test rigs from day one. The test I found most useful was a simple Random
Monkey that just sat there and hit random points on the screen for hours, its
surprising how many bugs that can turn up.
Output is done using a professional video compositing board. At around $4000
each, theyre the reason I cant post a demo.
It runs quite nicely on a 2Ghz P4 with 1Gb ram.
But the thing is finish and in use. It hasnt crash yet. Which is lucky cos if
it does crash 7Million people will know about it :o)
I will hopefully be releasing some of the source code (Core classes, Windowing
System, Video capture and Display subsystems) when
a) I can clean it up a bit. (Documentation is a little, erm thin as well)
b) Ive sold a couple more systems and can put some time into the project.
The system would have been written quicker but for the hours spent reading
flip-code + forums cheers.
Jack Greasley
Note: to those in the UK Monday Night Football on Sky Sports One. You know you
want to!
|
|