Nimajin home
Home Resume Portfolio Technologies Download Contact










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) VoIP Test Tool
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.

Electronic Assembly
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.

Download the 2006-2013 project list in .doc or .txt format

Page copyright © 2013 Nimajin Software Consulting, last revised 2013-05-24