Custom 360 Video Player
Programmer - OpenGL/C++
This project was a challenge for me to dive into OpenGL and learn how to build a custom VR video player so I could playback 360 video recordings I was taking at the time for the Envision Center. The initial challenges included leveraging the OpenVR platform in a C++ environment, and making sure the program could delegate memory in order to handle the size and length of the larger 360 video file.
Additional challenges included trying to determine a viable debugging strategy for graphics bugs. CPU based problems were much easier to tackle by setting breakpoints or using counters to determine playback. It was much more difficult to figure out why the framebuffer color would flash and determining the steps it would take to solve that problem. Luckily, working backwards where the texture information was being set, I was able to solve the issue by finding that the colors would flash at alternating rates between the left eye display and right eye display. This led me to find the texture pointer was offset, and would read the texture at the incorrect spot in memory, causing color flashes, which were the 'correct values', but were being played back at an incorrect rate.
A few things I learned from this project was realizing how slow lodePNG and other libraries are when you need 60fps playback with larger file sizes. This video player directly reads the files from the CPU, but I imagine a method that streams in the video information instead of requiring a full file read before playback would slow down the load times and optimize the program quite a bit more.