Jason Tackaberry wrote: > On Tue, 2006-10-10 at 15:03 +0200, Dirk Meyer wrote: >> You can also pause, seek while playing and stop. I want to add seek >> between open and play to add some sort of resume playback, but that is >> not the point of this mail. > > And that's easy enough to implement, too.
Yes
>> Here a proposal: the player has two extra functions: set_property and
>> set_stream_property. When using set_property, the property will be set
>> for the current stream (if already loaded) and all the following. And
>> set_stream_property will only work on the current stream. Example:
>>
>> | player = kaa.popcorn.Player()
>> | player.open(file1)
>
> As an aside, there should be a generic open() function in kaa.popcorn
> that will return a suitable player given the mrl.
But using kaa.popcorn.Player is the prefered way.
>> | player.set_property(POST_PROCESSING, True)
>> | player.set_stream_property(DEINTERLACE, True)
>> | player.play()
>
> Unfortunately, it's even more complicated than this. Because with xine,
> it's useful to _always_ have the tvtime plugin in the filter chain, no
> matter what the content is
No, I don't think so. Xine can only guess. In mpeg files there is one
bit 'progressive'. 1 == the stream is progressive, 0 == don't know (!)
So some DVB-T channels in Germany always set this to 0, no matter what
the content is. Xine will use the deinterlace if set to 0. And is it
possible for xine to detect if deinterlacing is needed for real media?
Quicktime?
> Plus, with your way, we lose the ability to specify and manage filter
> chains. Maybe we don't want that flexibility. Or, maybe we should
> provide that flexibility, and offer a simpler API on top of that.
Maybe ... I'm not sure.
> I think there should be a player-specific api for specifying filters,
> for maximum flexibility, when it's needed.
Yes, but in that case you won't use kaa.popcorn as a generic
player. If your filter on client side depend on the used player, it is
not very generic.
> Then we layer on top an abstraction of the more common filters,
> where certain things can be tweaked via config file. For example:
>
> player.insert_video_filter('deinterlace', quality = 'high')
> player.append_video_filter('expand', osd = True, aspect = 4/3.0)
> player.set_video_out_device('xv')
> player.set_audio_out_device('alsa', passthrough = True)
That looks better to me. It is very similar to my idea, only that I
used
| set_property( DEINTERLACE, quality='high' )
| set_property( VIDEO_OUT, 'xv', display=display )
| set_property( AUDIO_OUT, 'alsa', passthrough = True )
and the other way around
| get_property( AUDIO_OUT ) => 'alsa', { passthrough = True }
The problem with this could be different names for output. E.g. in
mplayer I have mga for matrox and vidix working on fb. The x version
is xvidix. On xine I don't have mga, vidix is X and the fb version is
vidixfb. So we need to define some generic names. Or we can detect
which version of vidix based on the display (X/FB). So it could be
| set_property( VIDEO_OUT, 'mga,vidix' )
If mplayer is used, mga is used. Xine has no mga, it uses
vidix. Gstreamer only has xv, the player will fail.
> Then the config could specify things like the various qualities for
> deinterlace.
>
> xine.filters.deinterlace['high'].method = GreedyH
> xine.filters.deinterlace['medium'].method = Greedy2Frame
> xine.filters.deinterlace['low'].method = LinearBlend
> xine.filters.deinterlace['low'].cheapmode = True
> xine.filters.deinterlace['low'].fullfps = False
>
> mplayer.filters.deinterlace['high'].method = kerndeint
> mplayer.filters.deinterlace['medium'].method = pp=lb
OK
> It would also specify defaults:
>
> popcorn.video.device = xv
> popcorn.video.filters.deinterlace = high
> popcorn.audio.device = alsa
> popcorn.audio.passthrough = True
Again, OK
> The hard part here is finding a list of common filters and their
> parameters, and determining what should be exposed via config setting,
> and then determining sensible defaults for those. But that's not
> impossible.
Some settings also depend on the content. You need different filters
for playing NTCS files in the PAL world than the other way around. But
this is only needed for mplayer and we still lack the OSD support in
it (hint, hint) ;)
Dischi
--
There are 2 major products that came out of Berkeley:
UNIX and LSD.
We don't believe this to be a coincidence.
pgpHvdRipiI5J.pgp
Description: PGP signature
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ Freevo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freevo-devel
