# Pure Data Packet

## Introduction

PDP is an extension library for Pure Data, aimed at providing video and other media processing fuctionality. That's still it's main purpose, but as of version 0.13, there is more. PDP turned into a tool for writing PDP. See the section on Packet Forth.

PDP runs on Linux and OSX. The OSX version depends on Fink.

PDP's focus is on images and video, but there is no reason it should stay like that. There is support for matrix processing, 1D and 2D binary cellular automata, opengl rendering (like Gem), scheme scripting (guile), ascii packets, bit grids, ...

For more image processing objects, streaming objects and a collection of very useful additions to the bare bones PDP functionality, have a look at Yves Degoyon's PiDiP library.

Since version 0.13.x, which is a merger between stable (0.12.x) and packet forth, PDP has been split up into 3 parts:

- libtile - A lowlevel library for platform specific (integer, mmx, altivec) image processing operations and cache optimizations.
- libpdp - The packet managing library + pf scripting language.
- pdp - This is the stable pdp 0.12.x with support for packet forth.

  ## PDP for Pure Data

  This is considered to be the stable part of pdp. It has been stable since 0.12.x It has it's bugs & drawbacks & oversimplifications but will mostly stay like it is. It is optimized for intel/mmx and uses a 16bit signed yuv format ideal for real time video processing, mixing, blending and feedback. The pf layer is accessible from pd/pdp. The result of this is that you can write pdp objects in pf, or directly map pf operations to pdp objects. A 'getting started' documentation for pd/pdp/pidip is being worked on. Until then you can have a look at the 'pdp' subdirectory in pd's 'Pure Documentation'. Most objects are documented with pd style help patches accessible by right clicking on an object. The place to send questions is the pd mailing list. Bugreports can be sent to the pd list or me: `pdp TA zzz TOD kotnet TOD org` .

  ## Packet Forth

  The libpdp library is a C support library for media processing. It implements a mime-like media type system (packets), type conversion and packet operations, interface logic to connect pf to other applications, and other things you might need to write small 'scratch' media applications. All operations are implemented as extensions to a forth-like glue language called Packet Forth. For more information on this see the documentation in the libpdp distribution, or the mailing list archives.

  ## CVS

  The latest stable pdp release is 0.12.4. Because 0.13.x is still in a flux, the preferred way of accessing the code is CVS. You can access the modules in this way:

  `export CVSROOT=:pserver:anonymous@zwizwa.fartit.com:/usr/local/cvsroot
  cvs login
  cvs co libtile
  cvs co libpdp
  cvs co pdp
  `

  To update, simply `cd` to each of the 3 directories, and type `cvs update -d`.

  When extracting from cvs, you need to run the `./bootstrap` script to create the configure scripts and build and install the packages in the order above. In order to compile pdp with libpdp (pf) support, you need to add a `--enable-pf` option when invoking pdp's configure script.

  ## Links

- Pure Data at IEM
- PiDiP Is Definitely In Pieces
- al-Jwarizmi
- PidipVJ
- Videoflow / Cruzados BGN
- Eth0
- RRADical
- Veejay / SendVIMS
- FreeJ
- EffecTV