Optimization of software-based real-time H.263 video encoding

In this work, our goal is to develop a real-time software- based H.263 video encoder using a single-processor system. This requires optimizing the execution speed of the code which, in turn, needs optimization at various design phases, including algorithmic enhancements, efficient implementations of these algorithms, and taking advantage of certain architectural features of the machine. We present an H.263 video encoder implemented on a single Sun UltraSPARC-1 workstation. In order to exploit the architectural features of the machine, we make use of a low-level machine primitive, namely, Sun UltraSPARC's Visual Instruction Set (VIS). Using VIS, we accelerate the computation in a SIMD fashion, increase the utilization of available registers in the processor, and remove register contentions between data and control variables. We have achieved a reasonably high frame encoding rate of more than 12 frames per second for QCIF resolution of video with high perceptual quality, which is sufficient for most of the GSTN-based video telephony applications. Extensive benchmarking experiments have been carried out to study the performance of the encoder. We have taken into account the effects of the optional H.263 coding modes on PSNR, bit rate and encoding speed. Based on these effects, suggestions are made to decide the optimum coding options.