Portable and scalable MPEG-2 video encoder on parallel and distributed computing systems

Traditionally, real-time video compression due to its enormous computing requirement has been done using the special-purpose hardware. On the other hand, software-based solutions have been primarily intended for non real-time applications. In this paper, we present a portable and scalable implementation of the MPEG-2 video encoder, using parallel processing, that can be used for both real-time and non real-time applications. The portability allows it to run on a wide variety of platforms including a number of high-performance parallel computers as well as networks of workstations. The scalability allows the user to control the parallelism enabling it to run on a few fast workstations using a coarse granularity or on a massively parallel architecture using a fine grained granularity. An important feature of our implementation is that we use a data-parallel approach and exploit parallelism within each frame, unlike previous parallel video coding implementations. This makes our encoder suitable for real-time applications where the complete video sequence may not be present on the disk and may become available on a frame-by-frame basis with time. The encoder also provides control over various parameters such as number of processors, size of motion-search window, buffer management and bit rate. Our implementation is flexible and allows inclusion of fast and new algorithms for different stages of the encoder, replacing current algorithms. Experimental results have been conducted on two parallel processing systems: the Intel Paragon XP/S and the Intel iPSC/860 hypercube. Networks of workstations used include the SUN and HP, connected via the Ethernet and FDDI, respectively. Comparisons of execution times, speedups as well as frame encoding rates on these systems are provided. Using maximum parallelism by dividing one block per processor, an encoding rate higher than real- time (30 frames/sec) has been achieved on the Intel Paragon.