This documentation covers the usage of the TDSynchro toolkit for synchronizing streams of video travelling over SDI and NDI networks. TDSynchro's primary use case is for situations where a large canvas of continuous video needs to be streamed to many display computers for mapping and projection.


This system consists of a single Server and many Clients framework. One computer acts as a video content server, reading video files from disk and or rendering real-time content into a large high resolution canvas. The client computers are mapping computers that receive a piece of the rendered canvas for mapping and projecting to specific projectors and other display processors. These clients are synchronized to display the same frame index such that the server canvas can be reconstructed and displayed as a continuous whole image.

On the Server

The Server computer renders the entire canvas which can be any resolution. The canvas is then cropped into smaller pieces for distribution to multiple synchroSender components. The resolution of the cropped pieces is generally driven by the method with which the video streams are transmitted. For example, if the stream is output over an SDI card then the canvas will be cropped relative to each SDI port resolution. The synchroSender component wraps the videoDeviceOutTOP and manages passing along the specified frame index with the video stream.

The way the canvas is constructed, composited and then subsequently cropped into pieces is up to you. Then you pass each cropped piece into a synchroSender component, which quite simply manages passing along a stream and frame index via SDI or NDI or both.

On the Client

Each SynchroClient component receives a section of canvas as a video stream. It caches each video frame and uses the global sync frame index to output the correct stream frame.

TDSynchro Server Side Components


Parameters - Synchro Server Page

Help Help - Opens this page.

Version Version - Current version of this COMP.

Active Active - Turns on and off the SyncOutCHOP.

Iterations Iterations - The number of times the filter is iterated.

Threshold Threshold - Controls the darkest pixels in the TOP, any pixel with a value less than or equal to this will be faded out.

Intensity Intensity - Increases or decreases the brightness of an image. Brightness can be considered the arithmetic mean of the RGB channels. The Brightness parameter adds or subtracts an offset into the R, G, and B channels. Low brightness will result in dark tones, while high brightness will wash the color out towards white.

Gamma Gamma - The Gamma parameter applies a gamma correction to the image. Gamma is the relationship between the brightness of a pixel as it appears on the screen, and the numerical value of that pixel. This is often represented by a gamma curve. The difference between brightness and gamma is that gamma also affects the ratio of red to green to blue. A straight, linear gamma curve with a value of 1 means no change.

Contrast Contrast - Contrast applies a scale factor (gain) to the RGB channels. Increasing contrast will brighten the light areas and darken the dark areas of the image, making the difference between the light and dark areas of the image stronger.

Bloom Level Bloom - Intensity of the Bloom effect.

Glow Level Glow - Controls the intensity of the overlay in the “Glow Color” parameter.

Glow Color Glowcolor - - Overlays the value selected in the RGB parameters on the brightest pixels of the TOP.

  • Glow Color Glowcolorr - Sets the red color channel.
  • Glow Color Glowcolorg - Sets the green color channel.
  • Glow Color Glowcolorb - Sets the blue color channel.

Ramp Glow Level Glowinputramp - Controls the ramp’s glow intensity.

Open Ramp Parameters Openramp - Opens the ramp's parameters.

Input Level (Mix Out) Inputlevel - Controls the opacity of the input TOP.

Blur Type Blurtype - - Determines the mathematical function used to create the blur.

  • Catmull-Rom catmull - A spline approximation to a Gaussian kernel. Gives sharper textures and more accurate edges.
  • Gaussian gaussian - A normal distribution where pixels at the center have more effect on the resulting pixel. Gaussian lacks sharpness but handles ringing and aliasing well.
  • Box box - Each pixel within the box is weighted evenly. Inexpensive and gives a "boxy" look.
  • Bartlette bartlette - A triangle filter. The weight of each pixel is a linear function of its distance from the center.
  • Sinc sinc - A sharpening filter. Some pixels contribute a negative weight to the result, artifacts may occur in the form of "ringing". Keeps small details and edges better than Gaussian.
  • Hanning hanning - A cosine approximation to a Gaussian kernel.
  • Blackman blackman - A higher order cosine approximation to a Gaussian kernel.

Pre-Shrink Preshrink - Reduces the image's resolution before applying the blur.

Sample Step Samplestep - When sampling the image, this determines the distance from each pixel to the sample pixel. When units are set to pixels, it is the number of pixels away from the current pixel which is sampled to blur the image. A Sample Step of 3 would sample pixels 3 pixels away.

Temporal Smooth Temporalsmooth - Controls the amount of motion blur per frame.

Input Filter Type Inputfiltertype - - This controls pixel filtering on the input image of the TOP.

  • Nearest Pixel nearest - Uses nearest pixel or accurate image representation. Images will look jaggy when viewing at any zoom level other than Native Resolution.
  • Interpolate Pixels linear - Uses linear filtering between pixels. This is how you get TOP images in viewers to look good at various zoom levels, especially useful when using any Fill Viewer setting other than Native Resolution.
  • Mipmap Pixels mipmap - Uses mipmap filtering when scaling images. This can be used to reduce artifacts and sparkling in moving/scaling images that have lots of detail.

Pixel Format Format - - Format used to store data for each channel in the image (ie. R, G, B, and A). Refer to Pixel Formats for more information.

  • Use Input useinput - Uses the input's pixel format.
  • 11-bit float (RGB), Positive Values Only rgba11float - A RGB floating point format that has 11 bits for the Red and Green channels, and 10-bits for the Blue Channel, 32-bits total per pixel (therefore the same memory usage as 8-bit RGBA). The Alpha channel in this format will always be 1. Values can go above one, but can't be negative. ie. the range is [0, infinite).
  • 16-bit float (RGB) rgb16float -
  • 32-bit float (RGB) rgb32float -


TDSynchro Client Side Components


This is documentation on the SynchroClient

SynchroClient Component

The SynchroClient component wraps the syncInCHOP. It also provides information on the status of this sync receiver.

SDI In Component

The SDI in component has two outputs. The first TOP output is the video stream. The second CHOP output is the frame index of the video stream.

NDI In Component

The NDI in component has two outputs. The first TOP output is the video stream. The second CHOP output is the frame index of the video stream.

SynchroLock Component

The synchroLock component has 3 inputs. T