Nimajin Software Consulting - Projects 2006-2011 Rev. 1.0 12/01/22 The projects are listed in chronological order, most recently completed first. Each project description includes the start and end dates, the effort (in man-months) and the technologies used. 2011 DTMF Test Tools Design & Development Jul 2011 - Dec 2011 (1.00 m/m) Windows 7, VS 9.0, C++, WTL, OPAL, DirectSound Developed a pair of tools to test the DTMF response of VoIP gateways. The first tool plays a set of audio files containing speech, interspersed by audio files containing DTMF signals for timed periods at timed intervals, all UI-selectable. The second tool plays out various types of DTMF signals at timed intervals. In both cases, the sets of files are controlled by a script file. Audio and VoIP Test Tools Design & Development May 2011 - Sept 2011 (1.30 m/m) Windows 7, VS 9.0, C++, WTL, OPAL, SIP, RTP, DirectSound Developed C++ object API for Measurement Computing digital I/O devices, with debouncing and message-based notification. Analyzed performance (latency) of their digital I/O drivers. Analyzed performance (accuracy) difference between waitable and multimedia timers. Developed suite of VoIP call setup tests with UI configurable parameters, actions triggered by I/O signals or timers, and timing measurements. Developed suite of VoIP messaging tests: INFO and RFC 2833 with UI configurable parameters. Developed incoming and outgoing VoIP Caller ID tests. Tested using some Cisco VoIP gateways; set up dial plans. Developed audio I/O dropout detection system. Developed system to force thread execution on core other than main thread. Developed VoIP audio stream recording and system for mixing of audio file into output stream. Developed audio file playback and recording with control via timing or I/O triggers. Web Site Revision May 2011 - Jun 2011 (0.15 m/m) VS 9.0, HTML, CSS Re-architected informational web site for restaurant. Revised layout. Added new content and images. Converted files from PDF to HTML. Chart And Chart List Controls Design Jan 2011 - May 2011 (1.10 m/m) Windows 7/Vista/XP, VS 9.0, C# (3.5), WPF Collaborated with client on definition of requirements. Delivered 40-page document listing and describing 22 classes and all of their properties and behaviours. The controls were designed to integrate with the Visual Studio designer, which allowed their properties to be set, other controls to be dropped into them and data objects to be added to their collections. A uniqued shared configuration system was developed, using WPF dependent properties, where many charts could be attached to a single container of settings and a change to one of the settings would change all attached charts. Setting an individual property of a chart automatically detached it from the shared settings. Dialog boxes for control of settings were designed. Also, standard systems for persistence of settings and data. Working prototypes were coded and tested. Audio Obfuscation Feature Development Apr 2011 (0.10 m/m) Windows 7/Vista/XP, VS 9.0, C++, OPAL, Audacity Developed a method for overlaying watermark on all audio played or captured by the client's demo system (to prevent use of demo for real testing). Modified audio from client's samples. Watermark audio stored within program to prevent tampering. Data Identification System Design & Development Dec 2010 - Feb 2011 (1.00 m/m) Windows 7/Vista/XP, VS 9.0, C++, COM, ATL, WTL Collaborated in architecture for data item identification system. Developed parser for item tags in data streams. Developed report generators for plain, tagged and CSV output of data accumulated from streams. Added COM interfaces to existing objects for clients to retrieve the reports. Revised existing data storage system to provide user selection of report type. Add selection persistence. VoIP RTP Streaming Analysis & Repair Dec 2010 - Jan 2011 (0.20 m/m) Windows 7, VS 9.0, C++, OPAL, SIP Investigated absence of audio in one direction and distortion in the other between client's OPAL softphone and their client's (OEM) proprietary softphone (interopability problem). Analysis of Wireshark traces, softphone logs, audio stream captures and source code. Define futher tests to do at OEM's site. Discovered and repaired problems in OPAL SIP signalling and G.722.1 codec framing code. 2010 SIP Packet Size Signalling Development Dec 2010 (0.10 m/m) Windows 7, VS 9.0, C++, OPAL, SIP, SDP Added capability for ptime value transmission in SIP call answer phase. SIPXecs Remote User Management and Presence Signalling System Development Jul 2010 - Nov 2010 (1.50 m/m) Windows 7, VS 9.0, C++, OPAL, SIP, SIMPLE, SOAP, XML, HTTP, SIPXecs Tested OPAL SOAP implementation against SIPx configuration server; analysed and repaired handling of HTTP packets with malformed chunk encoding, added capability to OPAL for authenticated SOAP access. Designed and coded C++ object API for remote control of all SIPXecs configuration parameters, including XML conversion. Developed new SIP client application for testing. Added to it capabilities for user registration and subscription to message waiting events from the server. Added capability for subscription and transmission of presence events (registration and dialog) of known users. Tested against remote SIPx server. Code also tested by client on iPhone. Acoustic Echo Canceller Testing and Adjustment Jul 2010 - Aug 2010 (0.25 m/m) Windows 7, VS 9.0, C++, OPAL, Microsoft DirectSound and multimedia audio Designed method and implemented program to test effectiveness of acoustic echo canceller software (Speex AEC). Measured effectiveness using various parameters and employing DirectSound and multimedia API's. Provided parameter recommendations. Developed new, more responsive DirectSound interface code for OPAL. Automatic Results File Storage System Design & Development Jun 2010 - Jul 2010 (0.50 m/m) Windows 7/Vista/XP, VS 9.0, C++, COM, ATL, WTL Revised the client's source code to automatically name and store files that previously had to be named and stored by operator action. Added a new configuration dialog, menu items and settings persistence. Added feature licensing mechanism. Placed file save triggering at correct points in the program's execution. H.323 Call Redirection Analysis May 2010 (0.125 m/m) Windows 7, VS 9.0, C++, OPAL, H.323, FreeSwitch From decode of Wireshark packets and open-source code analysis, designed a modification to extract the redirecting number from a message field and supply it to the call control engine. VoIP Stack Source Code Upgrade Integration Jul 2009 - Apr 2010 (2.75 m/m) Windows 7/Vista/XP, VS 9.0, C++, OPAL, SIP, H.323, RTP, COM, ATL, WTL Revised SIP and H.323 applications using OPAL 2.3 to OPAL 3.6 to improve specification conformance. Revised all statically linked codecs to plugins and implemented new plugins for 8 G.729 variants, G.722.1 and G.722.2 (AMR-WB). Cooperated with other open-source developers on implementation of SDP parameter encoding and decoding for selection of codec sub-variants and packet sizing. Added COM and registry commands for new configuration parameters. 2009 Script Interpreter Revision Dec 2009 (0.125 m/m) Windows 7/XP, VS 9.0, VS 6.0, C++ Modified client's source code, adding support for new features to configuration script executive and improving parser robustness. UI Behaviour Debugging and Improvements Nov 2009 (0.75 m/m) Windows 7/XP, VS 9.0, VS 6.0, C++, MFC, proprietary device Reproduced client's build and run-time environments, analysed UI behaviour and client's source code for cause of slowness and freezing problems. Replaced slow list UIs with higher performance versions. Replaced in-line code with messaging system and idle handler to solve freezing problems without resorting to multithreading. SIP Registration and Call Failure Analysis Oct 2009 - Nov 2009 (0.50 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP Investigated inability of client's OPAL softphone to connect call through remote proxy to proprietary softphone (interopability problem) by Wireshark and log analysis. Resolved by open- source call control code modification. RTP Audio Stream Synchronization System Design & Development Aug 2009 - Sept 2009 (0.75 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP, RTP/RTCP, wxWindows Developed an algorithm to synchronize multiple streams of audio coming in and going out RTP connections of previously developed multistream VoIP softphone. (Since the multiple streams all came from the same phone, they needed to be synchronized to eliminate echo effects) Implementation involved refactoring the audio mixer classes provided by OPAL so they could be adapted for use in the synchronized multistream architecture. Remote Control Over Network System Design & Development Jun 2009 - Jul 2009 (1.0 m/m) Windows Vista/XP, VS 9.0, C++, COM, ATL, WTL, TCP/IP, WinSock, C#, VB Developed a system to allow new programs to control an existing application by sending messages over network. Added TCP/IP server, toolbar control, and keyboard and mouse lockout mechanism to existing application. Implemented server as separate thread to run parallel and allow normal operation of existing application. Developed C# TCP/IP client assembly as API for client's customers to integrate into their new programs. Implemented as separate thread to run parallel, with event delegates to activate customer's software. Wrote programmer's reference describing API and demonstration program in VB. Video Rendering Algorithm Performance Analysis Jul 2009 (0.375 m/m) Windows Vista/XP, VS 9.0, C++, GDI, DirectX, OpenGL Developed several programs implementing various video stream rendering methods and measuring their frame rates to find the fastest method. Multistream Softphone Design & Development Apr 2009 - Aug 2009 (0.625 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, SIP, wxWindows Developed a SIP softphone that automatically calls a configurable list of associated endpoints when placing an outgoing call, automatically answers calls from those associated endpoints and automatically releases all associated calls when the main call is hung up. The software distributes outgoing audio to all of the associated endpoints and mixes incoming audio from all streams. Developed an algorithm for associating the calls, a new window for configuring the call associations and code for storing and loading all this information when the program shuts down and restarts. Audio Stream Dropout Analysis Apr 2009 (0.125 m/m) Windows Vista/XP, VS 9.0, C++, OPAL, VoIP RTP, DirectSound Analyzed RTP jitter buffer and audio playback code and provided revision suggestions to reduce audio dropouts. Railroad Game Timetable Editor Design & Development Jan 2009 - Jun 2009 (3.0 m/m) Windows Vista, VS 9.0, C# (.NET 2.0, Windows Forms), SQL, Access, Excel, ReportViewer Developed an editor to handle train composition, timetable and movement orders for the SignalSoft Post-T series of railroad simulators: * Plug-in system to provide resources for several different simulator layouts. * Custom bar chart as presentation and input control, with handling for hover, click, drag, resize and scaling. This is used as an interactive track occupation chart for modification of when and upon which tracks trains will stop at stations. * Unique custom input and presentation control for arrangement of cars in train. * Custom drop-down list and hour-of-the-day controls for use in data grid. * Linkage logic and rdlc for presentation and printing of timetable using ReportViewer. All train, timetable and order data resides in an Access database, handled with OleDb and SQL. Resource data is input from Excel and CSV. Text and Image Storage System Design & Development Oct 2008 - Jan 2009 (1.75 m/m) Windows Vista, VS 9.0, C++, COM, ATL, WTL, Wise Installer Developed a COM component for automatic generation of line graph images with configurable sizes and appearances from system-generated data and for their permanent storage in selectable formats. Developed a COM component for retrieval and permanent storage of text data with automatic selection of input sources based on data generation options of system. Developed a wizard UI within a COM component for configuration and testing of storage and image format options with an automatic folder and file naming algorithm based on data being stored. Modified the controller of an existing data generation system to present UI controls for activating the new storage components. 2008 Software Licensing Addition Dec 2008 (0.125 m/m) Windows XP, VS 8.0, .NET 3.5, C#, WPF, XAML Added simple run count-based software license management with password protection and encrypted storage to paintball target shooting booth game previously developed by Nimajin. Data Stream Viewer Revisions Nov 2008 - Dec 2008 (0.125 m/m) Windows Vista, VS 9.0, C++, ATL, WTL, GDI Enhanced data visualization capability of WireShark- or DebugView-like tool previously developed by Nimajin. Improvement of DirectSound Audio Handling in OPAL Sep 2008 – Oct 2008 (0.5 m/m) Windows Vista, VS 9.0, C++, OPAL, SIP, H.323, wxWindows, DirectSound Revised OPAL open-source VoIP framework DirectSound audio play and record to simplify access and reduce transfer latency to 10 ms. VoIP Jitter Research Apr 2008 - Sep 2008 (0.875 m/m) Windows Vista, VS 9.0, C++, ATL, WTL, WinPCap, DirectSound Developed a tool to measure (with an accuracy of better than 4 ms) the processing time between the audio device and network interfaces of any VoIP softphone. Port of MonoSLAM Visual Object Tracking System Jul 2008 - Aug 2008 (0.5 m/m) Windows Vista, VS 9.0, C++, OpenGL, Oxford computer vision library, ATL, WTL, DirectShow Ported the open-source MonoSLAM visual object tracking system from Linux to Windows using WTL UI and DirectShow video capture. Programmable Report System Infrastructure Design Feb 2008 - Aug 2008 (1.0 m/m) Windows XP, VS 8.0, C++, COM, ATL, Word, Excel Analyzed existing system data output and designed retrofit COM components to convert and store data and images for use by programmable report generator application. Update of Audio Streaming Classes to Handle USB Device Removal and Arrival Apr 2008 (0.25 m/m) Windows Vista, VS 9.0, C++, ATL, Windows SDK & DDK, Bluetooth, Microsoft multimedia audio & DirectSound Added device removal and arrival message handling and state machine to automatically reconnect audio streams to transient USB devices. Update of Audio Streaming Classes for Vista Core Audio APIs Mar 2008 - Apr 2008 (0.25 m/m) Windows Vista, Windows Core Audio APIs, VS 9.0, C++, ATL, WTL, Windows SDK & DDK Revised the audio device enumeration system to use the new Microsoft Core Audio API's to find the required endpoints on Windows Vista. VoIP Test System Architecture Oct 2007 - Feb 2008 (0.5 m/m) VoIP, TCP/IP, DHCP, ARP, WinPCap, Word, Visio Designed a protocol-independent method for accessing VoIP media streams for testing purposes. API Documentation Jan 2008 (0.25 m/m) Technical writing (Word), Windows XP, VS 8.0, C++, COM Reviewed source code and created detailed programming-reference documentation for existing COM objects. 2007 XML Application Settings Storage Classes Design & Development Nov 2007 (0.5 m/m) Technical writing (HTML, XHTML), Windows XP, VS 8.0, C++, ATL, MSXML 4.0 Reviewed existing free XML application settings storage systems. Implemented ATL and MSXML-based classes and test framework. Added XML pretty formatting algorithm. Wrote code description and usage article. Expanded download web site to multiple pages. VoIP Signaling Customization for G.722 Oct 2007 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, ITU G.722 Modified the session description to signal and accept G.722 transfer rate as 16,000, rather than 8,000 as specified in RFC 3551. VoIP Softphone User Manual Writing Sept 2007 (0.5 m/m) Technical writing (Word) Created a how-to manual that describes principles of operation and set-up of a VoIP softphone. Integration of Audio Codecs into VoIP Software May 2007 - Sept 2007 (1.0 m/m) Windows XP, VS 8.0, C++, COM, ATL, OPAL, SIP, H.323, ITU G.729 (A, B, D, E, F, G, I) Added call signaling and codec support for all variants of G.729 (up to G) to Opal open-source SIP and H.323 VoIP system. Paintball Target Shooting Booth Game Revision & Additions Jul 2007 - Aug 2007 (0.75 m/m) Windows XP & Vista, VS 8.0, .NET 3.0, C#, DirectX, WPF, XAML, Cider Revised UI technology from DirectX to WPF, revised timing and scoring systems, added advertising display features, added audio and video file playing sequencer. VoIP Agent Software Research Jun 2007 (0.5 m/m) Internet, email, phone calls, Word Created detailed reports describing and comparing features and capabilities of selected VoIP softphones. VoIP G.722 Timestamping Repair Jun 2007 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, RTP, ITU G.722 Modified the G.722 RTP packet timestamping to mark at rate of 8,000 as specified in RFC 3551, rather than 16,000, which is the audio sampling rate. Development of Installer Integrating VAC Software Apr 2007 (0.125 m/m) Wise Installer, Virtual Audio Cable Analyzed registry modification by VAC during cable setup and duplicated in installer. Audio Recorder & Player Applications Design & Development Apr 2007 (0.25 m/m) Windows Mobile 5.0, Windows Compact Framework 2.0, VS 8.0, .NET 2.0, C# Designed and implemented user interface, file reading & saving, volume controls and audio streaming via existing Wireless Headset Interface assembly, for operation on PDA. Linux Audio Codec Driver Revisions Apr 2007 (0.25 m/m) ARM embedded uCLinux, C & C++ (GCC, make), SUSE Linux Added independent left and right volume control capability to proprietary Linux audio driver. Audio Streaming Component Additions and Improvements Mar 2007 (0.5 m/m) Windows XP, VS 8.0, C++, COM, ATL, Microsoft Wave Audio API, DirectSound Added performance improvements to existing audio streaming component, particularly, ability to replace media already queued to device. Resulted in audio latency reduction of 150 ms. Added multiple stream capability, with a configuration system to associate sets of audio devices to streams. Web Site Design & Development Feb 2007 (0.125 m/m) HTML, XHTML, VS 8.0 Designed and coded a simple business calling card web site. VoIP Traffic Analysis Jan 2007 (0.125 m/m) SER, Wireshark Analyzed VoIP traffic between phone and SER to resolve registration problems. SIP User Agent Registration Additions and Improvements Jan 2007 (0.375 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, RFC 2617, SER, Wireshark Revised SIP component API to include configuration of signaling proxy, registrar, port, authentication domain and password. Tested with SIP Express Router. 2006 Wireshark Instruction Dec 2006 (0.125 m/m) Wireshark protocol analyzer (was Ethereal) Instructed staff on how to use Wireshark to capture and analyze VoIP network traffic. SIP Registrar Installation Nov 2006 (0.125 m/m) SER (SIP Express Router), PartySIP, Interaction SIP Proxy Installed and configured several SIP server software packages on site for testing purposes. Automated Test System Software Analysis and Design Nov 2006 (0.25 m/m) National Instruments LabVIEW and LabWindows/CVI, C, COM, MS Word, Visio Analyzed automated test system software developed by a customer of the client and designed a replacement based on COM components and LabVIEW. SIP Call failure Analysis Sept 2006 (0.125 m/m) Found reasons for call setup failure from trace log and suggested changes to make calls successful. Paintball Target Shooting Booth Game Debugging and Repairs Sept 2006 (0.125 m/m) Windows XP, VS 8.0, .NET 2.0, C#, DirectX Repaired software bugs causing unhandled exceptions and scoring errors. VoIP Codec Subtype Signaling Additions Jul 2006 (0.375 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, H.323, G.722.1, Speex Revised FMTP parsing to enable negotiation of various supported bit rates. SIP G.722 Rate Acceptance Modification Jul 2006 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP, SDP, G.722 Revised codec matching code to accept G.722 rate of 8000 or 16000 in SDP. SIP Audio Delay Analysis Jun 2006 (0.125 m/m) Windows XP, VS 8.0, C++, OPAL, SIP Tested software on site to determine reasons for audio streaming delay problems. Paintball Target Shooting Booth Game Design & Development May 2006 - Jun 2006 (0.75 m/m) Windows XP, VS 8.0, .NET 2.0, C#, DirectX In this game the software randomly lights up LED targets on an 8x12 foot panel and the player shoots the targets with their paintball gun. When the target is hit, the panel sends a message to the software, which updates the timing and score on the PC screen. Also on the PC screen, the software continuously plays videos for advertising and entertainment. This new application was collaboratively designed with the client. Nimajin developed the game controller software, including a protocol to exchange target lighting and hit detection messages with the target panel via serial port, the target lighting & scoring system, the video playlist and the user interface, which was recoded in DirectX when it was discovered that Windows Forms in .NET 2.0 could not display data panels translucently over video. Wireless Headset System Development Feb 2006 - Apr 2006 (1.25 m/m) PocketPC, C#, Windows Compact Framework, .NET 2.0, VS 8.0 ARM embedded æCLinux, C & C++, SUSE Linux, gcc The wireless headset is a set of headphones with a boom microphone, attached to a battery- powered embedded Linux computer with a Wi-Fi card. The system transfers three channels of 20,500 samples per second uncompressed audio over the Wi-Fi link between this and a PDA, where a client application can process the microphone input and send output to the headphones. From design done Jan 2006. * Developed embedded Linux device driver for custom audio hardware using C language and Linux server software for real-time audio transfer of audio over Wi-Fi in C++ (Both developed using cross platform tools on SUSE Linux). * Developed .NET assembly as API to transfer audio between client application and Wi-Fi. * Wrote client application programming manual. * Developed demonstration client PDA application in C#. Bluetooth Headset Control and Audio Transfer Component Revisions Feb 2006 (0.375 m/m) Windows XP, VS 8.0, COM, C++, ATL, WTL, DirectSound, WidComm Bluetooth library This Windows COM component automates control of Bluetooth headsets and transfers audio between a headset and the analysis software of the larger system. * Developed and tested the control capabilities. * Updated DirectSound audio streaming (see July 2005) to DirectX 9.0 * Revised the device connection procedures and status reporting user interface. * Wrote the API reference document. Wireless Headset System Design Jan 2006 (1.0 m/m) Windows XP, PocketPC, C#, Windows Compact Framework, .NET 2.0, ARM embedded æCLinux, C & C++, SUSE Linux In the request, the wireless headset is to be a set of headphones with a boom microphone, attached to a battery-powered embedded computer with a Wi-Fi card. The system is to transfer high-quality uncompressed audio over the Wi-Fi link between this and a PDA, where a client application can process the microphone input and send output to the headphones. * Architected real-time audio transfer software, design control & audio transfer protocols. * Developed tests to measure the transfer capacity of the devices and the Wi-Fi link.