Syphon vs NDI® vs Window / Screen grabbing – when to use?



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!

  1. 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.
  2. 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
  1. Try the same ideas as 1 & 2 but for receiving video in VDMX; test alongside using screen / window capture techniques.



the difference is obvious to the naked eye, but let’s see what the numbers say:
CPU usage, NDI is always higher.
Quality: Syphon is better.

I have noticed, that NDI looks better with images with less detail (solids or simple graphics). in greater detail, greater degradation (as in the noise example)

In summary use NDI between different machines. And Syphon if images are shared between applications of the same computer.

On the other hand, the degradation of the color in successive steps of Record and reproduce, is in both cases very similar (using Apple Pro ress 422). I need to try other codecs to see what the answer is.