geglfilter: GStreamer element for manipulating video using Gegl

Gegl is an image processing framework used in projects like Gimp and DarkTable. It will eventually allow Gimp to allow non-destructive, high bit-depth image processing, among other things. And GStreamer is the multimedia framework for GNU/Linux, handling video/audio/other playback/recording/manipulation on your favorite desktop/server/mobile/embedded system.

After writing the Cairo overlay GStreamer element, I implement a basic GStreamer element which allows you to apply a filter to video in a GStreamer pipeline using Gegl. Using this element, video editing/manipulation applications like Pitivi could allow users to apply effects provided by Gegl to videos. Gegl is a very powerful image processing framework, and already has a significant number of image processing operations. More operations is expected, especially from the port the tools, filters and plugins used in Gimp to Gegl.

Here are some screenshots showing the standard GStreamer video test data being manipulated in different ways using Gegl. Note: the size of the images are only different because the output windows had different sizes when I took the screenshot.

Top left: original video. Top right: color temperature adjusted from 6500 to 9000 K Bottom left: inverted colors. Bottom right: inverted colors and black-white threshold

Top left: original video (no-op). Top right: color temperature adjusted from 6500 to 9000K. Bottom left: inverted colors. Bottom right: inverted colors and black-white threshold conversion

A bug has been filed for inclusion of this element into gst-plugins-good. The patch attached there also contains an example application, showing how to use the element.

In the patches you will find an example.

7 thoughts on “geglfilter: GStreamer element for manipulating video using Gegl”

  1. Hello,

    This is a great news for us in Pitivi. We shouldn’t have anything to do to get it working when it lands in gstreamer… only profit 🙂

    Thanks 😉

  2. @Thibault: You will be able to use it as a GStreamer element as soon as it lands. But for it to do anything useful (that is, not just pass the video data unchanged) you will have to build up a Gegl graph to do the actual image processing. For minimally useful integration in Pitivi I envision the user being able to select a gegl operation as an effect in the same way that current effects work, and then being able to change the properties of that operation. For that you need to at least have code for enumerating the different gegl operations, and introspecting the properties of a node/operation. Neither are hard, just needs doing.

  3. I thought you would get GstElements for each gegl filter/graphs, isn’t it possible to get it this way or what is the reason for not doing it like this so you get standard GstElements usable without taking care of Gegl, and registered by the GstRegistry?

  4. @Thibault: That would indeed be possible as a convenience. I will look into adding that as well after I have gotten the initial work merged.

  5. Hi, Bug 650750 doesn’t show any activity since the end of May, are you still working on this ? Having geglfilter would be awesome for projects like PiTiVi 🙂

  6. Hi. No, it got put a bit on the back-burner. But I plan to finish up the patch and get it integrated. Maybe during the holidays?

Leave a Reply

Your email address will not be published. Required fields are marked *