This page describes the ways we defined to pass video frames between applications
Piping is uncompressed transition of video from the output pipe of an application to the input pipe of another, thus creating a pipeline of applications sharing the same video and working on it in a chain.
Video piping is implemented on top of the FIFO pipe special file implementation (POSIX.1): see man fifo , man mkfifo(3) , man read(3) , man write(3) , man open(3) , man close(3) and man pselect(3) (using sys/select.h and conforming to POSIX.1g in place of the old BSD select).
Piksel framework uses the following techniques to pipe video data thru applications
- Yuv4Mpeg - reference implementations in veejay/veejay/vj-yuv4mpeg.c and http://cvs.sourceforge.net/viewcvs.py/mjpeg/mjpeg_play/utils/yuv4mpeg.c?rev=1.20&view=auto
- RAW video - reference implementation in veejay/veejay/vj-rgb.c
- vloopback (mmap technique) - as of http://motion.sourceforge.net/vloopback ; our reference implementation in EffecTV/vloopback.c
The recommended method is Yuv4Mpeg as it is including a header description for the piped video (at beginning or for every frame).
There are plans for including a general implementation of the yuv4mpeg piping solution in the LiViDO library.
software implementing Yuv4Mpeg video piping:
- http://veejay.sourceforge.net
- http://mjpeg.sourceforge.net
- http://www.xs4all.nl/~salsaman/lives
- http://www.mplayerhq.hu
- http://www.gephex.org
- http://ffmpeg.sourceforge.net
software implementing RAW video piping:
software implementing vloopback device piping:
- http://motion.sourceforge.net/
- http://effectv.sf.net
- http://www.chello.nl/~j.vreeken/setv4l
- http://www.smcc.demon.nl/camstream
- http://mob.bek.no
piping fronteers
What would be really good for piping, as well for control data, is to have a common transport layer which can multiplex this information into single packets, insuring synchronization (in the worst case approximated to the chunk size of packets). We are investigating into that, at the moment evaluating two implementations: OGG and SCTP
- http://www.xiph.org/ogg/vorbis/doc/oggstream.html http://www.xiph.org/ogg/vorbis/doc/framing.html
- http://www.sctp.de http://tdrwww.exp-math.uni-essen.de/inhalt/forschung/sctp_fb
the debate is ongoing on our mailinglist!

