Nowadays, the number of people developing software is rapidly increasing, while the time they spend on individual programs is often becoming shorter and shorter. Management often sets deadlines which employees cannot meet, or only through great difficulties. At the same time, hardware resources available to developers have never before been as abundant as they are now. These circumstances often result in poorly-written, lackluster code, and the total negligence of more lower level solutions, including hardware-specific methods. Products developed in this way achieve worse results when provided with the same resources, or consume more resources to achieve the same results.
This includes applications intended to handle the input from video cameras. The improper transmission and procession of image data can negatively affect the performance of the entire system, especially in modern environments where image sizes are ever increasing.
In light of these modern developments, I chose to solve the problem of a camera application's optimization. To ease the burden on the CPU during the process of streaming, I utilized an embedded Graphics Processing Unit as well as the method of Direct Memory Access. Furthermore, I increased the maximum possible size of recorded images, while also streamlining the process of saving pictures to file.
Even though I did not create a new, completely original product and, indeed, this particular application has several alternatives, the software I developed is significantly more efficient than its predecessor. While I achieved a significant reduction in the amount of resources consumed, the difference in end user experience is nonexistent.
This is an opportunity that goes overlooked ever more often in today's digital world.