Welcome to libWarsaw. WHAT IS IT? libWarsaw is a wrapper library to write GStreamer plugins in C++. It tries to make it easier to write cool, mostly video-processing elements for the multimedia framework of choice. libWarsaw applies some C++ template magic to separate "Processing Model" from "Data Model", effectively allowing for various base classes that implement different processing paradigms (Inplace Filter, Producer, Consumer, etc). These base classes are templated to "Formats", that is, abstractions to access GstBuffers and GstCaps of a certain format. WHY IS IT CALLED WARSAW? Long story made short: It's a pun (or play on words). A long, long time ago in a place far, far away, there were some video processing "externals" for an obscure MacOS-only thing called "MAX/MSP". These elements were called "NATO", for whatever obscure reason. Warsaw was once a complementary library for my other project, "Pakt". You get it? Congrats. No, it's not political. HOW DOES IT WORK? As of warsaw-0.1, libWarsaw only works with GStreamer-0.9 (or 0.10, if we're that far yet). Warsaw elements derive from GStreamer's new GstBase* classes, effectively leaving a lot of scheduling details to the GStreamer team. Before that, there was one warsaw base class (wElement), a C++ class that is also a GObject class deriving from GstElement. Now, wElement is somewhat more complex in that it allows (template magic again) it's derived classes to pretend to be GObject classes derived from various GStreamer base classes. Weird? Yes, but it works. If you really care, look at classes like wGstBaseTransform. It's magic :) If you just want to write elements, you don't have to care for this GObject/C++ magic. Just derive from one of the Processing Model Classes, specify (via templates) the Data Formats you want to handle, and off you go. You could look at the test/* classes to get an idea how that works. It's pretty simple. IS IT STABLE? Do I care? It works for me. INSTALLATION ./configure && make && make install CREDITS While libWarsaw is a one-person project, it wouldn't have been possible without the constant support of a few friendly and generous individuals and institutions. Main credit goes to the multimedia institute (mi2/mama) in Zagreb, Croatia, for constant support and good vibes, specifically to m@rcell. Kiberpipa, Ljubljana, Slovenia also deserves gratitude for providing a similar environment. The piksel festival and it's host, BEK, in Bergen, Norway, plays a significant role in connecting me to an environment where stuff like this can flourish. Shouts go out to my posse in Weimar, Germany: subsignal, sumaato, KulturForschungsZentrum. And last, because most important: thanks, Sylvi. SO WHAT? Well, what's next? libWarsaw in itself is not very useful unless you want to get into writing new GStreamer/Warsaw elements. If you just want to get some cool elements going, check out "Warsaw", my libWarsaw-based set of plugins that integrate all kinds of different libraries. That's all, folks. If you have comments, suggestions, need help, whatever, write to: Daniel Fischer (apply anti-spam logic) Please also do so if you put libWarsaw to any interesting (or merely cool) use. I'd really like to know.