Broadcast Ingest System
As part of a project for a leading broadcast company providing shared storage and workflow collaboration products, bugless designed, implemented, tested and managed releases of a broadcast ingest system.
The ingest system is a client/server system designed to be scalable. The system can have arbitrary numbers of servers and clients; the configuration of clients and servers is unconstrained allowing for flexibility in deployment and use.
As a system designed to interoperate with a number of different broadcast technologies, the system supports real-time multi-channel ingest to a wide range of essences (codecs) and containers (file formats) including DV (25, 50, 100), IMX (30, 40, 50), JFIF, MPEG-2 (XDCAM compatible), MPEG-4, DNxHD, and MOV, MXF (op-atom) and AVI.
Each ingest server is capable of recording up to four channels simultaneously, with each channel being captured to one or two independent codecs along with a low resolution proxy.
While ingest from SD-SDI and HD-SDI was the initial focus, the system was successfully extended to support file based ingest: many modern broadcast cameras record directly to solid state storage and upon return to e.g. a newsroom, this captured media needs to be added to the system. This is file based ingest, and can be as simple as re-wrapping essence (to conform the media to a particular newsroom's editing software of choice) or complete transcoding. Sub-sections of the captured media are available for file based ingest
Files are transferred to the appropriate ingest server using an embedded HTTP server on the client machine, allowing simple data transfer. This transfer is also rate controlled, allowing control over bandwidth allocation to ensure large file based ingests do not overwhelm the rest of the storage and ingest system.
Metadata about an ingest is stored in a relational database (specific database independent). A specialized client application can be used to add metadata to a live or prerecorded feed. As the metadata is stored in a standard relational database, the system can be queried by third party tools or 'glue' code, allowing the system to be integrated into more complex production workflows.
The system also incorporates an edit-while-capture module that was implemented as a virtual filesystem. This allows editors to start working on a file being captured before the capture is finished. A further advantage of the virtual filesystem is that the same essence can be present within multiple edit-while-capture files without having an additional storage overhead.
The system comprises a number of different functional areas including:
- HD-SDI & SD-SDI ingest (multi-channel, ganged, chunked, break detection, multiple codecs per channel, preview)
- realtime video encoding (frame accurate)
- video scaling (interlace aware)
- video transcoding
- video essence rewraping
- video streaming for preview
- video file container manipulation
- metadata extraction and management
![]() |
Technical notes:
- based on Qt4 (both clients and servers)
- RPC using QRPC
- communication with clients' storage servers using REST & JSON
- server deployed on 64-bit Linux via RPM
- clients deployed on Windows, OS X, Linux
- in-depth knowledge of codecs and containers required
- clients:
- custom widgets
- heavily styled using CSS
- realtime video playout using OpenGL, GLSL
- multi-threaded
- embedded HTTP server (client side file based ingest)
- servers:
- heavily threaded
- plugin based
- integration with a number of open source technologies e.g. libquicktime, ffmpeg

