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 - Opens this page.
Version - Current version of this COMP.
Active - Turns on and off the SyncOutCHOP.
Iterations - The number of times the filter is iterated.
Threshold - Controls the darkest pixels in the TOP, any pixel with a value less than or equal to this will be faded out.
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 - 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 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 - Intensity of the Bloom effect.
Glow - Controls the intensity of the overlay in the “Glow Color” parameter.
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.
Blurtype - ⊞ - Determines the mathematical function used to create the blur.
catmull- A spline approximation to a Gaussian kernel. Gives sharper textures and more accurate edges.
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- Each pixel within the box is weighted evenly. Inexpensive and gives a "boxy" look.
bartlette- A triangle filter. The weight of each pixel is a linear function of its distance from the center.
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- A cosine approximation to a Gaussian kernel.
blackman- A higher order cosine approximation to a Gaussian kernel.
Preshrink - Reduces the image's resolution before applying the blur.
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.
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.
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)
- 32-bit float (RGB)
TDSynchro Client Side Components
This is documentation on the SynchroClient
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.
The synchroLock component has 3 inputs. T