[linefeed tom**20030926152219] { hunk ./doc/pdp.old/overview.html 2 - -
-Pure Data Packet (PDP) is an extension library for the computer music program Pure Data (PD), - by Miller Puckette and others. - Its goal is to provide a way to use arbitrary data types (data packets) - as messages that can be passed around inside PD, along side the standard PD numbers and symbol types. - In short it puts any data object on the same level as a float or a symbol.
+That's the main goal, but we're not there yet. PDP is very much work in progress, but reasonably stable - and usable as is. PDP runs on Linux and OSX. The OSX version depends on Fink, which is not - in the "point & click" stage yet, so setting it up will require some efford. There is no windows version. - The reason for this is simple: i don't use windows myself. Porting would require - writing code for input/output and getting the libraries pdp depends on to work. If anyone is willing to do - this, just let me know. -
- Currently, PDP's focus is on images and video, but there is no - reason it should stay like that. There is limited support for matrix processing included in the main library (like - Jitter or Gridflow). There is an extension library for 1D and 2D binary cellular automata, opengl rendering - (like Gem). Some plans include audio buffers (like Vasp), ascii packets, text buffers, ... Finally there's - a library that enables you to connect a scheme interpreter (guile) to pdp. For more image processing objects, - have a look at Yves Degoyon's PiDiP library. +
Pure Data Packet (PDP) is an extension library for the computer music +program Pure Data (PD), by Miller Puckette and +others. Its goal is to provide a way to use arbitrary data types (data +packets) as messages that can be passed around inside PD, along side the +standard PD numbers and symbol types. In short it puts any data object on +the same level as a float or a symbol. hunk ./doc/pdp.old/overview.html 18 -
PDP runs on Linux and OSX. The OSX version depends on Fink, which is not in the "point & +click" stage yet, so setting it up will require some efford. There is no +windows version. The reason for this is simple: i don't use windows myself. +Porting would require writing code for input/output and getting the +libraries PDP depends on to work. If anyone is willing to do this, just let +me know. PDP can run without X Window, using SDL. hunk ./doc/pdp.old/overview.html 26 - If you're used to working with PD, the the documentation and example patches should be enough to get you started. - Have a look at the README file - in the distribution to find out how to compile and setup. The file doc/reference.txt contains a list of objects. If you have installed - pdp properly, you can just press the right mouse button on an object and select help to get a help patch. If - this doesn't work, look in the directory doc/objects for a collection of help patches. The directory doc/examples contains - some more demos. If you just want to do video, stop reading here and install it :) +
Currently, PDP's focus is on images and video, but there is no reason it +should stay like that. There is limited support for matrix processing +included in the main library (like Jitter or Gridflow). There is an +extension library for 1D and 2D binary cellular automata, opengl rendering +(like Gem). Some plans include audio buffers (like Vasp), ascii packets, +text buffers, ... Finally there's a library that enables you to connect a +scheme interpreter (guile) to PD/PDP. For more image processing objects, +have a look at Yves Degoyon's PiDiP library. hunk ./doc/pdp.old/overview.html 36 -
PDP is centered around the concept of packets and operations on packets. From the outside, all there seems to - be is video processing objects, but on the inside a type system and processor model is growing. One of the interesting - features in PD is the possibility of connecting everything with everything. If you want to generalize this to - all kinds of media objects, the complexity starts to grow quite fast. Therefore pdp has a type conversion system. - A packet always has a type description (a mime type if you want) that will enable it to be converted to another type - without to much bookkeeping. Most of this will become automatic later, but right now you can already do the conversions - manually. +If you're used to working with PD, the the documentation and example +patches should be enough to get you started. Have a look at the README file +in the distribution to find out how to compile and setup. The file +doc/reference.txt contains a list of objects. If you have installed PDP +properly, you can just press the right mouse button on an object and select +help to get a help patch. If this doesn't work, look in the directory +doc/objects for a collection of help patches. The directory doc/examples +contains some more demos. The directory doc/objects contains two +abstractions that are used to setup the input and output in the help +patches. You might want to cut and connect some wires to use the +input/output setup that works for you. hunk ./doc/pdp.old/overview.html 50 -
An example: You can use the basic pdp library together with the cellular automata library and the opengl rendering - library to use a cellular automaton as an input to a video processing chain. You can convert the processed image to - a texture that can be applied to a 3d object, which then can be drawn to the screen, captured as a texture, converted - back to an image, which can then be converted to a sound, processed and converted back to an image, etc... - You get the point. The possibilities are endless. +
PDP is centered around the concept of packets and operations on
+packets. There are several types of packets. The default type for most
+objects is image/YCrCb/320x240. This is a single video
+frame, encoded in the internal 16bit YUV format, measuring 320 by 240
+pixels. Another image type is the grayscale image
+image/grey/320x240. Important notes: All image processing objects that
+combine two or more packets need to be fed with the same packet types, i.e.
+encoding (YCrCb/grey) and dimensions need to be the same. Image dimensions need to be a
+multiple of 8x8.
+
+
The
+bitmap/*/* type is another image representation type
+supporting several encodings. I.e. bitmap/rgb/*,
+bitmap/rgba/*, bitmap/yv12/*, ...
+
+This type cannot be processed directly by most of the image processing
+objects, but it can be used to store in delay lines, or to send over the
+network. It's main use is to support all kinds of input/output devices, and
+opengl textures, without introducing too many conversions, but it can serve
+as a space and bandwidth saver too (especially
+bitmap/yv12/*).
+
+
One of the interesting
+features in PD is the possibility of connecting everything with everything.
+If you want to generalize this to all kinds of media objects, the complexity
+of managing the different types starts to grow quite fast. Therefore PDP has
+a type conversion system that can take care of most of the conversions
+using the [pdp_convert] object. You can manually convert
+packets to a certain type by specifying a type template as a creation
+argument. I.e. [pdp_convert image/grey/*] will convert
+any packet to a greyscale image. Most of the conversion will become
+automatic later on.
+
+
An example: You can use the basic PDP library together with the +cellular automata library and the opengl rendering library to use a cellular +automaton as an input to a video processing chain. You can convert the +processed image to a texture that can be applied to a 3d object, which then +can be drawn to the screen, captured as a texture, converted back to an +image, which can then be converted to a sound, processed and converted back +to an image, etc... You get the point. The possibilities are endless. hunk ./doc/pdp.old/overview.html 96 -
Tom Schouten + Tom Schouten hunk ./doc/pdp.old/overview.html 99 -Last modified: Fri Jun 20 17:01:39 CEST 2003 +Last modified: Thu Sep 25 20:51:44 CEST 2003 hunk ./libpf/forth.c 63 + s->first->w.w_packet = -1; hunk ./libpf/forth.c 812 - pdp_forthdict_add_primitive(pdp_gensym("is_ip"), (t_pdp_forthword)pdp_stack_is_invalid_packet, 1, 2, -1, 0); - pdp_forthdict_add_primitive(pdp_gensym("is_vp"), (t_pdp_forthword)pdp_stack_is_valid_packet, 1, 2, -1, 0); + pdp_forthdict_add_primitive(pdp_gensym("is_ip"), (t_pdp_forthword)pdp_stack_is_invalid_packet, 1, 2, 0, pdp_gensym("*")); + pdp_forthdict_add_primitive(pdp_gensym("is_vp"), (t_pdp_forthword)pdp_stack_is_valid_packet, 1, 2, 0, pdp_gensym("*")); hunk ./libpf/type.c 60 - char tmp[TMPSIZE]; hunk ./libpf/type.c 61 + char tmp[strlen(type->s_name)+1]; hunk ./libpf/type.c 121 - D pdp_post("DEBUG: _pdp_type_run_conversion_program: packet returned = %d, type = %s", p, pdp_packet_get_description(p)->s_name); + D pdp_post("DEBUG: _pdp_type_run_conversion_program:"); + D pdp_post(" packet returned = %d, type = %s", + p, pdp_packet_get_description(p)->s_name); hunk ./libpf/type.c 154 - D pdp_post("DEBUG: _pdp_type_find_conversion_program: found: %s -> %s", c->src_pattern->s_name, c->dst_pattern->s_name); + D pdp_post("DEBUG: _pdp_type_find_conversion_program: found: %s -> %s", + c->src_pattern->s_name, c->dst_pattern->s_name); hunk ./libpf/type.c 189 - D pdp_post("DEBUG: _pdp_type_find_cached_conversion_program: found: %s -> %s", c->src_pattern->s_name, c->dst_pattern->s_name); + D pdp_post("DEBUG: _pdp_type_find_cached_conversion_program: found: %s -> %s", + c->src_pattern->s_name, c->dst_pattern->s_name); hunk ./libpf/type.c 223 - pdp_post("_pdp_conversion_program_print %x", program); + D pdp_post("_pdp_conversion_program_print %x", program); hunk ./libpf/type.c 251 -void pdp_conversion_program_add(t_pdp_conversion_program *program, t_pdp_conversion_program *tail) +void pdp_conversion_program_add(t_pdp_conversion_program *program, + t_pdp_conversion_program *tail) hunk ./libpf/type.c 258 -void pdp_type_register_conversion (t_pdp_symbol *src_pattern, t_pdp_symbol *dst_pattern, t_pdp_conversion_program *program) +void pdp_type_register_conversion (t_pdp_symbol *src_pattern, t_pdp_symbol *dst_pattern, + t_pdp_conversion_program *program) hunk ./libpf/type.c 322 - program = pdp_conversion_program_copy(_pdp_type_find_conversion_program(type, dest_template)); + program = pdp_conversion_program_copy + (_pdp_type_find_conversion_program(type, dest_template)); hunk ./libpf/type.c 326 - D pdp_post("DEBUG: pdp_type_convert: (1) can't convert %s to %s", type->s_name, dest_template->s_name); + D pdp_post("DEBUG: pdp_type_convert: (1) can't convert %s to %s", + type->s_name, dest_template->s_name); hunk ./libpf/type.c 338 - D pdp_post("DEBUG: pdp_type_convert: (2) can't convert %s to %s", tmp_type->s_name, dest_template->s_name); + D pdp_post("DEBUG: pdp_type_convert: (2) can't convert %s to %s", + tmp_type->s_name, dest_template->s_name); hunk ./libpf/type.c 356 - // save the conversion program + // save the conversion program in the cache }