Optimizing the User Experience of 24-bit AWIPS Rendering

Michael Biere
9 October 2002

The Problem

There are a number of image-processing operations in AWIPS which appear noticeably slower on a modern 24-bit true-color display than they were on previous 8-bit pseudo-color displays. Examples include image brightness adjustment and fade between combo images.

These operations were  implemented as color table changes on the 8-bit hardware, which involves modifying at most a few thousand bytes of memory in a display card. With a 24-bit display these pseudo-color table tricks are no longer valid, and the resulting images must be re-rendered pixel by pixel, which typically involves modifying millons of bytes of display memory. The result is that the volume of data to be rendered overwhelms the improvement in display speed, resulting in an apparent degradation of performance. These differences are intrinsic to 24-bit displays, and it is unlikely that algorithmic improvements to the image-processing algorithms will improve things dramatically.

The Solution

All is not lost, however.  There are changes elsewhere that should produce the desired improvement. In fact, the rendering of a single frame of imagery is not likely to be noticeably worse to the user under these circumstances. The main factor which contributes to the degraded user experience is the simplistic coupling between the existing user interface (typically a slider bar) and the rendering engine (the IGC). Well-known techniques for enhancing this coupling exist, involving look-ahead in the event queue. These techniques avoiding rendering intermediate frames when the user is changing the user interface faster than the rendering engine can keep up. The end result is a much more responsive user experience. In my opinion, these changes would be sufficient to make 24-bit rendering appear essentially as fast as the 8-bit pseudo-color case.

The Proposal

I propose that FSL investigate the use of event queue lookahead to resolve the perceived slowness of certain 24-bit rendering operations, specifically brightness and fade. The required volume of code is likely to be low, perhaps a hundred LOC or so, but the event handling mechanisms in AWIPS are fairly involved, so the level or technical difficulty may be high. The simplest implementation would involve changes to the Tcl GUI only, but the most user-responsive implementation will probably require IGC event handling modifications (possibly involving lookahead extensions to the ThreadIPC). In the worst case, changes in the interaction between the IGC and the Tcl GUI might be required, although that is unlikely.

The Estimate

This is probably a 6-8 week effort including support functions.

The Risks

There is a high probability of success. Event lookahead algorithms are fairly simple in principle. The only risk I see is if the interfaces to the current event-handling or threadIPC code are so complex or subtle that the code development time is longer than expected.