Re: [Ekiga-devel-list] preliminary patch for X-Video support



Damien Sandras a écrit :
Hi Matthias,

Le mardi 12 septembre 2006 à 20:33 +0200, Matthias Schneider a écrit :
Is XV support intended to replace GDK or SDL?
I would replace both if possible.
Ok, on compile time we have options: configured with --disable-xv and without.
If disable-xv is given to configure, the behaviour is like before, GDK for window mode and SDL (if
found and enabled) for fullscreen mode. On linux systems only (to answer Juliens question),
without the --disable-xv given, ekiga will make use of the XV code for window (fully scalable) and
fullscreen mode.

Perfect. --enable-xv should be the default, but does xv work everywhere
on Linux?

We must care also about *BSD, and we do have friendly @sun people whom we wouldn't want to make flee :-)

I don't understand the problem.

Can you elaborate on the functions flow and what is the exact problem?
Ok I will try to describe the problem in a better way. Right now the implementation works like
this: either we enable GDK/SDL OR XV output at compile time. However even if XV is compiled into
ekiga, at runtime it is possible that:
- there is no support for XV by the graphics driver
- there is no free XV port available because another program is using it.
Right now in that case there simply is no window.  I suppose it would be nicer to have a fallback
to the GDK/SDL implementation. The problem I am facing right now that I do not know whether XV is
available until the first frame is to be displayed.


Ah, I understand!

Right now the output device is set in manager.cpp GMMAnager::GMManager() statically to GDK/SDL or
XV (via the device variable in OpalManager)
I this correct? I have not yet fully understood how the different output device are handled in
ekiga/opal.

That is correct. Notice also that SDL support is a part of the virtual
GDK device we implement and not a new PVideoOutputDevice.

This discussion makes me think about these enhancement bug reports I wrote some time ago :
http://bugzilla.gnome.org/show_bug.cgi?id=339883
http://bugzilla.gnome.org/show_bug.cgi?id=339881

because after all, what you want is being able to fall back on something else during the call...

My question now is where and how could I possibly implement a fallback in case XV is not
available? Can I register a PVideoOutputDevice_GDK from inside the PVideoOutputDevice_XV class? Or
where could I start to implement something like that?

I think that unfortunately you not switch from one PVideoOutputDevice to
another once it is open. Doing so would require changes in OPAL.

See my bug reports : don't switch the PVideoOutputDevice, keep the same one, but put something else behind.

Perhaps Craig can comment on this?

So I see two solutions :
- Modify OPAL so that you can change from one PVideoOutputDevice to
another during a call
- Create a new PVideoOutputDevice_Ekiga class from the current GDK one
that is able to draw using xv and fallback to SDL or GDK if it is not
possible.

Implement my idea.
Make your XV backend ask ekiga to use SDL when it has a problem.
Make the SDL one ask ekiga to use GDK when it has a problem.

Another idea would be to check once before registering the ouput device in GMManager::GMManager()
if XV is available and register the respective output device. This however would not cover the
situation that XV is available on a system, but no more ports are available.

My solution handles that.

I dont know if I make more sense than in my message from yesterday, perhaps it would be better to
use some code to demonstrateE?


No, I understood the problem.

No, I understood the problem, and my solution will give other nice features :-)

  I also have an nearly similar DirectX class waiting for ekiga, hopefully I will find some
time
soon. Please let me know what you think about this XV class,
I like it :)

Thanks!

I like the idea :-)

Snark



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