vpp is a video processing pipeline library.
$ make
$ ./bin/readvid 'yourinput/*.png' - | ./bin/example - - | ./bin/writevid - output/%03d.tifSee src/example.c for an example of a recursive average using vpp.
A pipeline is defined as a sequence of programs communicating using vpp's C functions through unix pipes (or files). A given program can have many inputs and outputs, allowing for complex pipelines.
To load and save a video, readvid and writevid are provided (but can be replaced with your own). They are using iio to load/save sequence of images.
Another example (temporal difference of the 30th first frames):
$ mkfifo copy;
$ readvid 'yourinput/*.png' - \
  | vp take - - 30 \
  | vp dup - - copy \
  | vp skip - - 1 \
  | vp zip - copy - 'x-y' \
  | writevid - test/%04d.tif- 
v2.5.0 - 2019/11/18 - vpp is now a single header library (use #define VPP_IMPLEMENTATION before including vpp.h)
- pipeline drawing with VPP_OUTPUT_DOT has been removed
- support inclusion of vpp.h from C++
- update iio
 
- 
v2.4.0 - 2018/10/23 - draw pipeline graphs using dot (enable with VPP_OUTPUT_DOT)
- improve compatibility with non-linux systems (thanks @mnhrdt)
 
- 
v2.3.2 - 2018/09/17 - fix an issue with vpp_init_input introduced in v2.2.0
- improve error reporting
- vpp_init_input now returns NULL if the frame size is invalid (it should be positive)
- this might indicate that a writer wrongly initialized its output
 
 
- 
v2.3.1 - 2018/09/16 - add operator 'vp zip'
- fix two issues with 'vp dup'
 
- 
v2.3.0 - 2018/09/16 - add function 'vpp_init_inputs' to initialize multiple inputs at once, required for complex pipelines.
- add two vp operators: dup and buf
 
- 
v2.2.0 - 2018/09/15 - add 'vlambda' (from the code of plambda)
- move 'vp exec' to 'vexec'
- fix a bug where the libc kept the header in buffer
 
- 
v2.1.0 - 2018/09/13 - add a 'vp' binary that contains many operators:
- basic blocks: take, repeat, first, last, skip, concat, timeinterval, average, count, max, min, sum
- more advanced: map, reduce, scan, framereduce, exec
 
 
- add a 'vp' binary that contains many operators:
- 
v2.0.0 - 2018/09/12 - removes the notion of video length (breaks API and file format compatibility with v1)
 
- 
v1.0.0 - 2018/09/11 - first working version
 
- documentation for the basic building blocks in src/vp.c
For readvid and writevid:
- support multipage tiff
- support video format