The windows GDI output isn't well maintained. It actually hasn't been worked much on at all so I wouldn't be supprised by stupid bugs like this. Anyway I suggest you use the directx output on windows.
In fact, I use DirectX.
I just used Windows GDI to try to understand the problem of the "strange video size in mp4/H263.
Anyway here is a patch (win >=95 ; win >=NT3.1):
in wingdi.c, around line 343:
Adding:
/* Calculate output window size*/
/* windows define :
typedef struct _RECT {
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT;
*/
RECT RECT_tmp = {0, 0, p_vout->render.i_width, p_vout->render.i_height};
/* and
BOOL AdjustWindowRect(
LPRECT lpRect, // pointer on a RECT
DWORD dwStyle, // same as in CreateWindow
BOOL bMenu // is ther a menu line ?
);
*/
AdjustWindowRect(&RECT_tmp, WS_VISIBLE | WS_SIZEBOX | WS_CAPTION, 0);
/* and modifying */
/* Create output window */
p_vout->p_sys->window =
CreateWindow( psz_class, psz_title,
WS_VISIBLE | WS_SIZEBOX | WS_CAPTION,
CW_USEDEFAULT, CW_USEDEFAULT,
/* 2 modified lines
p_vout->render.i_width,
p_vout->render.i_height + 10,
*/
RECT_tmp.right - RECT_tmp.left,
RECT_tmp.bottom- RECT_tmp.top,
NULL, NULL, instance, (LPVOID)p_vout );
But I don't know how to free the RECT_tmp structure (an weither it should be freed), and how it should be writed in the Videolan style.
--
Triff