annotate libvo/vo_directx.c @ 33672:e576232a39d5

Prevent balance from hopping. Only recalculate the balance if the balance has changed, not if just the volume has changed. Because (at least with my soundcard) not all volume values can be stored, but seem to be mapped onto a discrete value set, recalculation the balance from the volume isn't accurate enough.
author ib
date Tue, 28 Jun 2011 18:16:06 +0000
parents 835841f89315
children 8c31fd7b9a08
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
1 /*
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
2 * Directx v2 or later DirectDraw interface
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
3 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
4 * Copyright (c) 2002 - 2005 Sascha Sommer <saschasommer@freenet.de>
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
5 *
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
6 * This file is part of MPlayer.
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
7 *
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
8 * MPlayer is free software; you can redistribute it and/or modify
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
11 * (at your option) any later version.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
12 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
13 * MPlayer is distributed in the hope that it will be useful,
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
16 * GNU General Public License for more details.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
17 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
18 * You should have received a copy of the GNU General Public License along
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
19 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
21 */
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
22
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
23 #include <windows.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
24 #include <windowsx.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
25 #include <ddraw.h>
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
26 #include <stdio.h>
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
27 #include <stdlib.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
28 #include <errno.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
29 #include "config.h"
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
30 #include "video_out.h"
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
31 #include "video_out_internal.h"
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32537
diff changeset
32 #include "libmpcodecs/vf.h"
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
33 #include "fastmemcpy.h"
30653
3d23e24c5c60 Declare externally used variables from vd.c as extern in vd.h.
diego
parents: 30301
diff changeset
34 #include "libmpcodecs/vd.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13775
diff changeset
35 #include "mp_msg.h"
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
36 #include "aspect.h"
32467
fbe5c829c69b Move libvo/sub.[ch] from libvo to sub.
cigaes
parents: 30653
diff changeset
37 #include "sub/sub.h"
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
38 #include "w32_common.h"
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
39
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
40 static LPDIRECTDRAWCOLORCONTROL g_cc = NULL; //color control interface
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
41 static LPDIRECTDRAW7 g_lpdd = NULL; //DirectDraw Object
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
42 static LPDIRECTDRAWSURFACE7 g_lpddsPrimary = NULL; //Primary Surface: viewport through the Desktop
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
43 static LPDIRECTDRAWSURFACE7 g_lpddsOverlay = NULL; //Overlay Surface
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
44 static LPDIRECTDRAWSURFACE7 g_lpddsBack = NULL; //Back surface
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
45 static LPDIRECTDRAWCLIPPER g_lpddclipper; //clipper object, can only be used without overlay
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
46 static DDSURFACEDESC2 ddsdsf; //surface descripiton needed for locking
7778
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
47 static HINSTANCE hddraw_dll; //handle to ddraw.dll
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
48 static RECT rd; //rect of our stretched image
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
49 static RECT rs; //rect of our source image
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
50 static HBRUSH colorbrush = NULL; // Handle to colorkey brush
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
51 static HBRUSH blackbrush = NULL; // Handle to black brush
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
52 static uint32_t image_width, image_height; //image width and height
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
53 static uint8_t *image=NULL; //image data
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
54 static void* tmp_image = NULL;
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
55 static uint32_t image_format=0; //image format
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
56 static uint32_t primary_image_format;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
57 static uint32_t vm_height=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
58 static uint32_t vm_width=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
59 static uint32_t vm_bpp=0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
60 static uint32_t dstride; //surface stride
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
61 static uint32_t nooverlay = 0; //NonOverlay mode
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
62 static DWORD destcolorkey; //colorkey for our surface
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
63 static COLORREF windowcolor = RGB(0,0,16); //windowcolor == colorkey
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
64 static int adapter_count=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
65 static GUID selected_guid;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
66 static GUID *selected_guid_ptr = NULL;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
67
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
68 /*****************************************************************************
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
69 * DirectDraw GUIDs.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
70 * Defining them here allows us to get rid of the dxguid library during
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
71 * the linking stage.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
72 *****************************************************************************/
30301
a33cf9c69731 Change GUID declarations in vo_directx to be static.
reimar
parents: 29263
diff changeset
73 #define IID_IDirectDraw7 MP_IID_IDirectDraw7
a33cf9c69731 Change GUID declarations in vo_directx to be static.
reimar
parents: 29263
diff changeset
74 static const GUID MP_IID_IDirectDraw7 =
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
75 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
76 0x15e65ec0,0x3b9c,0x11d2,{0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b}
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
77 };
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
78
30301
a33cf9c69731 Change GUID declarations in vo_directx to be static.
reimar
parents: 29263
diff changeset
79 #define IID_IDirectDrawColorControl MP_IID_IDirectDrawColorControl
a33cf9c69731 Change GUID declarations in vo_directx to be static.
reimar
parents: 29263
diff changeset
80 static const GUID MP_IID_IDirectDrawColorControl =
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
81 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
82 0x4b9f0ee0,0x0d7e,0x11d0,{0x9b,0x06,0x00,0xa0,0xc9,0x03,0xa3,0xb8}
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
83 };
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
84
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
85
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
86 typedef struct directx_fourcc_caps
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
87 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
88 char* img_format_name; //human readable name
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
89 uint32_t img_format; //as MPlayer image format
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
90 uint32_t drv_caps; //what hw supports with this format
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
91 DDPIXELFORMAT g_ddpfOverlay; //as Directx Sourface description
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
92 } directx_fourcc_caps;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
93
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
94
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
95 static directx_fourcc_caps g_ddpf[] =
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
96 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
97 {"YV12 ",IMGFMT_YV12 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','V','1','2'),0,0,0,0,0}},
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
98 {"I420 ",IMGFMT_I420 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('I','4','2','0'),0,0,0,0,0}}, //yv12 with swapped uv
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
99 {"IYUV ",IMGFMT_IYUV ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('I','Y','U','V'),0,0,0,0,0}}, //same as i420
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
100 {"YVU9 ",IMGFMT_YVU9 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','V','U','9'),0,0,0,0,0}},
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
101 {"YUY2 ",IMGFMT_YUY2 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','U','Y','2'),0,0,0,0,0}},
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
102 {"UYVY ",IMGFMT_UYVY ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('U','Y','V','Y'),0,0,0,0,0}},
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
103 {"BGR8 ",IMGFMT_BGR8 ,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 8, 0x00000000, 0x00000000, 0x00000000, 0}},
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
104 {"RGB15",IMGFMT_RGB15,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000001F, 0x000003E0, 0x00007C00, 0}}, //RGB 5:5:5
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
105 {"BGR15",IMGFMT_BGR15,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x00007C00, 0x000003E0, 0x0000001F, 0}},
10647
820ce9b724a3 fix RGB16 vs BGR16 mismatch
faust3
parents: 10640
diff changeset
106 {"RGB16",IMGFMT_RGB16,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000001F, 0x000007E0, 0x0000F800, 0}}, //RGB 5:6:5
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
107 {"BGR16",IMGFMT_BGR16,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000F800, 0x000007E0, 0x0000001F, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
108 {"RGB24",IMGFMT_RGB24,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 24, 0x000000FF, 0x0000FF00, 0x00FF0000, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
109 {"BGR24",IMGFMT_BGR24,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 24, 0x00FF0000, 0x0000FF00, 0x000000FF, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
110 {"RGB32",IMGFMT_RGB32,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
111 {"BGR32",IMGFMT_BGR32,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0}}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
112 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
113 #define NUM_FORMATS (sizeof(g_ddpf) / sizeof(g_ddpf[0]))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
114
25216
3aee342be929 Make vo info structs const
reimar
parents: 24840
diff changeset
115 static const vo_info_t info =
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
116 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
117 "Directx DDraw YUV/RGB/BGR renderer",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
118 "directx",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
119 "Sascha Sommer <saschasommer@freenet.de>",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
120 ""
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
121 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
122
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
123 const LIBVO_EXTERN(directx)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
124
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
125 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src,
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
126 unsigned char *srca, int stride)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
127 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
128 switch(image_format) {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
129 case IMGFMT_YV12 :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
130 case IMGFMT_I420 :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
131 case IMGFMT_IYUV :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
132 case IMGFMT_YVU9 :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
133 vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + x0,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
134 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
135 case IMGFMT_YUY2 :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
136 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image)+ dstride*y0 + 2*x0 ,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
137 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
138 case IMGFMT_UYVY :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
139 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + 2*x0 + 1,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
140 break;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
141 case IMGFMT_RGB15:
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
142 case IMGFMT_BGR15:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
143 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
144 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
145 case IMGFMT_RGB16:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
146 case IMGFMT_BGR16:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
147 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
148 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
149 case IMGFMT_RGB24:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
150 case IMGFMT_BGR24:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
151 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
152 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
153 case IMGFMT_RGB32:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
154 case IMGFMT_BGR32:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
155 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
156 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
157 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
158 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
159
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
160 static void draw_osd(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
161 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
162 vo_draw_text(image_width,image_height,draw_alpha);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
163 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
164
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
165 static int
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
166 query_format(uint32_t format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
167 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
168 uint32_t i=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
169 while ( i < NUM_FORMATS )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
170 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
171 if (g_ddpf[i].img_format == format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
172 return g_ddpf[i].drv_caps;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
173 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
174 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
175 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
176 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
177
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
178 static uint32_t Directx_CreatePrimarySurface(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
179 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
180 DDSURFACEDESC2 ddsd;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
181 //cleanup
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
182 if(g_lpddsPrimary)g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
183 g_lpddsPrimary=NULL;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
184
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
185 if(vidmode)g_lpdd->lpVtbl->SetDisplayMode(g_lpdd,vm_width,vm_height,vm_bpp,vo_refresh_rate,0);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
186 ZeroMemory(&ddsd, sizeof(ddsd));
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
187 ddsd.dwSize = sizeof(ddsd);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
188 //set flags and create a primary surface.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
189 ddsd.dwFlags = DDSD_CAPS;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
190 ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
191 if(g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsd, &g_lpddsPrimary, NULL )== DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
192 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>primary surface created\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
193 else
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
194 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
195 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>could not create primary surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
196 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
197 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
198 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
199 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
200
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
201 static uint32_t Directx_CreateOverlay(uint32_t imgfmt)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
202 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
203 HRESULT ddrval;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
204 DDSURFACEDESC2 ddsdOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
205 uint32_t i=0;
32481
983577adcf0e Fix possible out-of-bounds access.
reimar
parents: 32467
diff changeset
206 while ( i < NUM_FORMATS && imgfmt != g_ddpf[i].img_format)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
207 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
208 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
209 }
32481
983577adcf0e Fix possible out-of-bounds access.
reimar
parents: 32467
diff changeset
210 if (!g_lpdd || !g_lpddsPrimary || i == NUM_FORMATS)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
211 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
212 //cleanup
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
213 if (g_lpddsOverlay)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
214 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
215 g_lpddsOverlay= NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
216 g_lpddsBack = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
217 //create our overlay
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
218 ZeroMemory(&ddsdOverlay, sizeof(ddsdOverlay));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
219 ddsdOverlay.dwSize = sizeof(ddsdOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
220 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_FLIP | DDSCAPS_COMPLEX | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
221 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_BACKBUFFERCOUNT| DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
222 ddsdOverlay.dwWidth=image_width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
223 ddsdOverlay.dwHeight=image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
224 ddsdOverlay.dwBackBufferCount=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
225 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
226 if(vo_doublebuffering) //tribblebuffering
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
227 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
228 if (g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL)== DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
229 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
230 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>overlay with format %s created\n",g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
231 //get the surface directly attached to the primary (the back buffer)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
232 ddsdOverlay.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
233 if(g_lpddsOverlay->lpVtbl->GetAttachedSurface(g_lpddsOverlay,&ddsdOverlay.ddsCaps, &g_lpddsBack) != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
234 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
235 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't get attached surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
236 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
237 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
238 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
239 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
240 vo_doublebuffering=0; //disable tribblebuffering
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
241 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><WARN>cannot create tribblebuffer overlay with format %s\n",g_ddpf[i].img_format_name);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
242 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
243 //single buffer
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
244 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>using singlebuffer overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
245 ddsdOverlay.dwBackBufferCount=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
246 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
247 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
248 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
249 // try to create the overlay surface
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
250 ddrval = g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
251 if(ddrval != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
252 {
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
253 if(ddrval == DDERR_INVALIDPIXELFORMAT)mp_msg(MSGT_VO,MSGL_V,"<vo_directx><ERROR> invalid pixelformat: %s\n",g_ddpf[i].img_format_name);
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
254 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>");
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
255 switch(ddrval)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
256 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
257 case DDERR_INCOMPATIBLEPRIMARY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
258 {mp_msg(MSGT_VO, MSGL_ERR,"incompatible primary surface\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
259 case DDERR_INVALIDCAPS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
260 {mp_msg(MSGT_VO, MSGL_ERR,"invalid caps\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
261 case DDERR_INVALIDOBJECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
262 {mp_msg(MSGT_VO, MSGL_ERR,"invalid object\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
263 case DDERR_INVALIDPARAMS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
264 {mp_msg(MSGT_VO, MSGL_ERR,"invalid parameters\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
265 case DDERR_NODIRECTDRAWHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
266 {mp_msg(MSGT_VO, MSGL_ERR,"no directdraw hardware\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
267 case DDERR_NOEMULATION:
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10900
diff changeset
268 {mp_msg(MSGT_VO, MSGL_ERR,"can't emulate\n");break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
269 case DDERR_NOFLIPHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
270 {mp_msg(MSGT_VO, MSGL_ERR,"hardware can't do flip\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
271 case DDERR_NOOVERLAYHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
272 {mp_msg(MSGT_VO, MSGL_ERR,"hardware can't do overlay\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
273 case DDERR_OUTOFMEMORY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
274 {mp_msg(MSGT_VO, MSGL_ERR,"not enough system memory\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
275 case DDERR_UNSUPPORTEDMODE:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
276 {mp_msg(MSGT_VO, MSGL_ERR,"unsupported mode\n");break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
277 case DDERR_OUTOFVIDEOMEMORY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
278 {mp_msg(MSGT_VO, MSGL_ERR,"not enough video memory\n");break;}
12156
ff9f315741a7 print at least the error number when there is no text for it
faust3
parents: 12021
diff changeset
279 default:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
280 mp_msg(MSGT_VO, MSGL_ERR,"create surface failed with 0x%x\n",ddrval);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
281 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
282 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
283 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
284 g_lpddsBack = g_lpddsOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
285 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
286 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
287
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
288 static uint32_t Directx_CreateBackpuffer(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
289 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
290 DDSURFACEDESC2 ddsd;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
291 //cleanup
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
292 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
293 g_lpddsBack=NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
294 ZeroMemory(&ddsd, sizeof(ddsd));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
295 ddsd.dwSize = sizeof(ddsd);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
296 ddsd.ddsCaps.dwCaps= DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
297 ddsd.dwFlags= DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
298 ddsd.dwWidth=image_width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
299 ddsd.dwHeight=image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
300 if(g_lpdd->lpVtbl->CreateSurface( g_lpdd, &ddsd, &g_lpddsBack, 0 ) != DD_OK )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
301 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
302 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't create backpuffer\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
303 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
304 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
305 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>backbuffer created\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
306 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
307 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
308
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
309 static void uninit(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
310 {
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
311 if (g_cc != NULL)
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
312 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
313 g_cc->lpVtbl->Release(g_cc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
314 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
315 g_cc=NULL;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
316 if (g_lpddclipper != NULL) g_lpddclipper->lpVtbl->Release(g_lpddclipper);
9619
faust3
parents: 9488
diff changeset
317 g_lpddclipper = NULL;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
318 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>clipper released\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
319 if (g_lpddsBack != NULL) g_lpddsBack->lpVtbl->Release(g_lpddsBack);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
320 g_lpddsBack = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
321 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>back surface released\n");
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
322 if(vo_doublebuffering && !nooverlay)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
323 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
324 if (g_lpddsOverlay != NULL)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
325 g_lpddsOverlay = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
326 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>overlay surface released\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
327 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
328 if (g_lpddsPrimary != NULL) g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
329 g_lpddsPrimary = NULL;
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
330 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>primary released\n");
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
331 if (colorbrush) DeleteObject(colorbrush);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
332 colorbrush = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
333 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>GDI resources deleted\n");
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
334 if (g_lpdd != NULL){
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
335 if(vidmode)g_lpdd->lpVtbl->RestoreDisplayMode(g_lpdd);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
336 g_lpdd->lpVtbl->Release(g_lpdd);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
337 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
338 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>directdrawobject released\n");
7778
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
339 FreeLibrary( hddraw_dll);
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
340 hddraw_dll= NULL;
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
341 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>ddraw.dll freed\n");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
342 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>uninitialized\n");
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
343 vo_w32_uninit();
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
344 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
345
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
346 static BOOL WINAPI EnumCallbackEx(GUID FAR *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName, LPVOID lpContext, HMONITOR hm)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
347 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
348 if (!lpGUID)
33584
deedeb235cac Simplify code for printing display adapter list.
reimar
parents: 33569
diff changeset
349 lpDriverDescription = "Primary Display Adapter";
deedeb235cac Simplify code for printing display adapter list.
reimar
parents: 33569
diff changeset
350 mp_msg(MSGT_VO, MSGL_INFO ,"<vo_directx> adapter %d: %s", adapter_count, lpDriverDescription);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
351
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
352 if(adapter_count == vo_adapter_num){
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
353 if (!lpGUID)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
354 selected_guid_ptr = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
355 else
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
356 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
357 selected_guid = *lpGUID;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
358 selected_guid_ptr = &selected_guid;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
359 }
14302
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
360
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
361 mp_msg(MSGT_VO, MSGL_INFO ,"\t\t<--");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
362 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
363 mp_msg(MSGT_VO, MSGL_INFO ,"\n");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
364
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
365 adapter_count++;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
366
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
367 return 1; // list all adapters
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
368 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
369
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
370 static uint32_t Directx_InitDirectDraw(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
371 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
372 HRESULT (WINAPI *OurDirectDrawCreateEx)(GUID *,LPVOID *, REFIID,IUnknown FAR *);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
373 DDSURFACEDESC2 ddsd;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
374 LPDIRECTDRAWENUMERATEEX OurDirectDrawEnumerateEx;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
375
17534
13cdba48ff98 reinitialize adapter_count to 0, EnumCallbackEx will not work otherwise
reimar
parents: 16975
diff changeset
376 adapter_count = 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
377
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
378 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>Initing DirectDraw\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
379
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
380 //load direct draw DLL: based on videolans code
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
381 hddraw_dll = LoadLibrary("DDRAW.DLL");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
382 if( hddraw_dll == NULL )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
383 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
384 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed loading ddraw.dll\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
385 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
386 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
387
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
388 if(vo_adapter_num){ //display other than default
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
389 OurDirectDrawEnumerateEx = (LPDIRECTDRAWENUMERATEEX) GetProcAddress(hddraw_dll,"DirectDrawEnumerateExA");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
390 if (!OurDirectDrawEnumerateEx){
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
391 FreeLibrary( hddraw_dll );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
392 hddraw_dll = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
393 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed geting proc address: DirectDrawEnumerateEx\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
394 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>no directx 7 or higher installed\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
395 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
396 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
397
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
398 // enumerate all display devices attached to the desktop
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
399 OurDirectDrawEnumerateEx(EnumCallbackEx, NULL, DDENUM_ATTACHEDSECONDARYDEVICES );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
400
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
401 if(vo_adapter_num >= adapter_count)
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
402 mp_msg(MSGT_VO, MSGL_ERR,"Selected adapter (%d) doesn't exist: Default Display Adapter selected\n",vo_adapter_num);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
403 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
404
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
405 OurDirectDrawCreateEx = (void *)GetProcAddress(hddraw_dll, "DirectDrawCreateEx");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
406 if ( OurDirectDrawCreateEx == NULL )
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
407 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
408 FreeLibrary( hddraw_dll );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
409 hddraw_dll = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
410 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed geting proc address: DirectDrawCreateEx\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
411 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
412 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
413
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
414 // initialize DirectDraw and create directx v7 object
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
415 if (OurDirectDrawCreateEx(selected_guid_ptr, (VOID**)&g_lpdd, &IID_IDirectDraw7, NULL ) != DD_OK )
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
416 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
417 FreeLibrary( hddraw_dll );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
418 hddraw_dll = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
419 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't initialize ddraw\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
420 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
421 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
422
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
423 //get current screen siz for selected monitor ...
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
424 ddsd.dwSize=sizeof(ddsd);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
425 ddsd.dwFlags=DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
426 g_lpdd->lpVtbl->GetDisplayMode(g_lpdd, &ddsd);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
427 if(vo_screenwidth && vo_screenheight)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
428 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
429 vm_height=vo_screenheight;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
430 vm_width=vo_screenwidth;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
431 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
432 else
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
433 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
434 vm_height=ddsd.dwHeight;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
435 vm_width=ddsd.dwWidth;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
436 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
437
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
438
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
439 if(vo_dbpp)vm_bpp=vo_dbpp;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
440 else vm_bpp=ddsd.ddpfPixelFormat.dwRGBBitCount;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
441
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
442 if(vidmode){
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
443 if (g_lpdd->lpVtbl->SetCooperativeLevel(g_lpdd, vo_w32_window, DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK)
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
444 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
445 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't set cooperativelevel for exclusive mode\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
446 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
447 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
448 /*SetDisplayMode(ddobject,width,height,bpp,refreshrate,aditionalflags)*/
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
449 if(g_lpdd->lpVtbl->SetDisplayMode(g_lpdd,vm_width, vm_height, vm_bpp,0,0) != DD_OK)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
450 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
451 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't set displaymode\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
452 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
453 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
454 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>Initialized adapter %i for %i x %i @ %i \n",vo_adapter_num,vm_width,vm_height,vm_bpp);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
455 return 0;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
456 }
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
457 if (g_lpdd->lpVtbl->SetCooperativeLevel(g_lpdd, vo_w32_window, DDSCL_NORMAL) != DD_OK) // or DDSCL_SETFOCUSWINDOW
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
458 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
459 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>could not set cooperativelevel for hardwarecheck\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
460 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
461 }
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
462 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>DirectDraw Initialized\n");
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
463 return 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
464 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
465
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
466 static uint32_t Directx_ManageDisplay(void)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
467 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
468 HRESULT ddrval;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
469 DDCAPS capsDrv;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
470 DDOVERLAYFX ovfx;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
471 DWORD dwUpdateFlags=0;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
472 int width,height;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
473
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
474 rd.left = vo_dx - xinerama_x;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
475 rd.top = vo_dy - xinerama_y;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
476 width = vo_dwidth;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
477 height = vo_dheight;
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
478
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
479 aspect(&width, &height, A_WINZOOM);
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
480 panscan_calc_windowed();
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
481 width += vo_panscan_x;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
482 height += vo_panscan_y;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
483 width = FFMIN(width, vo_screenwidth);
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
484 height = FFMIN(height, vo_screenheight);
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
485 rd.left += (vo_dwidth - width ) / 2;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
486 rd.top += (vo_dheight - height) / 2;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
487
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
488 rd.right=rd.left+width;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
489 rd.bottom=rd.top+height;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
490
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
491 /*ok, let's workaround some overlay limitations*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
492 if(!nooverlay)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
493 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
494 uint32_t uStretchFactor1000; //minimum stretch
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
495 uint32_t xstretch1000,ystretch1000;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
496 /*get driver capabilities*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
497 ZeroMemory(&capsDrv, sizeof(capsDrv));
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
498 capsDrv.dwSize = sizeof(capsDrv);
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
499 if(g_lpdd->lpVtbl->GetCaps(g_lpdd,&capsDrv, NULL) != DD_OK)return 1;
12485
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
500 /*get minimum stretch, depends on display adaptor and mode (refresh rate!) */
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
501 uStretchFactor1000 = capsDrv.dwMinOverlayStretch>1000 ? capsDrv.dwMinOverlayStretch : 1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
502 rd.right = ((width+rd.left)*uStretchFactor1000+999)/1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
503 rd.bottom = (height+rd.top)*uStretchFactor1000/1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
504 /*calculate xstretch1000 and ystretch1000*/
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
505 xstretch1000 = ((rd.right - rd.left)* 1000)/image_width ;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
506 ystretch1000 = ((rd.bottom - rd.top)* 1000)/image_height;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
507 rs.left=0;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
508 rs.right=image_width;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
509 rs.top=0;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
510 rs.bottom=image_height;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
511 if(rd.left < 0)rs.left=(-rd.left*1000)/xstretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
512 if(rd.top < 0)rs.top=(-rd.top*1000)/ystretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
513 if(rd.right > vo_screenwidth)rs.right=((vo_screenwidth-rd.left)*1000)/xstretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
514 if(rd.bottom > vo_screenheight)rs.bottom=((vo_screenheight-rd.top)*1000)/ystretch1000;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
515 /*do not allow to zoom or shrink if hardware isn't able to do so*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
516 if((width < image_width)&& !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKX))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
517 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
518 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKXN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only shrinkN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
519 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't shrink x\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
520 rd.right=rd.left+image_width;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
521 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
522 else if((width > image_width)&& !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHX))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
523 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
524 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHXN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only stretchN\n");
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
525 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't stretch x\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
526 rd.right = rd.left+image_width;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
527 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
528 if((height < image_height) && !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKY))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
529 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
530 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKYN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only shrinkN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
531 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't shrink y\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
532 rd.bottom = rd.top + image_height;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
533 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
534 else if((height > image_height ) && !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHY))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
535 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
536 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHYN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only stretchN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
537 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't stretch y\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
538 rd.bottom = rd.top + image_height;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
539 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
540 /*the last thing to check are alignment restrictions
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
541 these expressions (x & -y) just do alignment by dropping low order bits...
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
542 so to round up, we add first, then truncate*/
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
543 if((capsDrv.dwCaps & DDCAPS_ALIGNBOUNDARYSRC) && capsDrv.dwAlignBoundarySrc)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
544 rs.left = (rs.left + capsDrv.dwAlignBoundarySrc / 2) & -(signed)(capsDrv.dwAlignBoundarySrc);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
545 if((capsDrv.dwCaps & DDCAPS_ALIGNSIZESRC) && capsDrv.dwAlignSizeSrc)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
546 rs.right = rs.left + ((rs.right - rs.left + capsDrv.dwAlignSizeSrc / 2) & -(signed) (capsDrv.dwAlignSizeSrc));
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
547 if((capsDrv.dwCaps & DDCAPS_ALIGNBOUNDARYDEST) && capsDrv.dwAlignBoundaryDest)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
548 rd.left = (rd.left + capsDrv.dwAlignBoundaryDest / 2) & -(signed)(capsDrv.dwAlignBoundaryDest);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
549 if((capsDrv.dwCaps & DDCAPS_ALIGNSIZEDEST) && capsDrv.dwAlignSizeDest)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
550 rd.right = rd.left + ((rd.right - rd.left) & -(signed) (capsDrv.dwAlignSizeDest));
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
551 /*create an overlay FX structure to specify a destination color key*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
552 ZeroMemory(&ovfx, sizeof(ovfx));
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
553 ovfx.dwSize = sizeof(ovfx);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
554 if(vo_fs||vidmode)
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
555 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
556 ovfx.dckDestColorkey.dwColorSpaceLowValue = 0;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
557 ovfx.dckDestColorkey.dwColorSpaceHighValue = 0;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
558 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
559 else
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
560 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
561 ovfx.dckDestColorkey.dwColorSpaceLowValue = destcolorkey;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
562 ovfx.dckDestColorkey.dwColorSpaceHighValue = destcolorkey;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
563 }
22289
780caed72ac7 cosmetics: typo fixes, usefuLL --> useful and aswell --> as well
diego
parents: 20394
diff changeset
564 // set the flags we'll send to UpdateOverlay //DDOVER_AUTOFLIP|DDOVERFX_MIRRORLEFTRIGHT|DDOVERFX_MIRRORUPDOWN could be useful?;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
565 dwUpdateFlags = DDOVER_SHOW | DDOVER_DDFX;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
566 /*if hardware can't do colorkeying set the window on top*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
567 if(capsDrv.dwCKeyCaps & DDCKEYCAPS_DESTOVERLAY) dwUpdateFlags |= DDOVER_KEYDESTOVERRIDE;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
568 else if (!tmp_image) vo_ontop = 1;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
569 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
570 else
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
571 {
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
572 g_lpddclipper->lpVtbl->SetHWnd(g_lpddclipper, 0, vo_w32_window);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
573 }
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
574
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
575 /*make sure the overlay is inside the screen*/
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
576 if(rd.left<0)rd.left=0;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
577 if(rd.right>vo_screenwidth)rd.right=vo_screenwidth;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
578 if(rd.top<0)rd.top=0;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
579 if(rd.bottom>vo_screenheight)rd.bottom=vo_screenheight;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
580
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
581 /*for nonoverlay mode we are finished, for overlay mode we have to display the overlay first*/
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
582 if(nooverlay)return 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
583
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
584 // printf("overlay: %i %i %ix%i\n",rd.left,rd.top,rd.right - rd.left,rd.bottom - rd.top);
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
585 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,&rs, g_lpddsPrimary, &rd, dwUpdateFlags, &ovfx);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
586 if(FAILED(ddrval))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
587 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
588 // one cause might be the driver lied about minimum stretch
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
589 // we should try upping the destination size a bit, or
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
590 // perhaps shrinking the source size
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
591 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>UpdateOverlay failed\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
592 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>Overlay:x1:%i,y1:%i,x2:%i,y2:%i,w:%i,h:%i\n",rd.left,rd.top,rd.right,rd.bottom,rd.right - rd.left,rd.bottom - rd.top );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
593 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
594 switch (ddrval)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
595 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
596 case DDERR_NOSTRETCHHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
597 {mp_msg(MSGT_VO, MSGL_ERR ,"hardware can't stretch: try to size the window back\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
598 case DDERR_INVALIDRECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
599 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid rectangle\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
600 case DDERR_INVALIDPARAMS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
601 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid parameters\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
602 case DDERR_HEIGHTALIGN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
603 {mp_msg(MSGT_VO, MSGL_ERR ,"height align\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
604 case DDERR_XALIGN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
605 {mp_msg(MSGT_VO, MSGL_ERR ,"x align\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
606 case DDERR_UNSUPPORTED:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
607 {mp_msg(MSGT_VO, MSGL_ERR ,"unsupported\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
608 case DDERR_INVALIDSURFACETYPE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
609 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid surfacetype\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
610 case DDERR_INVALIDOBJECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
611 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid object\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
612 case DDERR_SURFACELOST:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
613 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
614 mp_msg(MSGT_VO, MSGL_ERR ,"surfaces lost\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
615 g_lpddsOverlay->lpVtbl->Restore( g_lpddsOverlay ); //restore and try again
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
616 g_lpddsPrimary->lpVtbl->Restore( g_lpddsPrimary );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
617 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,&rs, g_lpddsPrimary, &rd, dwUpdateFlags, &ovfx);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
618 if(ddrval !=DD_OK)mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>UpdateOverlay failed again\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
619 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
620 }
12156
ff9f315741a7 print at least the error number when there is no text for it
faust3
parents: 12021
diff changeset
621 default:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
622 mp_msg(MSGT_VO, MSGL_ERR ," 0x%x\n",ddrval);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
623 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
624 /*ok we can't do anything about it -> hide overlay*/
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
625 if(ddrval != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
626 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
627 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
628 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
629 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
630 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
631 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
632 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
633
33590
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
634 static void check_events(void)
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
635 {
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
636 int evt = vo_w32_check_events();
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
637 if (evt & (VO_EVENT_RESIZE | VO_EVENT_MOVE))
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
638 Directx_ManageDisplay();
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
639 if (evt & (VO_EVENT_RESIZE | VO_EVENT_MOVE | VO_EVENT_EXPOSE)) {
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
640 HDC dc = vo_w32_get_dc(vo_w32_window);
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
641 RECT r;
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
642 GetClientRect(vo_w32_window, &r);
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
643 FillRect(dc, &r, vo_fs || vidmode ? blackbrush : colorbrush);
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
644 vo_w32_release_dc(vo_w32_window, dc);
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
645 }
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
646 }
b213f28fc17a Move check_events function to avoid forward declaration.
reimar
parents: 33589
diff changeset
647
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
648 //find out supported overlay pixelformats
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
649 static uint32_t Directx_CheckOverlayPixelformats(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
650 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
651 DDCAPS capsDrv;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
652 HRESULT ddrval;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
653 DDSURFACEDESC2 ddsdOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
654 uint32_t i;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
655 uint32_t formatcount = 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
656 //get driver caps to determine overlay support
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
657 ZeroMemory(&capsDrv, sizeof(capsDrv));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
658 capsDrv.dwSize = sizeof(capsDrv);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
659 ddrval = g_lpdd->lpVtbl->GetCaps(g_lpdd,&capsDrv, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
660 if (FAILED(ddrval))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
661 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
662 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>failed getting ddrawcaps\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
663 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
664 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
665 if (!(capsDrv.dwCaps & DDCAPS_OVERLAY))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
666 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
667 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>Your card doesn't support overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
668 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
669 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
670 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>testing supported overlay pixelformats\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
671 //it is not possible to query for pixel formats supported by the
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
672 //overlay hardware: try out various formats till one works
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
673 ZeroMemory(&ddsdOverlay, sizeof(ddsdOverlay));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
674 ddsdOverlay.dwSize = sizeof(ddsdOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
675 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
676 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH| DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
677 ddsdOverlay.dwWidth=300;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
678 ddsdOverlay.dwHeight=280;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
679 ddsdOverlay.dwBackBufferCount=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
680 //try to create an overlay surface using one of the pixel formats in our global list
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
681 i=0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
682 do
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
683 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
684 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
685 ddrval = g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
686 if (ddrval == DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
687 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
688 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT OVERLAY>%i %s supported\n",i,g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
689 g_ddpf[i].drv_caps = VFCAP_CSP_SUPPORTED |VFCAP_OSD |VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
690 formatcount++;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
691 else mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT OVERLAY>%i %s not supported\n",i,g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
692 if (g_lpddsOverlay != NULL) {g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);g_lpddsOverlay = NULL;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
693 } while( ++i < NUM_FORMATS );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
694 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>Your card supports %i of %i overlayformats\n",formatcount, NUM_FORMATS);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
695 if (formatcount == 0)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
696 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
697 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><WARN>Your card supports overlay, but we couldn't create one\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
698 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>This can have the following reasons:\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
699 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- you are already using an overlay with another app\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
700 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- you don't have enough videomemory\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
701 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- vo_directx doesn't support the cards overlay pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
702 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
703 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
704 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYMIRRORLEFTRIGHT)mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>can mirror left right\n"); //I don't have hardware which
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
705 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYMIRRORUPDOWN )mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>can mirror up down\n"); //supports those send me one and I'll implement ;)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
706 return 0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
707 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
708
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
709 //find out the Pixelformat of the Primary Surface
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
710 static uint32_t Directx_CheckPrimaryPixelformat(void)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
711 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
712 uint32_t i=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
713 uint32_t formatcount = 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
714 DDPIXELFORMAT ddpf;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
715 DDSURFACEDESC2 ddsd;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
716 HDC hdc;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
717 HRESULT hres;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
718 COLORREF rgbT=RGB(0,0,0);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
719 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>checking primary surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
720 memset( &ddpf, 0, sizeof( DDPIXELFORMAT ));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
721 ddpf.dwSize = sizeof( DDPIXELFORMAT );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
722 //we have to create a primary surface first
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
723 if(Directx_CreatePrimarySurface()!=0)return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
724 if(g_lpddsPrimary->lpVtbl->GetPixelFormat( g_lpddsPrimary, &ddpf ) != DD_OK )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
725 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
726 mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>can't get pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
727 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
728 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
729 while ( i < NUM_FORMATS )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
730 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
731 if (g_ddpf[i].g_ddpfOverlay.dwRGBBitCount == ddpf.dwRGBBitCount)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
732 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
733 if (g_ddpf[i].g_ddpfOverlay.dwRBitMask == ddpf.dwRBitMask)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
734 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
735 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT PRIMARY>%i %s supported\n",i,g_ddpf[i].img_format_name);
7713
32878695ca8b more correct flags
faust3
parents: 7682
diff changeset
736 g_ddpf[i].drv_caps = VFCAP_CSP_SUPPORTED |VFCAP_OSD;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
737 formatcount++;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
738 primary_image_format=g_ddpf[i].img_format;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
739 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
740 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
741 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
742 }
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
743 //get the colorkey for overlay mode
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
744 destcolorkey = CLR_INVALID;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
745 if (windowcolor != CLR_INVALID && g_lpddsPrimary->lpVtbl->GetDC(g_lpddsPrimary,&hdc) == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
746 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
747 rgbT = GetPixel(hdc, 0, 0);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
748 SetPixel(hdc, 0, 0, windowcolor);
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
749 g_lpddsPrimary->lpVtbl->ReleaseDC(g_lpddsPrimary,hdc);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
750 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
751 // read back the converted color
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
752 ddsd.dwSize = sizeof(ddsd);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
753 while ((hres = g_lpddsPrimary->lpVtbl->Lock(g_lpddsPrimary,NULL, &ddsd, 0, NULL)) == DDERR_WASSTILLDRAWING)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
754 ;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
755 if (hres == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
756 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
757 destcolorkey = *(DWORD *) ddsd.lpSurface;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
758 if (ddsd.ddpfPixelFormat.dwRGBBitCount < 32)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
759 destcolorkey &= (1 << ddsd.ddpfPixelFormat.dwRGBBitCount) - 1;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
760 g_lpddsPrimary->lpVtbl->Unlock(g_lpddsPrimary,NULL);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
761 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
762 if (windowcolor != CLR_INVALID && g_lpddsPrimary->lpVtbl->GetDC(g_lpddsPrimary,&hdc) == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
763 {
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
764 SetPixel(hdc, 0, 0, rgbT);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
765 g_lpddsPrimary->lpVtbl->ReleaseDC(g_lpddsPrimary,hdc);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
766 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
767 //release primary
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
768 g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
769 g_lpddsPrimary = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
770 if(formatcount==0)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
771 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
772 mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>Unknown Pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
773 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
774 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
775 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
776 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
777
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
778 static int preinit(const char *arg)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
779 {
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
780 if(arg)
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
781 {
9488
abe81caa8cc1 fix fullscreenswitching patch by Joey Parrish <joey at nicewarrior.org>
faust3
parents: 9380
diff changeset
782 if(strstr(arg,"noaccel"))
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
783 {
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
784 mp_msg(MSGT_VO,MSGL_V,"<vo_directx><INFO>disabled overlay\n");
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
785 nooverlay = 1;
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
786 }
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
787 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
788
14205
87148f636da2 added colorkey support for vo_directx.
joey
parents: 13787
diff changeset
789 windowcolor = vo_colorkey;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
790 colorbrush = CreateSolidBrush(windowcolor);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
791 blackbrush = (HBRUSH)GetStockObject(BLACK_BRUSH);
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
792 if (!vo_w32_init())
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
793 return 1;
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
794 if (!vo_w32_config(100, 100, VOFLAG_HIDDEN))
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
795 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
796
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
797 if (Directx_InitDirectDraw()!= 0)return 1; //init DirectDraw
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
798
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
799 if (Directx_CheckPrimaryPixelformat()!=0)return 1;
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
800 if (!nooverlay && Directx_CheckOverlayPixelformats() == 0) //check for supported hardware
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
801 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
802 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>hardware supports overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
803 nooverlay = 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
804 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
805 else //if we can't have overlay we create a backpuffer with the same imageformat as the primary surface
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
806 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
807 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>using backpuffer\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
808 nooverlay = 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
809 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
810 mp_msg(MSGT_VO, MSGL_DBG3 ,"<vo_directx><INFO>preinit succesfully finished\n");
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
811 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
812 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
813
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
814 static int draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y )
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
815 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
816 uint8_t *s;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
817 uint8_t *d;
24840
ccec024aeb92 Remove unused variables.
zuxy
parents: 24835
diff changeset
818 uint32_t uvstride=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
819 // copy Y
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
820 d=image+dstride*y+x;
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
821 s=src[0];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
822 mem2agpcpy_pic(d,s,w,h,dstride,stride[0]);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
823
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
824 w/=2;h/=2;x/=2;y/=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
825
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
826 // copy U
8490
ac40496c7d9e 1000l! I have no idea how this code worked at all before. I guess no
rfelker
parents: 8148
diff changeset
827 d=image+dstride*image_height + uvstride*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
828 if(image_format == IMGFMT_YV12)s=src[2];
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
829 else s=src[1];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
830 mem2agpcpy_pic(d,s,w,h,uvstride,stride[1]);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
831
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
832 // copy V
8490
ac40496c7d9e 1000l! I have no idea how this code worked at all before. I guess no
rfelker
parents: 8148
diff changeset
833 d=image+dstride*image_height +uvstride*(image_height/2) + uvstride*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
834 if(image_format == IMGFMT_YV12)s=src[1];
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
835 else s=src[2];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
836 mem2agpcpy_pic(d,s,w,h,uvstride,stride[2]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
837 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
838 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
839
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
840 static void flip_page(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
841 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
842 HRESULT dxresult;
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
843 g_lpddsBack->lpVtbl->Unlock (g_lpddsBack,NULL);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
844 if (vo_doublebuffering)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
845 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
846 // flip to the next image in the sequence
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
847 dxresult = g_lpddsOverlay->lpVtbl->Flip( g_lpddsOverlay,NULL, DDFLIP_WAIT);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
848 if(dxresult == DDERR_SURFACELOST)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
849 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
850 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR><vo_directx><INFO>Restoring Surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
851 g_lpddsBack->lpVtbl->Restore( g_lpddsBack );
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
852 // restore overlay and primary before calling
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
853 // Directx_ManageDisplay() to avoid error messages
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
854 g_lpddsOverlay->lpVtbl->Restore( g_lpddsOverlay );
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
855 g_lpddsPrimary->lpVtbl->Restore( g_lpddsPrimary );
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
856 // update overlay in case we return from screensaver
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
857 Directx_ManageDisplay();
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
858 dxresult = g_lpddsOverlay->lpVtbl->Flip( g_lpddsOverlay,NULL, DDFLIP_WAIT);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
859 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
860 if(dxresult != DD_OK)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't flip page\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
861 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
862 if(nooverlay)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
863 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
864 DDBLTFX ddbltfx;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
865 // ask for the "NOTEARING" option
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
866 memset( &ddbltfx, 0, sizeof(DDBLTFX) );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
867 ddbltfx.dwSize = sizeof(DDBLTFX);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
868 ddbltfx.dwDDFX = DDBLTFX_NOTEARING;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
869 g_lpddsPrimary->lpVtbl->Blt(g_lpddsPrimary, &rd, g_lpddsBack, NULL, DDBLT_WAIT, &ddbltfx);
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
870 }
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
871 if (g_lpddsBack->lpVtbl->Lock(g_lpddsBack,NULL,&ddsdsf, DDLOCK_NOSYSLOCK | DDLOCK_WAIT , NULL) == DD_OK) {
24835
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
872 if(vo_directrendering && (dstride != ddsdsf.lPitch)){
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
873 mp_msg(MSGT_VO,MSGL_WARN,"<vo_directx><WARN>stride changed !!!! disabling direct rendering\n");
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
874 vo_directrendering=0;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
875 }
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 32481
diff changeset
876 free(tmp_image);
24835
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
877 tmp_image = NULL;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
878 dstride = ddsdsf.lPitch;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
879 image = ddsdsf.lpSurface;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
880 } else if (!tmp_image) {
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
881 mp_msg(MSGT_VO, MSGL_WARN, "<vo_directx><WARN>Locking the surface failed, rendering to a hidden surface!\n");
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
882 tmp_image = image = calloc(1, image_height * dstride * 2);
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
883 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
884 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
885
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
886 static int draw_frame(uint8_t *src[])
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
887 {
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 23077
diff changeset
888 fast_memcpy( image, *src, dstride * image_height );
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
889 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
890 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
891
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
892 static uint32_t get_image(mp_image_t *mpi)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
893 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
894 if(mpi->flags&MP_IMGFLAG_READABLE) {mp_msg(MSGT_VO, MSGL_V,"<vo_directx><ERROR>slow video ram\n");return VO_FALSE;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
895 if(mpi->type==MP_IMGTYPE_STATIC) {mp_msg(MSGT_VO, MSGL_V,"<vo_directx><ERROR>not static\n");return VO_FALSE;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
896 if((mpi->width==dstride) || (mpi->flags&(MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_ACCEPT_WIDTH)))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
897 {
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
898 if(mpi->flags&MP_IMGFLAG_PLANAR)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
899 {
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
900 if(image_format == IMGFMT_YV12)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
901 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
902 mpi->planes[2]= image + dstride*image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
903 mpi->planes[1]= image + dstride*image_height+ dstride*image_height/4;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
904 mpi->stride[1]=mpi->stride[2]=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
905 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
906 else if(image_format == IMGFMT_IYUV || image_format == IMGFMT_I420)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
907 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
908 mpi->planes[1]= image + dstride*image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
909 mpi->planes[2]= image + dstride*image_height+ dstride*image_height/4;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
910 mpi->stride[1]=mpi->stride[2]=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
911 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
912 else if(image_format == IMGFMT_YVU9)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
913 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
914 mpi->planes[2] = image + dstride*image_height;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
915 mpi->planes[1] = image + dstride*image_height+ dstride*image_height/16;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
916 mpi->stride[1]=mpi->stride[2]=dstride/4;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
917 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
918 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
919 mpi->planes[0]=image;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
920 mpi->stride[0]=dstride;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
921 mpi->width=image_width;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
922 mpi->height=image_height;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
923 mpi->flags|=MP_IMGFLAG_DIRECT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
924 mp_msg(MSGT_VO, MSGL_DBG3, "<vo_directx><INFO>Direct Rendering ENABLED\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
925 return VO_TRUE;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
926 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
927 return VO_FALSE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
928 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
929
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
930 static uint32_t put_image(mp_image_t *mpi){
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
931
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
932 uint8_t *d;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
933 uint8_t *s;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
934 uint32_t x = mpi->x;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
935 uint32_t y = mpi->y;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
936 uint32_t w = mpi->w;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
937 uint32_t h = mpi->h;
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
938
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
939 if((mpi->flags&MP_IMGFLAG_DIRECT)||(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK))
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
940 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
941 mp_msg(MSGT_VO, MSGL_DBG3 ,"<vo_directx><INFO>put_image: nothing to do: drawslices\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
942 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
943 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
944
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
945 if (mpi->flags&MP_IMGFLAG_PLANAR)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
946 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
947
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
948 if(image_format!=IMGFMT_YVU9)draw_slice(mpi->planes,mpi->stride,mpi->w,mpi->h,0,0);
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
949 else
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
950 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
951 // copy Y
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
952 d=image+dstride*y+x;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
953 s=mpi->planes[0];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
954 mem2agpcpy_pic(d,s,w,h,dstride,mpi->stride[0]);
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
955 w/=4;h/=4;x/=4;y/=4;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
956 // copy V
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
957 d=image+dstride*image_height + dstride*y/4+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
958 s=mpi->planes[2];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
959 mem2agpcpy_pic(d,s,w,h,dstride/4,mpi->stride[1]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
960 // copy U
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
961 d=image+dstride*image_height + dstride*image_height/16 + dstride/4*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
962 s=mpi->planes[1];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
963 mem2agpcpy_pic(d,s,w,h,dstride/4,mpi->stride[2]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
964 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
965 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
966 else //packed
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
967 {
27738
c89a913b5d5e Honour differences between src and dst stride for packed yuv
faust3
parents: 27343
diff changeset
968 mem2agpcpy_pic(image, mpi->planes[0], w * (mpi->bpp / 8), h, dstride, mpi->stride[0]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
969 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
970 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
971 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
972
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
973 static int
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
974 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t options, char *title, uint32_t format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
975 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
976 image_format = format;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
977 image_width = width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
978 image_height = height;
13438
faust3
parents: 13157
diff changeset
979 if(format != primary_image_format)nooverlay = 0;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
980
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
981 /*release all directx objects*/
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
982 if (g_cc != NULL)g_cc->lpVtbl->Release(g_cc);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
983 g_cc=NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
984 if(g_lpddclipper)g_lpddclipper->lpVtbl->Release(g_lpddclipper);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
985 g_lpddclipper=NULL;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
986 if (g_lpddsBack != NULL) g_lpddsBack->lpVtbl->Release(g_lpddsBack);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
987 g_lpddsBack = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
988 if(vo_doublebuffering)
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
989 if (g_lpddsOverlay != NULL)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
990 g_lpddsOverlay = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
991 if (g_lpddsPrimary != NULL) g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
992 g_lpddsPrimary = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
993 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>overlay surfaces released\n");
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
994
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
995 if (!vo_w32_config(d_width, d_height, options))
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
996 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
997
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
998 if (WinID == -1)
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
999 SetWindowText(vo_w32_window,title);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1000
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1001
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1002 /*create the surfaces*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1003 if(Directx_CreatePrimarySurface())return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1004
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1005 //create palette for 256 color mode
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1006 if(image_format==IMGFMT_BGR8){
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1007 LPDIRECTDRAWPALETTE ddpalette=NULL;
33593
835841f89315 Use the proper type for the palette, fixes compiler warning.
reimar
parents: 33592
diff changeset
1008 LPPALETTEENTRY palette=calloc(256, sizeof(*palette));
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1009 int i;
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1010 for(i=0; i<256; i++){
33593
835841f89315 Use the proper type for the palette, fixes compiler warning.
reimar
parents: 33592
diff changeset
1011 palette[i].peRed = ((i >> 5) & 0x07) * 255 / 7;
835841f89315 Use the proper type for the palette, fixes compiler warning.
reimar
parents: 33592
diff changeset
1012 palette[i].peGreen = ((i >> 2) & 0x07) * 255 / 7;
835841f89315 Use the proper type for the palette, fixes compiler warning.
reimar
parents: 33592
diff changeset
1013 palette[i].peBlue = ((i >> 0) & 0x03) * 255 / 3;
835841f89315 Use the proper type for the palette, fixes compiler warning.
reimar
parents: 33592
diff changeset
1014 palette[i].peFlags = PC_NOCOLLAPSE;
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1015 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1016 g_lpdd->lpVtbl->CreatePalette(g_lpdd,DDPCAPS_8BIT|DDPCAPS_INITIALIZE,palette,&ddpalette,NULL);
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1017 g_lpddsPrimary->lpVtbl->SetPalette(g_lpddsPrimary,ddpalette);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1018 free(palette);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1019 ddpalette->lpVtbl->Release(ddpalette);
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1020 }
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1021
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1022 if (!nooverlay && Directx_CreateOverlay(image_format))
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1023 {
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1024 if(format == primary_image_format)nooverlay=1; /*overlay creation failed*/
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1025 else {
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1026 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't use overlay mode: please use -vo directx:noaccel\n");
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1027 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1028 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1029 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1030 if(nooverlay)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1031 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1032 if(Directx_CreateBackpuffer())
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1033 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1034 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't get the driver to work on your system :(\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1035 return 1;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1036 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1037 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>back surface created\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1038 vo_doublebuffering = 0;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1039 /*create clipper for nonoverlay mode*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1040 if(g_lpdd->lpVtbl->CreateClipper(g_lpdd, 0, &g_lpddclipper,NULL)!= DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't create clipper\n");return 1;}
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1041 if(g_lpddclipper->lpVtbl->SetHWnd (g_lpddclipper, 0, vo_w32_window)!= DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't associate clipper with window\n");return 1;}
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1042 if(g_lpddsPrimary->lpVtbl->SetClipper (g_lpddsPrimary,g_lpddclipper)!=DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't associate primary surface with clipper\n");return 1;}
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1043 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>clipper succesfully created\n");
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1044 }else{
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1045 if(DD_OK != g_lpddsOverlay->lpVtbl->QueryInterface(g_lpddsOverlay,&IID_IDirectDrawColorControl,(void**)&g_cc))
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1046 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><WARN>unable to get DirectDraw ColorControl interface\n");
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1047 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1048 Directx_ManageDisplay();
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1049 memset(&ddsdsf, 0,sizeof(DDSURFACEDESC2));
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1050 ddsdsf.dwSize = sizeof (DDSURFACEDESC2);
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1051 if (g_lpddsBack->lpVtbl->Lock(g_lpddsBack,NULL,&ddsdsf, DDLOCK_NOSYSLOCK | DDLOCK_WAIT, NULL) == DD_OK) {
24835
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1052 dstride = ddsdsf.lPitch;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1053 image = ddsdsf.lpSurface;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1054 return 0;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1055 }
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1056 mp_msg(MSGT_VO, MSGL_V, "<vo_directx><ERROR>Initial Lock on the Surface failed.\n");
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1057 return 1;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1058 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1059
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1060 //function to set color controls
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1061 // brightness [0, 10000]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1062 // contrast [0, 20000]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1063 // hue [-180, 180]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1064 // saturation [0, 20000]
33592
0d3ac97aed92 Add const to avoid compiler warning.
reimar
parents: 33591
diff changeset
1065 static uint32_t color_ctrl_set(const char *what, int value)
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1066 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1067 uint32_t r = VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1068 DDCOLORCONTROL dcc;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1069 //printf("\n*** %s = %d\n", what, value);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1070 if (!g_cc) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1071 //printf("\n *** could not get color control interface!!!\n");
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1072 return VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1073 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1074 ZeroMemory(&dcc, sizeof(dcc));
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1075 dcc.dwSize = sizeof(dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1076
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1077 if (!strcmp(what, "brightness")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1078 dcc.dwFlags = DDCOLOR_BRIGHTNESS;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1079 dcc.lBrightness = (value + 100) * 10000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1080 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1081 } else if (!strcmp(what, "contrast")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1082 dcc.dwFlags = DDCOLOR_CONTRAST;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1083 dcc.lContrast = (value + 100) * 20000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1084 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1085 } else if (!strcmp(what, "hue")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1086 dcc.dwFlags = DDCOLOR_HUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1087 dcc.lHue = value * 180 / 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1088 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1089 } else if (!strcmp(what, "saturation")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1090 dcc.dwFlags = DDCOLOR_SATURATION;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1091 dcc.lSaturation = (value + 100) * 20000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1092 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1093 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1094
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1095 if (r == VO_TRUE) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1096 g_cc->lpVtbl->SetColorControls(g_cc, &dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1097 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1098 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1099 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1100
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1101 //analoguous to color_ctrl_set
33592
0d3ac97aed92 Add const to avoid compiler warning.
reimar
parents: 33591
diff changeset
1102 static uint32_t color_ctrl_get(const char *what, int *value)
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1103 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1104 uint32_t r = VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1105 DDCOLORCONTROL dcc;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1106 if (!g_cc) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1107 //printf("\n *** could not get color control interface!!!\n");
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1108 return VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1109 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1110 ZeroMemory(&dcc, sizeof(dcc));
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1111 dcc.dwSize = sizeof(dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1112
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1113 if (g_cc->lpVtbl->GetColorControls(g_cc, &dcc) != DD_OK) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1114 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1115 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1116
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1117 if (!strcmp(what, "brightness") && (dcc.dwFlags & DDCOLOR_BRIGHTNESS)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1118 *value = dcc.lBrightness * 200 / 10000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1119 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1120 } else if (!strcmp(what, "contrast") && (dcc.dwFlags & DDCOLOR_CONTRAST)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1121 *value = dcc.lContrast * 200 / 20000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1122 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1123 } else if (!strcmp(what, "hue") && (dcc.dwFlags & DDCOLOR_HUE)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1124 *value = dcc.lHue * 100 / 180;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1125 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1126 } else if (!strcmp(what, "saturation") && (dcc.dwFlags & DDCOLOR_SATURATION)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1127 *value = dcc.lSaturation * 200 / 20000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1128 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1129 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1130 // printf("\n*** %s = %d\n", what, *value);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1131
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1132 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1133 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1134
33305
ddb45e9443ec Remove the variable arguments from the libvo control() functions.
iive
parents: 33301
diff changeset
1135 static int control(uint32_t request, void *data)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1136 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1137 switch (request) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1138
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1139 case VOCTRL_GET_IMAGE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1140 return get_image(data);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1141 case VOCTRL_QUERY_FORMAT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1142 return query_format(*((uint32_t*)data));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1143 case VOCTRL_DRAW_IMAGE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1144 return put_image(data);
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1145 case VOCTRL_BORDER:
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1146 vo_w32_border();
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1147 Directx_ManageDisplay();
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1148 return VO_TRUE;
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1149 case VOCTRL_ONTOP:
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1150 vo_w32_ontop();
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1151 return VO_TRUE;
13091
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1152 case VOCTRL_ROOTWIN:
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1153 if(WinID != -1) return VO_TRUE;
13091
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1154 if(vidmode)
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1155 {
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1156 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>rootwin has no meaning in exclusive mode\n");
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1157 }
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1158 else
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1159 {
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1160 if(vo_rootwin) vo_rootwin = 0;
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1161 else vo_rootwin = 1;
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1162 Directx_ManageDisplay();
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1163 }
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1164 return VO_TRUE;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1165 case VOCTRL_FULLSCREEN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1166 {
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1167 vo_w32_fullscreen();
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1168 Directx_ManageDisplay();
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1169 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1170 }
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1171 case VOCTRL_SET_EQUALIZER: {
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32537
diff changeset
1172 vf_equalizer_t *eq=data;
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32537
diff changeset
1173 return color_ctrl_set(eq->item, eq->value);
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1174 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1175 case VOCTRL_GET_EQUALIZER: {
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32537
diff changeset
1176 vf_equalizer_t *eq=data;
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32537
diff changeset
1177 return color_ctrl_get(eq->item, &eq->value);
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1178 }
22459
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1179 case VOCTRL_UPDATE_SCREENINFO:
33569
8e70a224c411 Change vo_directx to use w32_common.c
reimar
parents: 33305
diff changeset
1180 w32_update_xinerama_info();
22459
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1181 return VO_TRUE;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1182 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1183 return VO_NOTIMPL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1184 }