The vast majority of the code is "node code", in files following the node_*.c
pattern. Since nodes need to be able to introspect each others, all their
respective "private" context are declared in a common (not publicly exposed)
header internal.h
. This header also contains the structures definitions and
prototypes required to implement a new node.
In order to add a node, you need to:
- in
nodegl.h.in
: declare a newNGL_NODE_*
with an arbitrary unique FourCC - create a
node_*.c
file declaring aconst struct node_class
. Don't forget the Copyright header. See other node files, such asnode_identity.c
- in
nodes_register.h
: register the new node - reference the source file node in
libnodegl/meson.build
- run
make nodegl-updatespecs
(from the top-level Makefile) to updatenodes.specs
every time you update the parameters of the node - similarly, run
make nodegl-updatedoc
to update the reference documentation after every change to the parameters - refer to internal.h for the available callbacks to implement in your class map