about libvo... IMPORTANT
Dear libvo driver writers/maintainers! :) I'm working on reviewing/redesigning flow of init/uninit processes. In the current CVS, libvo->config() is called from libmpcodecs (from the codec itself) instead of mplayer. It can be called more than once, it's called whatever something (width/height/colorspace) changes. So, the flow of libvo calls _NOW_: 1. preinit() - once before all other calls 2. control() calls, especialy query_format() 3. config() - 0, 1, 2 or more times called 4. control() calls - to tune runtime parameters, like fullscreen switch, or to access get_image() for direct rendering 5. uninit() So, every libvo driver HAVE TO: - provide reliable informations on query_format after preinit (especially for drivers which can only do it after (pre)initialization) - allow uninit() without a single config() call - allow more than one config() call without uninit & preinit between them - allow repeat the above sequence, so after uninit it should allow preinit again (required when user changes libvo driver on-the-fly) please review drivers and fix them! most of them does sig11 in the above cases. they should also support these control() calls (if has any sense): - get_image - provide buffer for direct rendering [optional] - fullscreen switch [optional] also review query_format(), it should return flags: 0x1 if colorspace supported 0x2 if colorspace supported without conversion (also set 0x1) 0x4 if it has OSD/SUB support for details on flags see DOCS/tech/tech-eng.txt A'rpi / Astral & ESP-team -- Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu
On Mon, Mar 18, 2002 at 12:35:08AM +0100, Arpi wrote:
Dear libvo driver writers/maintainers! :)
I'm working on reviewing/redesigning flow of init/uninit processes.
In the current CVS, libvo->config() is called from libmpcodecs (from the codec itself) instead of mplayer. It can be called more than once, it's called whatever something (width/height/colorspace) changes.
So, the flow of libvo calls _NOW_:
1. preinit() - once before all other calls 2. control() calls, especialy query_format() 3. config() - 0, 1, 2 or more times called
What is config supposed to return? Most (all?) libvo drivers seems to assume that -1 is a failure and 0 is success. libmpcodecs seems to assume that 0 is a failure and anything else is success. When is config called zero times? And when is it called more than once? When several files are played the order seems to be preinit, config, uninit, (preinit?), config, ... / Fredrik Kuivinen
Hi, > > So, the flow of libvo calls _NOW_: > > > > 1. preinit() - once before all other calls > > 2. control() calls, especialy query_format() > > 3. config() - 0, 1, 2 or more times called > > What is config supposed to return? Most (all?) libvo drivers seems to assume > that -1 is a failure and 0 is success. libmpcodecs seems to assume that 0 is > a > failure and anything else is success. yes, it's a design issue... 0=fail 1=ok everywhere except libvo... > When is config called zero times? And when is it called more than once? When zero: when the codec fails. 1. preinit 2. "handshaking" between codec, filters and libvo (calls to libvo's control() to get supported colorspaces etc). if it fails then libvo will be uninit-ed and jump to next file. 3. config 4. draw* + flip_page (decoding) 5. uninit > several files are played the order seems to be preinit, config, uninit, > (preinit?), config, ... currently. it will be extended, so if multiple file splayed with the same -vo, and -cache is disabled, it won't uninit and re-init libvo for next file. now it crashes most vo drivers, so they must be fixed first. A'rpi / Astral & ESP-team -- Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu
On Tue, Mar 19, 2002 at 12:27:44AM +0100, Arpi wrote:
Hi,
So, the flow of libvo calls _NOW_:
1. preinit() - once before all other calls 2. control() calls, especialy query_format() 3. config() - 0, 1, 2 or more times called
What is config supposed to return? Most (all?) libvo drivers seems to assume that -1 is a failure and 0 is success. libmpcodecs seems to assume that 0 is a failure and anything else is success.
yes, it's a design issue... 0=fail 1=ok everywhere except libvo...
So... What are we going to do about it? Changing all the libvo drivers or changing all the codecs? Currently I get sigsegv if the libvo driver initialization fails because mplayer tries to use it even though it isn't initialized correctly. (at least with xv and sdl) / Fredrik Kuivinen
Hi,
yes, it's a design issue... 0=fail 1=ok everywhere except libvo...
So... What are we going to do about it? Changing all the libvo drivers or changing all the codecs? Currently I get sigsegv if the libvo driver nothing why should we change them? it does work... mayeb at next libvo api upgrade it will be also changed
initialization fails because mplayer tries to use it even though it isn't initialized correctly. (at least with xv and sdl)
rtfm bugreports.html i fixed it 2 days ago, if you still have it, tell me how A'rpi / Astral & ESP-team -- Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu
On Tue, Mar 19, 2002 at 06:32:11PM +0100, Arpi wrote:
initialization fails because mplayer tries to use it even though it isn't initialized correctly. (at least with xv and sdl)
rtfm bugreports.html i fixed it 2 days ago, if you still have it, tell me how
Sorry my fault. But -vo xv has an other bug. See attachment. / Fredrik Kuivinen
participants (2)
-
Arpi -
Fredrik Kuivinen