vpp is a video processing pipeline library.
$ make
$ ./bin/readvid 'yourinput/*.png' - | ./bin/example - - | ./bin/writevid - output/%03d.tif
See 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