The projects are listed in chronological order, most recent first.
Each project description includes the start and end dates, the effort (in man-months) and the technologies used.
Clients include AST Technologies Labs Inc., ATRA Vision Inc., Microtronix Systems Ltd., Listen Inc., and The National Centre for Audiology.
Video Capture and 3D Presentation on SBC
Jan 2013 - Apr 2013 (2.25 m/m)
PandaBoard (OMAP 4460 ARM Cortex-A9), Ubuntu Linux, C++, GCC, OpenGL ES, XLib, LibAV, LibV4L2
Design & development of real-time video presentation prototype application. The object of the
project was to simultaneously capture video from two webcams and present them as textures
side-by-side on a deformable 3D mesh at the highest frame rate and size possible. The board
uses the same CPU used in the Galaxy Nexus mobile phone. Performed research and
experimentation with various operating system flavours and boot options. Ubuntu Linux
environment was selected to support coding and compiling on the board itself. Partitioned
boot flash disk and imaged boot and operating system. Coded initial 3D presentation using
standard OpenGL, GLSL & GLUT. Found performance was bad because, in Ubuntu on PandaBoard,
OpenGL is emulated in software. Ported to OpenGL ES without GLUT. Developed framework for
windowing and user input via XLib. Developed camera interface classes from LibV4L2
documentation. The system was built using three threads (one for presentation and one for
each camera capture and decoding) to take advantage of parallelism offered by multi-core CPU.
Designed pipeline control logic to drop video frames from second camera if it wasn't keeping
up with the first. Adapted JPEG decoding from TinyJPEG (debugged version from OPAL). Found
this was a bit superior to LibAV code. Wrote YUYV video decoding in GLSL. This system can
capture 176x144 MJPG from 2 cameras and present at 30 fps. Unfortunately a driver bug would
not allow two cameras to open at any higher resolution. Tests showed the board can stream a
single 720p MJPG camera at 30 fps. Client was able to continue development themselves.
VoIP Test Tool Improvements
Jan 2013 - Apr 2013 (0.85 m/m)
Windows 8, VS 11.0, C++, WTL, OPAL, RTP
Effected memory consumption repair after source code and performance analysis. Developed a
custom 2-line list UI control for selection from options each represented by two lines of text.
Implemented a custom text presentation window with toolbar for modification of font properties
and line spacing. Merged new SVN code into production code. Carried out analysis of open
source RFC 2833/4733 RTP code with respect to proper timing, including thread prioritization
and operation of timers themselves and revised it to add controllability and to bring
functionality to specification. Debugged multi-threaded deadlock problem using static code
analysis and dynamic tracing and repaired defect by using message queues to decouple threads.
Implemented internal signalling system to measure and display time periods between tool and
network events. Used state machine to improve synchronization between VoIP call signalling and
media stream startup.
Jan 2013 (0.25 m/m)
Hand tools, multimeter, soldering tools
Built some A/D conditioning units for a major automotive parts manufacturer's test lab:
assembled circuit boards, performed continuity and short circuit testing, designed circuit layout
on breadboard from schematic, completed chassis machining, assembly & wiring.