libvo2 api/design problem
Arpi <[email protected]>
| Newsgroups | gmane.comp.video.mplayer.g2.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, There is soem design issue with the X11 and non-X11 vo2 drivers. As we decided & implemented, vo drivers doesnt have window management code, they receive display (at preinit) and window (via control) IDs and render the image there. I won't plan to change this! The only problem, is that it isn't visible from outside if a given vo driver uses X11 or not. So currently (in pre33) every vo driver gets an X11 window (even -vo null)... The original idea was that open X11 if available (vo_x11_init()), and pass teh display ID/handle to vo's preinit() function, so drivers supporting X11 can access the connection (and check device/driver caps, like Xv, DGA or GLX availability). But we have to know if the given driver actually uses that X11 handle, or ignored it. Currently this is not solved. Now when a vo driver is configured, vo->event_callback is called wiht VO_EVENT_CONFIG, so the event handler can open a window and set it via the VOCTRL_SET_WINDOW control(). I 2 possible solutions: 1. assume that every vo device with name beginning wiht char 'x' is x11 device. so xv, xmga, xvidix, xgl... it sounds quite lame, but this is the only way to know if a driver is x11 or non-x11 driver, before calling preinit(). it may be interesting for a GUI or even for a CLI app to know which drivers require X11 or which drivers won't use X11 (if the GUI has embedded winde, liek a browser plugin). 2. instead of using VO_EVENT_CONFIG to requiest teh window, we could define VO_EVENT_SET_WINDOW or so, so x11 drivers can ask for a window (at config()) if not yet set (via control()). A'rpi / Astral & ESP-team -- Developer of MPlayer G2, the Movie Framework for all - http://www.MPlayerHQ.hu