Modern graphics processors (GPU-s) are widely used for general-purpose computing in applications that require high computational power and lend themselves well to parallel processing. One such possible field of application is the acceleration of motion estimation in H.264 video encoding, which is the most computationally intensive part of the encoding process. Hardware-based encoders have successfully employed GPUs for motion estimation, but their use in software encoders (that may have more favorable characteristics), is still in an experimental phase.
In my thesis, I examine the existing GPU-based motion estimation solutions for the x264 open-source H.264 encoder application. In the first half of my work I review the environment for the problem. I delineate the most important elements of the H.264 video encoding standard and then introduce the x264 video encoder application. Subsequently I provide a brief overview of the programming environments available for general-purpose GPU computing.
In the second half of the thesis, I examine the CUDA- and OpenCL-based implementations known to date, with an emphasis on their applicability in practice. I have also concluded a multifaceted series of measurements with the OpenCL-based solution. I include a detailed report of those measurements as well as of the experiences gained during the process. Finally, I summarize the shortcomings of the existing solutions and outline the possibilities for future improvements.