On Tue, 2005-08-02 at 15:17 +0200, Dirk Meyer wrote:
> We need to add filters. And if I start mplayer with '-vf foo -vf bar',
> foo will be droped. That's why Freevo searches the filter chain and
> replaces that line with '-vf-add foo,bar'. 

Right, knew about that one.  Easy enough.

> Back to the features. It would be great if there would be a similar
> interface for xine and mplayer. 

My plan was to abstract that at the CanvasMovie level.  This class would
provide a unified API for both backends.  You just tell it which one you
want to use, or let it auto-detect (i.e. dvd:// will use xine, foo.avi
will use mplayer).  Perhaps CanvasMovie is a misnomer.

> So no '-vf' stuff visible to the
> outside. I could say 'use software scaler' and mplayer and xine do
> without me knowing how. And maybe 'use deinterlacer tvtime,lavc'. Xine

Something like that.  I haven't really thought about what the api would
look like yet, but that's the general idea.  It may be necessary to
abstract things even further, like "use medium quality deinterlacer" and
it choose the appropriate settings for each backend.

BTW, I asked in xine-devel about software scaling.

> But this is only needed for the mevas stuff, I guess I don't want to
> see that in Freevo at all. And I also need the elapsed time. That's
> all (right now).

No, CanvasMovie will take care of resolution and everything.  You can
get the elapsed time by calling get_position().  Or you can hook the
"tick" signal and have a callback called for every 200 or so ms, if you
need that precision. :)

> Maybe support low power cpus? They can't use the swscaler. Or should
> be say Freevo 2.0 needs at least 1 GHz?

Well, the osd of CanvasMovie will just be another Canvas.  I want to add
support for relative positions and sizes, so you can specify a
percentage.  So you can position an item at (-100, 50%) which will be
100 pixels from the right edge of the canvas and centered vertically.
Or have an item of size (100%, 75) so it will fill the width of the
canvas and be 75 pixels high.

The idea is to have canvas elements position and scale properly based on
a canvas size which is arbitrary.  The main reason is so you behave
properly on both 4/3 and 16/9 displays, but the same approach should
work for OSD on non-swscaled video.

The big problem here is aspect ratio.  If it's a widescreen DVD, the
canvas size is 720x480, but those aren't square pixels.  When it gets
drawn to the screen those pixels will get stretched.  This is obviously
solved by software scaling, but if I can't do that in xine, I'll have to
find a way to scale things at the canvas level.

Jason.

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

Reply via email to