[MPlayer-dev-eng] [patch] DVD NAV work continues...

Arpi arpi at thot.banki.hu
Mon Apr 1 01:09:52 CEST 2002


Hi,

> > - I tried to do this for the active audio channel too, but there is a
> >   disconnect between dvdnav and mplayer on stream numbering that I'm still
>  
> >   working on.
> 
> probably because mplayer used real stream id starting from 128 while
> libdvdnav might map it to 0, 1 etc.
yes

> > - I have the caching subsystem check the STREAMTYPE_*, and skips if
> >   it sees a DVDNAV stream.
> suboptimal solution, IMHO better solution: use cache, but disable it
> during interactive scenes. Why? because without caching dvd playback is
> very sucking jerky...

cache cannot be enabled/disabled runtime... :(
the whole cache code is messy (it uses fork()) and should be avoided if
possible. it'sgood for network playback, but it still has problems with
multiple files playback and some vo drivers.

> > - I fixed the stream seeking to not rewind a DVDNAV stream, since this
> >   seemed to corrupt things pretty badly.  I've left the arrow keys active
> >   for now, but they'll be disabled at some point (maybe).
> 
> If possible you should remap curso key for navigation during interactive
> stuff, and use normal mapping the rest of time.
yes

> > - Since I'm still working on getting menu navigation visible the Right 
> >   way, I hacked in some code to draw lines around the menu box.  Since
> >   I don't have the brain power to understand the draw_alpha routines
> >   right now, I hacked together a "line drawing" routine using font
> >   characters.  :)  With that routine, I draw the menu box.  Unfortunately,
> >   you have to move the menu around at least once before it appears (this
> >   is due to DVDNAV events...)
> 
> eeh, why don't you look at dvdsub/vobsub code, to findout how to draw
> that stuff (spudec.c etc.)
yes

> > - I added an option to skip all still-image timers since still images
> >   don't work yet.  ("-skipopening")
> 
> do you have fool proof way of detecting still scenes?
> If yes there are two solutions:
> a) repeat still frame
> b) disable a/vsync code during still scenes, so buffer won't overrun

i vote for a).
b) is hard to implement, messy and needs some interface to mpeg decoders to
force flushing last P frame (as normally they are 1 frame behind).
a) sounds easy in viewpint of mplayer - but dunno if it's possible in stream
layer. probably soem small hacks into libmpdemux/video.c could do
(don't reset videobuffer pointer when still_flag is set (so next call
will display the same frame) or such trick)

> actually Arpi should comment on this, it's his area.
done.


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-dev-eng mailing list