This was a recent question that I thought was worth posting as its own thread here.
While NDI® is great for sending video streams between software / hardware over a network, when sending video between software on the same Mac, it is best to use Syphon whenever possible.
- Syphon works by passing video textures directly between applications in video memory.
- To the best of my knowledge, when using NDI with VDMX (and other similar GPU based software), images need to be read back from the GPU into CPU memory and then sent between the applications. Likewise on the receiving end the images need to be decoded and re-uploaded to the GPU. This is a bunch of extra work.
- Additionally, passing Syphon textures is lossless and you get alpha channels by default; with NDI there the quality is quite good, especially when using the RGB mode
How does window / screen grabbing compare?
- Syphon will give the best performance.
- Like Syphon, window / screen grabbing does not lose quality.
But you can as a challenge – test this all for yourself!
- Try using both Syphon and NDI to send outputs from VDMX to the basic test apps. Use “Activity Monitor” to see which has lower CPU usage.
- You can test the quality reduction by sending a video stream over NDI / Syphon streams and…
- recording to ProRes, then playing the ProRes movie as the source and repeating the process; over several generations of recordings, which method degrades faster?
- just send a total noise stream between app using Syphon and NDI; as in my attached screenshot, the noise is perfect in the Syphon Client but blurry in the NDI feed
- Try the same ideas as 1 & 2 but for receiving video in VDMX; test alongside using screen / window capture techniques.