Re: Cheese Architecture Redesign



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.

Cheers,

Hernan.

On Sun, Jun 29, 2008 at 12:54 PM, Jaap A. Haitsma <jaap haitsma org> wrote:
Hi Hernan,

I completely agree that having a good object oriented design is very
important to keep code readable and maintanable. Having a general way
to write addins/plugins certainly helps here.

I would like to know how your classes would look like in cheese if you
use addins. Which parts would you make an addin? At the moment I can
only think of having addins for exporting images and videos. However
that code is more or less trivial at the moment.

I agree with Daniel and Patryk that the programming language does not
really matter to have a good object oriented design. You can write
exactly the same object oriented program is: GObject, C++, vala, java,
C#. Differences are syntax, the amount of code you need to write to do
something, virtual machine, etc. but not object oriented design.

Jaap


On Sun, Jun 22, 2008 at 8:52 PM, Hernan Gatta <gattahernan gmail com> wrote:
> Hello,
>
> Cheese has been evolving quite some recently and I've been looking at the
> ideas that you would like to see implemented in the upcoming releases in
> order to make Cheese even better. However, I have indeed looked at the code
> and I am afraid to say that as with almost any program coded in C, Cheese
> will exponentially grow in complexity as features are added. I've tried to
> add some of the features and the code-base is pretty complex to work with in
> terms of dynamically managing the Gstreamer pipeline, for instance. I would
> like to propose a new design based on Mono (.NET) that would allow a very
> simplistic (and even cross-platform) core filled with easy-to-write
> extensions based on the Mono.Addins framework (look at
> http://www.mono-project.com/Mono.Addins). Applications like this one exist
> already and are seeing a growth in usage like Tomboy Notes and Banshee as
> well as the MonoDevelop IDE. I'd like to point out that the user interface
> need not change, just the underlying code; although I would like to see some
> sort of OpenGL-based GUI should the user's system support it in order to
> bring more "bling" to the program (using things like Clutter as a back-end -
> http://clutter-project.org/). I've started some work on this myself already
> and I will continue to work on it. I would like to hear your input on this
> idea and see what can be done about it.
>
> Thanks,
>
> Hernan.
> _______________________________________________
> Cheese-list mailing list
> Cheese-list gnome org
> http://mail.gnome.org/mailman/listinfo/cheese-list
>



--
Hernán A. Gatta

Attachment: Cheese Pipeline.odg
Description: application/vnd.oasis.opendocument.graphics



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