On Sat, 2005-07-16 at 10:11 +0200, Dirk Meyer wrote:
> You are playing with libxine?

Indeed I am.  The API is actually pretty nice.  You can construct
arbitrarily complex filter trees at runtime (while the stream is
playing, even), which I sort of already knew, but it's nice to see this
at the API level.  I was also playing with porting the functionality of
vf_outbuf and vf_osd to xine.  Because we have in-process control over
xine's API, vf_outbuf can be more like vf_canvas, and it can talk
directly to an evas image object. 

Emotion (an xine movie object for evas, part of the E libs) implements
this as a video output plugin, rather than a postprocessing (filter)
plugin.  In theory, this is obviously much better.  But in practice,
rendering the video to the canvas is only for certain situations like
EPG or navigating the menus while a movie is running (MCE style).  When
the movie goes fullscreen, I want a nice transition effect, an animated
zoom until the movie goes fullscreen.  When the movie goes fullscreen,
it should switch to Xv.  And as you pointed out, there is no Xv engine
for evas.

So the movie needs the ability to render to both a window using Xv and
to the canvas (via a buffer) at the same time for a brief period during
this transition.  Yesterday I spent a lot of time trying to figure out
how to do this with libxine. :)  Well, specifically, I was trying to
figure out how to switch the output between buffer (canvas), Xv, and
both like the way vf_outbuf works.  Having a filter stop the frame from
proceeding down the filter chain to the video output is actually a lot
more straightforward with mplayer.

In practice, displaying the movie fullscreen using evas for the opengl
engine will work fine, as there's no tearing.  It might also be the case
with directfb.  But the common case is going to be X/Xv, so we need this
ability.

xine isn't all great though.  It doesn't seem to pick up the aspect
ratio flag in any of my movies, and pretty much all my DVD rips have
non-square pixels.  As a result, even the standard xine ui does not
display my movies properly.  Kaa can work around this in the api, but
I'm quite surprised that xine fails at such an obvious thing.  Maybe I'm
missing something.  Any xine gurus listening?

My main motivation for Mebox is to use xine for DVD playback primarily.
I've no desire not to use mplayer.  MPlayer has a very rich set of
filters and particularly playing back xvid rips with -vf
fspp,noise=8ah:5ah makes it practically indistinguishable from the
original DVD.  This is magic pixie dust. :)  Of course that magic has
steep CPU requirements, but if your cpu is fast enough, it's an
appreciable improvement.

So I would like a kaa-xine and kaa-mplayer.  kaa-canvas would use these
for CanvasMovie, and try to provide a uniform API for both these video
backends.  The technical details aren't fleshed out in my head, but the
general premise is something I'd like to see.

As for kaa-mplayer, it'd just call MPlayer via popen and tie into
notifier and basically do the same stuff both our MPlayer classes
currently do.  It would also detect if vf_outbuf and vf_osd is available
on the host's mplayer and offer suitable APIs to manipulate those
special filters.

When I say kaa-mplayer, I don't know if that's really what it should be.
We're creating a lot of modules which is good, but I don't think each of
those should be packaged together.  As a user, it's pretty annoying to
have to install 10 different packages when all I want is "this thing
called kaa."

Jason.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to