Re: Cheese Architecture Redesign



Hi Hernan, Jaap, and Daniel,

On Thu, 2008-07-03 at 00:45 -0400, Hernán Gatta wrote:
> Hello Jaap:
> 
> Have a look at the OpenOffice.Org Drawing attached to this E-Mail for
> an idea of where I'm going with the pipeline's design. Now, the idea
> is this:
> 
> The core of the application only prepares the bare-bones GUI and loads
> Add-Ins, the core in itself does nothing else. The core defines
> Extension Points where Add-Ins can register their Extensions, be it a
> menu entry, a totally new feature (use your imagination) or an effect.
> I have not touched the GUI yet, so that is undefined, however I do
> intend to have a fully dynamic pipeline as is shown by the drawing
> attached to this E-Mail. Things like stream sources, audio effects,
> video effects and stream sinks are Add-Ins. If anybody in the
> Gstreamer community comes up with a new video effect, they simple
> create a new Cheese Add-In, drop the library in a designated directory
> and the new effect is readily available to Cheese. Add-Ins can define
> different specifialities of the Gstreamer plugin they wrap, so for
> instance, the "videobalance" plugin has a property called "Hue", so
> the Add-In would include that property and the core would pick it up
> along with minimum, maximum and default values as well as data type
> and present that to the user for modification should he choose to do
> so. This is all done through Mono.Addins and type reflection, there is
> nothing that needs to be invented. The power this provides is
> enormous, having several sources that are mixed and several
> simultaneous outputs that would allow to create a conferencing system
> in the future, for instance. We could plug into Telepathy to offer
> video capturing services to allow Instant Messaging and Multimedia
> Conferencing applications to pick up the audio and video that comes
> from Cheese they being modified by effects and then broadcast it to
> their clients as well.
> 
> I have school things to finish and other things to figure out so my
> schedule is pretty packed up. I'm working on the inner system's design
> and I will let you know more technical details with time.
I like the basic ideas in principle, but I agree with others here that
it's not really necessary to change the language we're using in order to
do these things. GObject will do all of this, including the interfaces,
just like C#. 

It would probably be better for everybody in the long run if we do it
more like Anjuta does. It is written almost entirely in C with GObject
(the only exception being their Scintilla editor, written in C++, which
is being phased out in favor of GtkSourceView). They have a basic shell
that contains a skeleton UI, and a common library for plugins to use for
such things as preferences, progress reporting, and tons of other stuff.
Plugins add their user interfaces to this shell with a GtkUIManager
description, similar to what Cheese does now. They also use interfaces
as described in your drawing. Plus, they use GModule (C based Glib
module loader) to load their plugins. You might want to check it out:
http://www.anjuta.org

HTH,
James




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]