Interactive Voice Response (IVR)

The project was designing IVR to use Host Media Processing instead of on-chip processors for serving VXML based IVR(s). Project’s result have following features:
  • Uses SIP as Signalling protocol
  • Uses VXML as programming language for IVR applications
  • Uses Host Media Processing instead of Media Boards (such as Dialogin Cards)
  • Enterprise, high-load support to use in real-world communication environments
  • Database support for logging user accesses
  • Extra Telnet server for configuration and manipulation
  • Extra logging features through syslog
  • TTS and ASR engine loaders
  • Support VXML plugins

Creating Media Server Platform

The project aim was extending first project result to support all media server features through application. By extending platform the first project support extra features
  • Support fax and conferencing
  • Enterprise message-server for better support
  • Automatic reference counting
  • Using COM-like Interface-Based model

Video/Audio MIX

The project was developped by a request from StreamUK company. They wanted an application which could multiplex four AVI files in 2×2 view. Additionally, the application should create audio track which contains all audio tracks of source video. We used DirectShow internal features for decompressing video and compressing it. For image processing, video multiplexing and logo (or banner) addition we used OpenCV library. The application contains web based control which queries current active jobs, their progress and ability to stop them. This project is part of following website which is done to promote a Sony product:

Vehicle Velocity Detection

I had done this project as my MSc project in University. We started that because of a problem of Iranian Police Force in detecting speed of cars in highways and roads using old Sonar and Laser sensors. The problem that, sometimes the sensor mistakes and assumes front weels of a car (say Car 1) and rear weels of another car (say Car 2) as a Car. So, it reports an invalid speed. We experienced following features in development of this project:
  • Object Tracking and Extraction
  • Different Background Modeling techniques, and presenting new techniques
  • Real world mapping and extracting real position of objects using Homography and Inverse Prespective Mapping
  • Extracting Velocity of objects in scene
  • Recording result of algorithm in AVI files using libquicktime
  • Using SDL for presenting result of algoithm in graphical window (Realtime)

By presenting techniques used in this project, we published three papers in different conferences:

  • R Zabihollahi, M Soryani, “Vehicle Velocity Detection System Based on Real-Time Motion Tracking,” Accepted by Machine Vision and Image processing, 2007.
  • R Zabihollahi, M Soryani, “Vehicle Shadow Exclusion for a Vehicle Velocity Detection System,” Submitted to International Multi-Conference of Engineers and Computer Scientists, 2007.
  • R Zabihollahi, M Soryani, “Edge based tracking,” Submitted to Iranian Conference on Electrical Engineering, 2007.

Freelance/Contractor Experience


Orlando FL(February 2015 to August 2016)

  • Design an iOS/Android app using native languages to deliver Notes from the universe to followers
  • Use CoreLocation/LocationManager

Stream UK,

London UK(April 2014 to January 2015)

  • Design an Real-time service to process HLS streams on the fly and feed to ShoutCast for BBC Live Radio
  • Design real-time Decoder and Coder Using ffmpeg and libmp3lame
  • Design a embedded web interface for Muxer using C/C++ to be fast and efficient


Calgary Canada (June 2013 to June 2014)

  • Design an iPad app for Goal oriented users to do their planning
  • Design local database using Core Data
  • Design fast iPad app using Objective C and substitutable views to achieve the highest performance on a tablet device

Stream UK,

London UK (March 2012 to October 2013)

  • Design an Linux daemon to multiplex video in a MS PowerPoint Presentation using C++ on Linux platform
  • Use ffmpeg to decode video, and ImageMagick to manipulate image before muxing in the video
  • Design a embedded web interface for Muxer using C/C++ to be fast and efficient
  • Make the muxer service work on simultaneous threads and several computers (Scalibility)
  • Develop a SOAP interface using C++ and gSOAP as a programming interface/API
  • Make sure the whole platform works bug free on C++

Multimedia Internet Services,

Albuquerque NM (December 2006 to October 2010)

Support two PHP based websites

  • Support a Ruby on Rails solution used for Real State agents (QuickIDX)
  • Development and support of client web sites on Ruby on Rails

The Auteurs,

San Francisco CA (December 2006 to October 2010)

  • File upload using AJAX in Merb framework
  • Using Merb (a Ruby on Rails like framework)
  • Application development with Ruby
  • Video format adjustment with ffmpeg and mencoder

Stream UK,

London UK (September 2006 to November 2007)

  • Movie Multiplexing (creating 2×2 view from 4 different movies)
  • Working with AVI for audio and video compression and decompression
  • Add HTTP interface to application
  • Creating setup package for application
  • The result is uploaded and functional in:

duYek and sefryek,

London UK (November 2006 to October 2007)

  • Game development for mobile phones
  • HTTP/SMS Networking through J2ME
  • Software development for Internet Enabled Handsets
  • Symbian Application development for Smart phones
  • Symbian Signing for Symbian 9.x

Basamad Advanced Telecommunication,

Tehran Iran (August 2005 to January 2006)

  • NGN (New Generation Networks),
  • Intelligence Voice Reply (IVR Systems),
  • HMP™ (Intel’s Host Media Processing software for media management),
  • OpenVXML (VXML Browser framework),
  • reSIProcate (Sip signaling library),
  • Object oriented programming with C++.