A collection of projects and systems developed for broadcast, gaming and entertainment applications. The descriptions include brief design and development notes, and some include video demos.
The IP Camera control system is a software application designed for managing remote IP cameras in a broadcast environment. The system was developed as a 'desktop style' application and runs under Windows. The software is designed for use with a touch screen monitor and allows operators to quickly select and assign remote IP camera feeds to one of two HD-SDI outputs. It also provides an output for a 16-source multi-view monitor, this enables operators to select a group of feeds that are 'always viewable' for monitoring. In addition, support was included for multi-touch PTZ control of Axis IP cameras (see the video demo).
C\C++ development - Windows desktop, OpenCV, libVLC, libMySQL back end DB,
network sockets, remote IP management of encoder/decoder hardware.
IP Cam Control and Multi-view windows
The multi-view sources can be enlarged to full screen by double-clicking on the source image.
IP Cam Control Video Demo
A short video that demonstrates the features and capabilities of the IPCam software.
This software was developed to help manage video distribution to a network of 15+ horse race tracks located throughout Canada. Each location is outfitted with video decoder hardware manufactured by Adtec Digital, for playout of (store and forward) video content and interstitial ads. The application connects to each location's decoder, over IP, and retrieves its daily SMIL playlists. The system then scans the playlists for ad content and generates an MPEG2 video slate file for each ad, which includes a text description of the associated ad. The playlists are modified to include the MPEG2 slates, then the new playlists and slates are uploaded back to each location. The system supports batch processing, so any number of locations can be accommodated in a single operation.
Design/development:
C\C++ software development, MPEG2 encoding with text/graphic overlay, XML file processing, networked file distribution, remote IP management of encoder/decoder hardware.
Mic Tally is a completely IP-native system that displays visual microphone tally status for broadcast applications. It provides real-time microphone battery level, talent mic assignments and notes for talent and guests on its status displays. Status information can be viewed on video monitors located in the studio, newsroom and dressing rooms, as well as in the form of a graphic overly that can be inserted onto HD-SDI sources. The system is compatible with audio production consoles that support Lawo's Ember+ network protocol and wireless microphone systems that support Shure's Axient protocol.
The system displays mic channels in green to indicate that they're powered on and displays them in red to indicate that the mic is HOT (On-AIR). Wireless microphone battery level is updated in real time and is displayed in hours and minutes.
Full stack development: C\C+, PHP (server), libMySQL back end DB, network sockets, HTML, jquery/javascript front end web interface, Blackmagic Design hardware.
The Q System was designed to be an easy-to-use, touch screen controlled digital signage system, targeting casino cashier cages and other applications that require signage for managing lines, i.e. retail checkouts, supermarkets, banks, sports arenas, airports, etc.. The output displays are controlled via a user-friendly touch-screen interface and are used to direct or queue customers into the appropriate lines for service. In addition to line queuing messages, the system can also display promotional or marketing messages for the “captive audience”. Users can create groups of 'snipe-like' (see the video below) ads or messages that can be programmed to rotate in and out of the line queuing monitors.
C\C++ development - Windows desktop, MPEG2 encode/decode, video image compositing, network sockets, custom command-line interface, built-in API for developing custom control applications.
The NewsCheck system was developed to provide TV news departments with an easy to navigate tool for reviewing and critiquing news programs. When the broadcast control room goes live, the system automatically starts recording a time/date stamped clip, which is immediately available for viewing in the NewsCheck Player. Through the player interface, clips are easily retrievable by day and time, and can be viewed on the desktop, or output via HD-SDI/HDMI, if the PC is equipped with a Blackmagic Design output card. Up to six, quick access 'memory points' per clip can be set, and video can be 'scrubbed' with a scroll bar. The system supports multiple NewsCheck player clients over a network. Clips are automatically purged at the end of each week, unless they are saved to 'The Bank', which stores permanently.
C\C++ development - Windows desktop, VC-1 encoding\decoding. Blackmagic Design hardware, network sockets
The XDCAM HD Recorder/Scheduler (XRS) is a web-based system that allows users to schedule and record up to two simultaneous HD video streams with embedded stereo audio (channels 1 & 2). The system is packaged in a 3-rack space chassis and includes two HD-SDI inputs. In addition to scheduling and encoding, the system also includes support for the Grass Valley Jupiter series video/audio router via a custom interface to the Callisto router control system, as well as support for ingest and control of PitchBlue content distribution servers. The system is comprised of multiple components, including: custom-designed, multi-threaded MPEG2 HD encoder software, remote video router control, Miranda XVP-1801 converter/processors, a web server/server software and an MS SQL database. Video and audio sources are encoded to XDCAM HD/PCM and packaged into .MXF (Material Exchange Format) files for “platform-agnostic” compatibility with many broadcast post-production applications. XRS was designed primarily for use by video editors for capturing daily promos, and other specialized content. Although, any source available on the house router can be scheduled and recorded.
C\C++ development - Windows desktop (server), ASPX server-side, MS SQL, HTML, Javascript, XDCAM-35 encoding with text/graphic compositing overlay, Blackmagic Design hardware, network sockets
The Descriptive Audio for Alerts (DAA) system was developed to meet the requirements of FCC regulation 47 C.F.R. § 79.2 (Accessibility of programming providing emergency information). The DAA system addresses the component of this regulation that requires television stations to provide emergency text crawl information (related to life, health, safety and property) in an audible form for the visually impaired. When an alert message is generated, the DAA system activates alert tones on the main program and SAP audio channels, the message is converted from text-to-speech, and pushed onto the SAP channels of the release path SDI stream. The system is designed to support a single station, or a duopoly, in either English or Spanish on a single server. The primary goal of the design is to provide a system that will meet the requirements of the multiple messaging workflows, yet remain as transparent as possible to the end user. The system utilizes the Evertz HD9725LGA Name Dropper (keyer) as the audio embed device for text-to-speech audio.
The system is managed through a web-interface that allows users to create and manage profiles for various types of messaging events. GPIOs are supported for receiving signals from messaging sources, and message text can be delivered via FTP or shared folder. These features allow the system to be compatible with most messaging sources.
The system was deployed to 26+ NBCUniversal/Telemundo owned and operated television stations.
This web page allows users to setup and manage profiles for messaging sources.
The monitor tab is the home tab and it provides an 'at a glance' view of all messaging source profiles and their current states.
Full stack development: C\C++ Windows (server), PHP (server-side), Microsoft SAPI, libMySQL back end DB, HTML, jquery/javascript front end web interface, network sockets