Opened 19 years ago

Last modified 18 years ago

#208 assigned enhancement

mplayer in win32 with dual monitors, can't move to other monitor

Reported by: mplayer@… Owned by: saschasommer@…
Priority: normal Component: vo
Version: HEAD Severity: minor
Keywords: Cc:
Blocked By: Blocking:
Reproduced by developer: no Analyzed by developer: no

Description

In Windows (I'm using XP), if I try to move mplayer to my 2nd monitor, the video
doesn't work; it just displays a solid green color. (If I only move it halfway
across, the half on the 1st monitor displays fine but the other half is just
green (probably not a big deal if this halfway case doesn't work). Once the
window is moved totally to the other monitor, it's all the solid green, and the
window doubles in size and stretches across both monitors.)

I also get these error messages when the window is totally on the 2nd monitor:
<vo_directx><ERROR>UpdateOverlay failed
<vo_directx><ERROR>Overlay:x1:0,y1:490,x2:1600,y2:1130,w:1600,h:640
<vo_directx><ERROR>invalid rectangle

I'm using this version: MPlayer dev-CVS-050109-16:39-3.2.3
from mplayer-win32-mingw-dev-cvs20050109.exe
which I got here: http://mplayer.sunset-utopia.homeip.net/

Change History (6)

comment:1 by reimar, 19 years ago

Resolution: invalid
Status: newclosed

This can not work due to hardware/driver limitations. Either start MPlayer on
the second monitor (-adapter or something) or use -vo directx:noaccel (I _think_
this should work). -vo gl2 _might_ work if both monitors are connected to the
same graphics card.

comment:2 by mplayer@…, 19 years ago

Resolution: invalid
Status: closedreopened

BSPlayer and VLC are able to do this though (and Media Player Classic works too
if I pause the movie before moving the window), so it seems like there's a way
to work around driver limitations. Maybe they just stop playing and then
restart it from the appropriate position? (In BSPlayer there's a short delay
before it starts playing again on the 2nd monitor, which I think is fine; in VLC
though I didn't notice any delay.)
-vo directx:noaccel doesn't work, but it's better than the default (instead of
all green, it shows a still image from the video, and the window stays the right
size).
-vo gl2 works (and actually works both when both monitors are on the same video
card, and when they're on separate video cards). But, then I can't resize the
window; is it possible to add that feature? If so, then I guess this bug can be
changed into a feature request for that. (Do VLC/BSPlayer work because they're
using OpenGL? VLC's setting says DirectX.)

comment:3 by reimar, 19 years ago

Owner: changed from alex@… to saschasommer@…
Severity: normalenhancement
Status: reopenednew

It should be possible to do the moving by reinitializing directx. But that also
means you need to detect when the window is moved to another screen. I'll leave
it open as an enhancement request. Also, Sascha is about the only one doing
windows development so reassigned (but don't expect to see results soon).
Btw. Do those programs work only when moving the window completely or already
when you move it only partially to the other screen?

comment:4 by mplayer@…, 19 years ago

In BSPlayer & VLC when the window is partially on both monitors, it shows video
only in the monitor containing the bigger portion of the window; the other part
is solid black.

comment:5 by saschasommer@…, 19 years ago

Status: newassigned

I didn't check the code but from the vlc logs it looks like they are doing a
complete uninit and then recreate all directdraw objects when the window moves
to the other screen. Doing this in MPlayer, too would require a big code
rewrite. Vo directx needs a rewrite anyway, but I would like to wait for G2 or
maybe until someone ports libvo2 to G1 for this. After all I do not count this
feature as very important. Decide which monitor to use before you start
playback und use -adapter to select it. Is there any error
message displayed when you try to move the window with -vo directx:noaccel?
Last time I tryed this worked...

comment:6 by reimar, 18 years ago

In CVS, both -vo gl and -vo gl2 should work fine if both monitors are connected
to the same card.
-vo directx is unchanged though.

Note: See TracTickets for help on using tickets.