How about the processing speed ?

SpotRemover was programmed with the performance in mind.
Its core is written fully in assembly language and works only because of the MMX and SSE. (There is also a version without SSE)
It was optimized for the Pentium III architecture and on my PIII-500 it does about 5 frames/second for the 640x480 frame size.

Some of the optimizations include:

  • Use of MMX and integer SSE extensions.

  • Minimal use of conditional jumps to avoid branch mispredictions. The core routine (smoothing, locking, spot detection, filtering, marking, and color adjustments) uses only about a dozen of jumps!

  • Compact allocation of data to minimize cache misses.

  • Instruction reordering and resizing to optimize the instruction fetching and decoding.

  • See also Code samples


    Updated: 01/22/2009