Several technical skills were learned during the course of this project. As networking hardware has dropped in price over the last several years, networks of personal computers have become nearly ubiquitous. For this project, one of the most popular style of networking (100 Base-T) was used. Furthermore, as networked computers have become more powerful, there has been an increased desire to distribute applications among several machines. When personal computers had limited resources and networks were slow, there was little incentive to write distributed programs. Currently a great deal of research and business revolves around that area. In addition to learning about the general concepts of distributed computing, this project focused on PVM, a particularly popular environment for developing distributed applications.
Another trend in computing is a desire to make multimedia applications run faster. Intel's contribution to this goal has been its MMX instructions. This project brought first hand experience with using MMX instructions. Also, MMX instructions must be programmed at the very lowest level (assembly); using them with the most popular Linux compiler is supported but not very well documented, so this kind of experience is quite rare.
In a general sense, an important lesson was learned about reverse engineering.
For this project, the planning stage was completed first. Next, the structure
of the original encoder was extracted from the source code. Finally, the
implementation was completed. However, because several important details
of the original program were misunderstood, many of the initial design
decisions had to be significantly modified. This is not an issue in projects
where prepackaged components are used to build a final product. In that
case, the function and interface of each component is well defined by its
manufacturer. The very first step in this project should have been developing
a complete understanding of the original encoder, followed by the planning
and implementation of the new encoder.