Skip to content
/ vpp Public

simple C library for video processing pipelines

License

Notifications You must be signed in to change notification settings

kidanger/vpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cde2c95 · Nov 18, 2019

History

35 Commits
Sep 12, 2018
Nov 18, 2019
Sep 18, 2018
Nov 18, 2019
Jun 26, 2019
Nov 18, 2019
Jun 27, 2019

Repository files navigation

vpp

Build Status

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

Release notes

  • 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
  • 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

TODO list

  • documentation for the basic building blocks in src/vp.c

For readvid and writevid:

  • support multipage tiff
  • support video format