Skip to content

gogo2/pd-ndi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pd-ndi

pd_ndi is a Pure Data extensions that enables video transmission through NDI.

Newtek NDI (Network Device Interface) is a software standard for broadcasting high quality video and audio over network with low latency.

Gem Graphics Environment for Multimedia for Pure Data

Compilation and installation

Requirements

  • Building process of pd_ndi is managed by CMake
  • Pd_ndi depends on Newtek NDI SDK which can be downloaded for free form here
  • Gem library is now required for compilation

Compilation

  • Execute following commands in root directory of pd_ndi:
    mkdir build
    cd build
    cmake ../
    make
    
  • You can specify non-default pd Gem's and NDI SDK installation directories by providing PD_INSTALL_DIR, GEM_EXTERN_DIR and - on linux and mac -NDI_INSTALL_DIR options to CMake
cmake ../ -DPD_INSTALL_DIR=path/to/pd -DGEM_EXTERN_DIR=path/to/gem
  • On Linux gem-dev package is required for compilation as it contains Gem header files.

Precompiled Windows, Mac and Linux binaries can be downloaded from github's releases tab.

Installation

  • Copy pd_ndi file from bin directory to your externals directory where all tour externals are located
  • Add pd_ndi to the list of libraries loaded by Pure Data at startup (File menu -> preferences -> startup -> new -> type pd_ndi -> ok -> ok -> DONE)

Have in mind that:

  • NDI library file must be visible for pd_ndi also after compilation. Easiest way to make it so is to copy it to the installation folder of pd_ndi.
  • Gem has to be added to the library list before pd_ndi

Objects

  • [ndisender]

    [ndisender] connected to [gemhead] will transmit what's before it in Gem's render chain. In case you are familiar with syphonserver for Gem, ndisender will work the same way.

  • [ndireceiver]

    Passes data received from NDI source as pix data. Works similarly to e.g. [pix_image]

  • [ndisourcefinder]

    Simple object that will search for available NDI sources after receiving bang. Results are printed in console.

  • [gl_ndisender]

    To use [gl_ndisender] object with Gem just connect right outlet of [gemframebuffer] to the left inlet of [gl_ndisender].

    (Note: gl_ndisender's main purpose is to be used with Gem's [gemframebuffer] object, but implementation doesn't depend on Gem, so it should also work with other OpenGL wrapping objects that can bang [gl_ndisender] object with GL_TEXTURE_2D as [gemframebuffer] does)

  • You can also set desired framerate of NDI broadcast by sending [fps $1 ( to [ndisender] or [gl_ndisender] (30 fps by default).

TODO

  • provide more NDI configuration options to PD object
  • implement sender as Gem's record plugin
  • implement audio transmission