May 2015

Co-op position at one of the largest semiconductor companies in the world.

C, Bash, ARM/NEON Assembly, Android, Linux, and Git

In May of 2015, I started my first co-op term as an Application Software Engineer at Broadcom Corporation, located in Richmond, British Columbia. I had several responsibilities during my time at Broadcom, with three main ones listed below.

A major project of mine during my internship was the addition and implementation of a hardware accelerated YUV transcoder into the pipeline. Previously, the encoder only supported YUV420 video as the input format; however, the client for the hardware required support with a webcam that would only output YUV422 video. As a result, the addition of a transcoding step was needed. Using the NEON core of the ARM processor, to increase the performance, the video feed would be taken in from the input source, and if it was a YUV422 stream, it would be sent to transcoder before being sent to the H.264 encoder. In the end, the pipeline could now support 1080p YUV422 video in both packed and planar formats, in real-time.

I created a script that was used to generate new patch tarballs when new versions of our firmware were released. The Bash script would compare the new system image to the previous version, and any new packages or code were packaged into a new patch file that was then delivered to the customer. I was also in charge of maintaining and testing the nightly builds of the firmware, and performed stability and other tests on new updates and patches.

Another utility I worked on would “split” a SVC video. Video conferencing devices often use Scalable Video Coding, an extension of the H.264 format, to allow for multiple different video streams to be sent in the same bitstream, with each additional layer increasing spatial resolution (number of pixels) or temporal resolution (framerate). My utility would be able to parse an H.264 stream, and generate new streams with differing numbers of layers to then be used in other tests.

To test our VOIP platform, I created a program that could take an arbitrary audio file from a computer, and encode it with a codec supported by phone systems, such as G.711 μ-law, a-law, or G.722. It would then transmit the packets directly over the network to the phone, without needing to connect the phone to a central server.

Next Project

Watch better together. 2nd place winner for Best Overall Use of Microsoft Tech at DubHacks 2015.

Previous Project


Food is good. Indecision is bad. Let us help.