Submitted by , posted on 31 January 2002

Image Description, by

This IOTD is just to show you guys (and gals?) what I’ve been working on for a while. It’s 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.

It’s 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 (there’s 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, they’re the reason I can’t post a demo. It runs quite nicely on a 2Ghz P4 with 1Gb ram. But the thing is finish and in use. It hasn’t 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) I’ve 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!

    Image of the Day Gallery



    Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
    Please read our Terms, Conditions, and Privacy information.