annotate libvo/vo_quartz.c @ 26816:e77942d2d664

Use av_alloc_put_byte instead of custom protocol. This needs less code and less hacks.
author reimar
date Wed, 21 May 2008 18:21:05 +0000
parents 46f0b4d34fa1
children 14c5017f40d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1 /*
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
2 vo_quartz.c
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
3
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
4 by Nicolas Plourde <nicolasplourde@gmail.com>
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
5
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
6 Copyright (c) Nicolas Plourde - April 2004
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
7
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
8 YUV support Copyright (C) 2004 Romain Dolbeau <romain@dolbeau.org>
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
9
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
10 MPlayer Mac OSX Quartz video out module.
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
11
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
12 todo: -screen overlay output
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
13 -fit osd in black bar when available
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
14 -fix RGB32
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
15 -(add sugestion here)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
16 */
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
17
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
18 //SYS
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
19 #include <stdio.h>
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
20
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
21 //OSX
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
22 #include <Carbon/Carbon.h>
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
23 #include <QuickTime/QuickTime.h>
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
24
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
25 //MPLAYER
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
26 #include "config.h"
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
27 #include "fastmemcpy.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
28 #include "video_out.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
29 #include "video_out_internal.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
30 #include "aspect.h"
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
31 #include "mp_msg.h"
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
32 #include "m_option.h"
22823
98eaf29b5dee Code cleanup: don't include a .c file in mplayer.c and fix a few
rathann
parents: 21396
diff changeset
33 #include "mp_fifo.h"
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
34 #include "mpbswap.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
35
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
36 #include "input/input.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
37 #include "input/mouse.h"
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
38
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
39 #include "vo_quartz.h"
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
40
25216
3aee342be929 Make vo info structs const
reimar
parents: 24958
diff changeset
41 static const vo_info_t info =
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
42 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
43 "Mac OSX (Quartz)",
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
44 "quartz",
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
45 "Nicolas Plourde <nicolasplourde@hotmail.com>, Romain Dolbeau <romain@dolbeau.org>",
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
46 ""
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
47 };
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
48
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
49 const LIBVO_EXTERN(quartz)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
50
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
51 static uint32_t image_depth;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
52 static uint32_t image_format;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
53 static uint32_t image_size;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
54 static uint32_t image_buffer_size;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
55 static char *image_data;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
56
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
57 static ImageSequence seqId;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
58 static CodecType image_qtcodec;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
59 static PlanarPixmapInfoYUV420 *P = NULL;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
60 static struct
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
61 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
62 ImageDescriptionHandle desc;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
63 Handle extension_colr;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
64 Handle extension_fiel;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
65 Handle extension_clap;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
66 Handle extension_pasp;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
67 } yuv_qt_stuff;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
68 static MatrixRecord matrix;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
69 static int EnterMoviesDone = 0;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
70 static int get_image_done = 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
71
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
72 static int vo_quartz_fs; // we are in fullscreen
13791
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
73 extern float monitor_aspect;
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
74 extern float movie_aspect;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
75 static float old_movie_aspect;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
76
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
77 static int winLevel = 1;
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
78 int levelList[] =
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
79 {
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
80 kCGDesktopWindowLevelKey,
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
81 kCGNormalWindowLevelKey,
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
82 kCGScreenSaverWindowLevelKey
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
83 };
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
84
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
85 static int int_pause = 0;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
86 static float winAlpha = 1;
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
87 static int mouseHide = FALSE;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
88
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
89 static int device_width;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
90 static int device_height;
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
91 static int device_id;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
92
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
93 static short fs_res_x=0;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
94 static short fs_res_y=0;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
95
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
96 static WindowRef theWindow = NULL;
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
97 static WindowGroupRef winGroup = NULL;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
98 static CGContextRef context;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
99 static CGRect bounds;
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
100 static GDHandle deviceHdl;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
101
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
102 static CGDataProviderRef dataProviderRef;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
103 static CGImageRef image;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
104
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
105 static Rect imgRect; // size of the original image (unscaled)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
106 static Rect dstRect; // size of the displayed image (after scaling)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
107 static Rect winRect; // size of the window containg the displayed image (include padding)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
108 static Rect oldWinRect; // size of the window containg the displayed image (include padding) when NOT in FS mode
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
109 static Rect deviceRect; // size of the display device
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
110 static Rect oldWinBounds;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
111
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
112 static MenuRef windMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
113 static MenuRef movMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
114 static MenuRef aspectMenu;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
115
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
116 enum
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
117 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
118 kQuitCmd = 1,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
119 kHalfScreenCmd = 2,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
120 kNormalScreenCmd = 3,
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
121 kDoubleScreenCmd = 4,
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
122 kFullScreenCmd = 5,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
123 kKeepAspectCmd = 6,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
124 kAspectOrgCmd = 7,
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
125 kAspectFullCmd = 8,
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
126 kAspectWideCmd = 9,
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
127 kPanScanCmd = 10
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
128 };
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
129
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13779
diff changeset
130 #include "osdep/keycodes.h"
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
131
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
132 extern void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride));
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
133
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
134 //PROTOTYPE/////////////////////////////////////////////////////////////////
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
135 static OSStatus KeyEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
136 static OSStatus MouseEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
137 static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
138 void window_resized();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
139 void window_ontop();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
140 void window_fullscreen();
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
141 void window_panscan();
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
142
12886
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
143 static inline int convert_key(UInt32 key, UInt32 charcode)
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
144 {
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
145 switch(key)
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
146 {
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
147 case QZ_IBOOK_ENTER:
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
148 case QZ_RETURN: return KEY_ENTER;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
149 case QZ_ESCAPE: return KEY_ESC;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
150 case QZ_BACKSPACE: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
151 case QZ_LALT: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
152 case QZ_LCTRL: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
153 case QZ_LSHIFT: return KEY_BACKSPACE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
154 case QZ_F1: return KEY_F+1;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
155 case QZ_F2: return KEY_F+2;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
156 case QZ_F3: return KEY_F+3;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
157 case QZ_F4: return KEY_F+4;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
158 case QZ_F5: return KEY_F+5;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
159 case QZ_F6: return KEY_F+6;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
160 case QZ_F7: return KEY_F+7;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
161 case QZ_F8: return KEY_F+8;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
162 case QZ_F9: return KEY_F+9;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
163 case QZ_F10: return KEY_F+10;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
164 case QZ_F11: return KEY_F+11;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
165 case QZ_F12: return KEY_F+12;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
166 case QZ_INSERT: return KEY_INSERT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
167 case QZ_DELETE: return KEY_DELETE;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
168 case QZ_HOME: return KEY_HOME;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
169 case QZ_END: return KEY_END;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
170 case QZ_KP_PLUS: return '+';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
171 case QZ_KP_MINUS: return '-';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
172 case QZ_TAB: return KEY_TAB;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
173 case QZ_PAGEUP: return KEY_PAGE_UP;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
174 case QZ_PAGEDOWN: return KEY_PAGE_DOWN;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
175 case QZ_UP: return KEY_UP;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
176 case QZ_DOWN: return KEY_DOWN;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
177 case QZ_LEFT: return KEY_LEFT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
178 case QZ_RIGHT: return KEY_RIGHT;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
179 case QZ_KP_MULTIPLY: return '*';
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
180 case QZ_KP_DIVIDE: return '/';
24955
28024b2c5f15 Fix KPENTER keycode value.
ulion
parents: 24954
diff changeset
181 case QZ_KP_ENTER: return KEY_KPENTER;
12886
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
182 case QZ_KP_PERIOD: return KEY_KPDEC;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
183 case QZ_KP0: return KEY_KP0;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
184 case QZ_KP1: return KEY_KP1;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
185 case QZ_KP2: return KEY_KP2;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
186 case QZ_KP3: return KEY_KP3;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
187 case QZ_KP4: return KEY_KP4;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
188 case QZ_KP5: return KEY_KP5;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
189 case QZ_KP6: return KEY_KP6;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
190 case QZ_KP7: return KEY_KP7;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
191 case QZ_KP8: return KEY_KP8;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
192 case QZ_KP9: return KEY_KP9;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
193 default: return charcode;
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
194 }
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
195 }
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
196
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
197 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
198 {
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
199 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
200 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
201 case IMGFMT_RGB32:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
202 vo_draw_alpha_rgb32(w,h,src,srca,stride,image_data+4*(y0*imgRect.right+x0),4*imgRect.right);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
203 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
204 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
205 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
206 case IMGFMT_I420:
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
207 vo_draw_alpha_yv12(w,h,src,srca,stride, ((char*)P) + be2me_32(P->componentInfoY.offset) + x0 + y0 * imgRect.right, imgRect.right);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
208 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
209 case IMGFMT_UYVY:
12517
4c42b1fb183f uyvy osd support
nplourde
parents: 12487
diff changeset
210 vo_draw_alpha_uyvy(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
211 break;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
212 case IMGFMT_YUY2:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
213 vo_draw_alpha_yuy2(w,h,src,srca,stride,((char*)P) + (x0 + y0 * imgRect.right) * 2,imgRect.right*2);
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
214 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
215 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
216 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
217
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
218 //default keyboard event handler
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
219 static OSStatus KeyEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
220 {
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
221 OSStatus result = noErr;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
222 UInt32 class = GetEventClass (event);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
223 UInt32 kind = GetEventKind (event);
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
224
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
225 result = CallNextEventHandler(nextHandler, event);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
226
13712
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
227 if(class == kEventClassKeyboard)
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
228 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
229 char macCharCodes;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
230 UInt32 macKeyCode;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
231 UInt32 macKeyModifiers;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
232
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
233 GetEventParameter(event, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(macCharCodes), NULL, &macCharCodes);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
234 GetEventParameter(event, kEventParamKeyCode, typeUInt32, NULL, sizeof(macKeyCode), NULL, &macKeyCode);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
235 GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(macKeyModifiers), NULL, &macKeyModifiers);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
236
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
237 if(macKeyModifiers != 256)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
238 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
239 if (kind == kEventRawKeyRepeat || kind == kEventRawKeyDown)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
240 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
241 int key = convert_key(macKeyCode, macCharCodes);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
242 if(key != -1)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
243 mplayer_put_key(key);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
244 }
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
245 }
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
246 else if(macKeyModifiers == 256)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
247 {
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
248 switch(macCharCodes)
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
249 {
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
250 case '[': SetWindowAlpha(theWindow, winAlpha-=0.05); break;
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
251 case ']': SetWindowAlpha(theWindow, winAlpha+=0.05); break;
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
252 }
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
253 }
12886
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
254 else
9b95958f4eb0 listen for key repeats, patch by Dan Christiansen
nplourde
parents: 12830
diff changeset
255 result = eventNotHandledErr;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
256 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
257
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
258 return result;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
259 }
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
260
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
261 //default mouse event handler
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
262 static OSStatus MouseEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
263 {
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
264 OSStatus result = noErr;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
265 UInt32 class = GetEventClass (event);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
266 UInt32 kind = GetEventKind (event);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
267
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
268 result = CallNextEventHandler(nextHandler, event);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
269
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
270 if(class == kEventClassMouse)
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
271 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
272 WindowPtr tmpWin;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
273 Point mousePos;
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
274 Point winMousePos;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
275
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
276 GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, 0, sizeof(Point), 0, &mousePos);
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
277 GetEventParameter(event, kEventParamWindowMouseLocation, typeQDPoint, 0, sizeof(Point), 0, &winMousePos);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
278
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
279 switch (kind)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
280 {
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
281 case kEventMouseMoved:
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
282 {
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
283 if(vo_quartz_fs)
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
284 {
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
285 CGDisplayShowCursor(kCGDirectMainDisplay);
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
286 mouseHide = FALSE;
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
287 }
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
288 }
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
289 break;
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
290
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
291 case kEventMouseWheelMoved:
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
292 {
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
293 int wheel;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
294 short part;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
295
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
296 GetEventParameter(event, kEventParamMouseWheelDelta, typeSInt32, 0, sizeof(int), 0, &wheel);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
297
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
298 part = FindWindow(mousePos,&tmpWin);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
299
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
300 if(part == inContent)
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
301 {
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
302 if(wheel > 0)
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
303 mplayer_put_key(MOUSE_BTN3);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
304 else
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
305 mplayer_put_key(MOUSE_BTN4);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
306 }
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
307 }
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
308 break;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
309
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
310 case kEventMouseDown:
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
311 case kEventMouseUp:
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
312 {
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
313 EventMouseButton button;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
314 short part;
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
315 Rect bounds;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
316
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
317 GetWindowPortBounds(theWindow, &bounds);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
318 GetEventParameter(event, kEventParamMouseButton, typeMouseButton, 0, sizeof(EventMouseButton), 0, &button);
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
319
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
320 part = FindWindow(mousePos,&tmpWin);
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
321 if(kind == kEventMouseUp)
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
322 {
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
323 if (part != inContent)
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
324 break;
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
325 switch(button)
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
326 {
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
327 case kEventMouseButtonPrimary:
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
328 mplayer_put_key(MOUSE_BTN0);
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
329 break;
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
330 case kEventMouseButtonSecondary:
25422
31bc1206890c Fix mouse button mapping:
ulion
parents: 25220
diff changeset
331 mplayer_put_key(MOUSE_BTN2);
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
332 break;
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
333 case kEventMouseButtonTertiary:
25422
31bc1206890c Fix mouse button mapping:
ulion
parents: 25220
diff changeset
334 mplayer_put_key(MOUSE_BTN1);
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
335 break;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
336
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
337 default:result = eventNotHandledErr;break;
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
338 }
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
339 break;
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
340 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
341 if( (winMousePos.h > (bounds.right - 15)) && (winMousePos.v > (bounds.bottom)) )
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
342 {
15723
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
343 if(!vo_quartz_fs)
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
344 {
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
345 GrowWindow(theWindow, mousePos, NULL);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
346 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
347 }
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
348 else if(part == inMenuBar)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
349 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
350 MenuSelect(mousePos);
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
351 HiliteMenu(0);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
352 }
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
353 else if(part == inContent)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
354 {
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
355 switch(button)
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
356 {
24956
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
357 case kEventMouseButtonPrimary:
24958
d86224fac2b5 Handle mouse up event to get double click support from mp_fifo.
ulion
parents: 24956
diff changeset
358 mplayer_put_key(MOUSE_BTN0 | MP_KEY_DOWN);
24956
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
359 break;
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
360 case kEventMouseButtonSecondary:
25422
31bc1206890c Fix mouse button mapping:
ulion
parents: 25220
diff changeset
361 mplayer_put_key(MOUSE_BTN2 | MP_KEY_DOWN);
24956
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
362 break;
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
363 case kEventMouseButtonTertiary:
25422
31bc1206890c Fix mouse button mapping:
ulion
parents: 25220
diff changeset
364 mplayer_put_key(MOUSE_BTN1 | MP_KEY_DOWN);
24956
729f5c704763 Fix mouse right button and middle button incorrect identifications.
ulion
parents: 24955
diff changeset
365 break;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
366
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
367 default:result = eventNotHandledErr;break;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
368 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
369 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
370 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
371 break;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
372
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
373 case kEventMouseDragged:
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
374 break;
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
375
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
376 default:result = eventNotHandledErr;break;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
377 }
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
378 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
379
12624
730fc470a30c added more key to keyboard event
nplourde
parents: 12623
diff changeset
380 return result;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
381 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
382
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
383 //default window event handler
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
384 static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
385 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
386 OSStatus result = noErr;
13722
1bd6bd13193d fixed typo
nplourde
parents: 13719
diff changeset
387 uint32_t d_width;
1bd6bd13193d fixed typo
nplourde
parents: 13719
diff changeset
388 uint32_t d_height;
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
389 UInt32 class = GetEventClass (event);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
390 UInt32 kind = GetEventKind (event);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
391
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
392 result = CallNextEventHandler(nextHandler, event);
13712
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
393
f6ef5a0ad7e4 removed duplicate case and fixed aspect ratio for window zoom feature
nplourde
parents: 13707
diff changeset
394 aspect(&d_width,&d_height,A_NOZOOM);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
395
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
396 if(class == kEventClassCommand)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
397 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
398 HICommand theHICommand;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
399 GetEventParameter( event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand );
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
400
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
401 switch ( theHICommand.commandID )
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
402 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
403 case kHICommandQuit:
16892
3470c810527b libvo input cleanup: remove the dependency on libinput,
albeu
parents: 16280
diff changeset
404 mplayer_put_key(KEY_CLOSE_WIN);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
405 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
406
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
407 case kHalfScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
408 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
409 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
410 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
411 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
412
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
413 SizeWindow(theWindow, (d_width/2), ((d_width/movie_aspect)/2), 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
414 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
415 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
416
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
417 case kNormalScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
418 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
419 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
420 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
421 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
422
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
423 SizeWindow(theWindow, d_width, (d_width/movie_aspect), 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
424 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
425 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
426
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
427 case kDoubleScreenCmd:
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
428 if(vo_quartz_fs)
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
429 {
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
430 vo_fs = (!(vo_fs)); window_fullscreen();
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
431 }
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
432
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
433 SizeWindow(theWindow, (d_width*2), ((d_width/movie_aspect)*2), 1);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
434 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
435 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
436
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
437 case kFullScreenCmd:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
438 vo_fs = (!(vo_fs)); window_fullscreen();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
439 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
440
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
441 case kKeepAspectCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
442 vo_keepaspect = (!(vo_keepaspect));
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
443 CheckMenuItem (aspectMenu, 1, vo_keepaspect);
15909
b1bc923b38fe resize video after keep aspect menu item toggle
nplourde
parents: 15902
diff changeset
444 window_resized();
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
445 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
446
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
447 case kAspectOrgCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
448 movie_aspect = old_movie_aspect;
15902
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
449 if(!vo_quartz_fs)
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
450 {
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
451 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect),1);
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
452 }
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
453 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
454 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
455
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
456 case kAspectFullCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
457 movie_aspect = 4.0f/3.0f;
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
458 if(!vo_quartz_fs)
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
459 {
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
460 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect),1);
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
461 }
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
462 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
463 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
464
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
465 case kAspectWideCmd:
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
466 movie_aspect = 16.0f/9.0f;
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
467 if(!vo_quartz_fs)
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
468 {
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
469 SizeWindow(theWindow, dstRect.right, (dstRect.right/movie_aspect),1);
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
470 }
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
471 window_resized();
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
472 break;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
473
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
474 case kPanScanCmd:
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
475 vo_panscan = (!(vo_panscan));
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
476 CheckMenuItem (aspectMenu, 2, vo_panscan);
15902
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
477 window_panscan();
16534910f0fb fix various window resizing bug with menu option
nplourde
parents: 15892
diff changeset
478 window_resized();
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
479 break;
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
480
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
481 default:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
482 result = eventNotHandledErr;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
483 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
484 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
485 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
486 else if(class == kEventClassWindow)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
487 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
488 WindowRef window;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
489 Rect rectPort = {0,0,0,0};
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
490
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
491 GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
492
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
493 if(window)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
494 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
495 GetPortBounds(GetWindowPort(window), &rectPort);
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
496 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
497
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
498 switch (kind)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
499 {
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
500 case kEventWindowClosed:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
501 theWindow = NULL;
16892
3470c810527b libvo input cleanup: remove the dependency on libinput,
albeu
parents: 16280
diff changeset
502 mplayer_put_key(KEY_CLOSE_WIN);
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
503 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
504
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
505 //resize window
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
506 case kEventWindowZoomed:
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
507 case kEventWindowBoundsChanged:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
508 window_resized();
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
509 flip_page();
15885
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
510 window_resized();
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
511 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
512
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
513 default:
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
514 result = eventNotHandledErr;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
515 break;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
516 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
517 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
518
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
519 return result;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
520 }
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
521
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
522 static void quartz_CreateWindow(uint32_t d_width, uint32_t d_height, WindowAttributes windowAttrs)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
523 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
524 CFStringRef titleKey;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
525 CFStringRef windowTitle;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
526 OSStatus result;
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
527
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
528 MenuItemIndex index;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
529 CFStringRef movMenuTitle;
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
530 CFStringRef aspMenuTitle;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
531
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
532 const EventTypeSpec win_events[] = {
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
533 { kEventClassWindow, kEventWindowClosed },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
534 { kEventClassWindow, kEventWindowBoundsChanged },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
535 { kEventClassCommand, kEventCommandProcess }
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
536 };
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
537
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
538 const EventTypeSpec key_events[] = {
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
539 { kEventClassKeyboard, kEventRawKeyDown },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
540 { kEventClassKeyboard, kEventRawKeyRepeat }
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
541 };
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
542
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
543 const EventTypeSpec mouse_events[] = {
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
544 { kEventClassMouse, kEventMouseMoved },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
545 { kEventClassMouse, kEventMouseWheelMoved },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
546 { kEventClassMouse, kEventMouseDown },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
547 { kEventClassMouse, kEventMouseUp },
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
548 { kEventClassMouse, kEventMouseDragged }
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
549 };
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
550
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
551 SetRect(&winRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
552 SetRect(&oldWinRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
553 SetRect(&dstRect, 0, 0, d_width, d_height);
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
554
14081
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
555 //Clear Menu Bar
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
556 ClearMenuBar();
866623c7ec87 clear menubar before adding new menu
nplourde
parents: 13909
diff changeset
557
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
558 //Create Window Menu
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
559 CreateStandardWindowMenu(0, &windMenu);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
560 InsertMenu(windMenu, 0);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
561
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
562 //Create Movie Menu
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
563 CreateNewMenu (1004, 0, &movMenu);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
564 movMenuTitle = CFSTR("Movie");
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
565 SetMenuTitleWithCFString(movMenu, movMenuTitle);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
566
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
567 AppendMenuItemTextWithCFString(movMenu, CFSTR("Half Size"), 0, kHalfScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
568 SetMenuItemCommandKey(movMenu, index, 0, '0');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
569
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
570 AppendMenuItemTextWithCFString(movMenu, CFSTR("Normal Size"), 0, kNormalScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
571 SetMenuItemCommandKey(movMenu, index, 0, '1');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
572
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
573 AppendMenuItemTextWithCFString(movMenu, CFSTR("Double Size"), 0, kDoubleScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
574 SetMenuItemCommandKey(movMenu, index, 0, '2');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
575
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
576 AppendMenuItemTextWithCFString(movMenu, CFSTR("Full Size"), 0, kFullScreenCmd, &index);
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
577 SetMenuItemCommandKey(movMenu, index, 0, 'F');
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
578
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
579 AppendMenuItemTextWithCFString(movMenu, NULL, kMenuItemAttrSeparator, 0, &index);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
580
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
581 AppendMenuItemTextWithCFString(movMenu, CFSTR("Aspect Ratio"), 0, 0, &index);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
582
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
583 ////Create Aspect Ratio Sub Menu
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
584 CreateNewMenu (0, 0, &aspectMenu);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
585 aspMenuTitle = CFSTR("Aspect Ratio");
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
586 SetMenuTitleWithCFString(aspectMenu, aspMenuTitle);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
587 SetMenuItemHierarchicalMenu(movMenu, 6, aspectMenu);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
588
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
589 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Keep"), 0, kKeepAspectCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
590 CheckMenuItem (aspectMenu, 1, vo_keepaspect);
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
591 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Pan-Scan"), 0, kPanScanCmd, &index);
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
592 CheckMenuItem (aspectMenu, 2, vo_panscan);
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
593 AppendMenuItemTextWithCFString(aspectMenu, NULL, kMenuItemAttrSeparator, 0, &index);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
594 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("Original"), 0, kAspectOrgCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
595 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("4:3"), 0, kAspectFullCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
596 AppendMenuItemTextWithCFString(aspectMenu, CFSTR("16:9"), 0, kAspectWideCmd, &index);
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
597
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
598 InsertMenu(movMenu, GetMenuID(windMenu)); //insert before Window menu
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
599
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
600 DrawMenuBar();
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
601
13693
abba514689a1 fix menu bar support and add new movie zoom option menu a la quicktime
nplourde
parents: 13124
diff changeset
602 //create window
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
603 CreateNewWindow(kDocumentWindowClass, windowAttrs, &winRect, &theWindow);
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
604
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
605 CreateWindowGroup(0, &winGroup);
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
606 SetWindowGroup(theWindow, winGroup);
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
607
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
608 //Set window title
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
609 titleKey = CFSTR("MPlayer - The Movie Player");
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
610 windowTitle = CFCopyLocalizedString(titleKey, NULL);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
611 result = SetWindowTitleWithCFString(theWindow, windowTitle);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
612 CFRelease(titleKey);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
613 CFRelease(windowTitle);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
614
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
615 //Install event handler
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
616 InstallApplicationEventHandler (NewEventHandlerUPP (KeyEventHandler), GetEventTypeCount(key_events), key_events, NULL, NULL);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
617 InstallApplicationEventHandler (NewEventHandlerUPP (MouseEventHandler), GetEventTypeCount(mouse_events), mouse_events, NULL, NULL);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
618 InstallWindowEventHandler (theWindow, NewEventHandlerUPP (WindowEventHandler), GetEventTypeCount(win_events), win_events, theWindow, NULL);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
619 }
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
620
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
621 static int config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
622 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
623 WindowAttributes windowAttrs;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
624 OSErr qterr;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
625 int i;
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
626 CGRect tmpBounds;
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
627
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
628 //Get Main device info///////////////////////////////////////////////////
13719
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
629
43ecd6a73ec0 move variable declaration at beginning of block
nplourde
parents: 13712
diff changeset
630
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
631 deviceHdl = GetMainDevice();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
632
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
633 for(i=0; i<device_id; i++)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
634 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
635 deviceHdl = GetNextDevice(deviceHdl);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
636
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
637 if(deviceHdl == NULL)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
638 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
639 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: Device ID %d do not exist, falling back to main device.\n", device_id);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
640 deviceHdl = GetMainDevice();
14699
779230cb313d set device id to 0 if the device selected on startup do not exist
nplourde
parents: 14082
diff changeset
641 device_id = 0;
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
642 break;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
643 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
644 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
645
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
646 deviceRect = (*deviceHdl)->gdRect;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
647 device_width = deviceRect.right-deviceRect.left;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
648 device_height = deviceRect.bottom-deviceRect.top;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
649
13791
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
650 monitor_aspect = (float)device_width/(float)device_height;
4f08a94405ad autodetect proper monitor aspect
nplourde
parents: 13788
diff changeset
651
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
652 //misc mplayer setup/////////////////////////////////////////////////////
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
653 SetRect(&imgRect, 0, 0, width, height);
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
654 switch (image_format)
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
655 {
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
656 case IMGFMT_RGB32:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
657 image_depth = 32;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
658 break;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
659 case IMGFMT_YV12:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
660 case IMGFMT_IYUV:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
661 case IMGFMT_I420:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
662 case IMGFMT_UYVY:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
663 case IMGFMT_YUY2:
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
664 image_depth = 16;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
665 break;
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
666 }
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
667 image_size = ((imgRect.right*imgRect.bottom*image_depth)+7)/8;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
668
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
669 vo_fs = flags & VOFLAG_FULLSCREEN;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
670
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
671 //get movie aspect
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
672 panscan_init();
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
673 aspect_save_orig(width,height);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
674 aspect_save_prescale(d_width,d_height);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
675 aspect_save_screenres(device_width, device_height);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
676
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
677 aspect(&d_width,&d_height,A_NOZOOM);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
678
13793
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
679 movie_aspect = (float)d_width/(float)d_height;
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
680 old_movie_aspect = movie_aspect;
631b0b664ece get proper movie aspect
nplourde
parents: 13792
diff changeset
681
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
682 if(image_data)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
683 free(image_data);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
684
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
685 image_data = malloc(image_size);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
686
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
687 //Create player window//////////////////////////////////////////////////
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
688 windowAttrs = kWindowStandardDocumentAttributes
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
689 | kWindowStandardHandlerAttribute
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
690 | kWindowLiveResizeAttribute;
12425
049136c501b2 Disable live resize for yuv - HW accel bug
nplourde
parents: 12424
diff changeset
691
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
692 windowAttrs &= (~kWindowResizableAttribute);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
693
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
694 if (theWindow == NULL)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
695 {
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
696 quartz_CreateWindow(d_width, d_height, windowAttrs);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
697
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
698 if (theWindow == NULL)
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
699 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
700 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: Couldn't create window !!!!!\n");
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
701 return -1;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
702 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
703 tmpBounds = CGRectMake( 0, 0, winRect.right, winRect.bottom);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
704 CreateCGContextForPort(GetWindowPort(theWindow),&context);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
705 CGContextFillRect(context, tmpBounds);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
706 }
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
707 else
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
708 {
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
709 HideWindow(theWindow);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
710 ChangeWindowAttributes(theWindow, ~windowAttrs, windowAttrs);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
711 SetRect(&winRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
712 SetRect(&oldWinRect, 0, 0, d_width, d_height);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
713 SizeWindow (theWindow, d_width, d_height, 1);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
714 }
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
715
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
716 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
717 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
718 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
719 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
720 CreateCGContextForPort (GetWindowPort (theWindow), &context);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
721
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
722 dataProviderRef = CGDataProviderCreateWithData (0, image_data, imgRect.right * imgRect.bottom * 4, 0);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
723
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
724 image = CGImageCreate (imgRect.right,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
725 imgRect.bottom,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
726 8,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
727 image_depth,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
728 ((imgRect.right*32)+7)/8,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
729 CGColorSpaceCreateDeviceRGB(),
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
730 kCGImageAlphaNoneSkipFirst,
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
731 dataProviderRef, 0, 1, kCGRenderingIntentDefault);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
732 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
733 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
734
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
735 case IMGFMT_YV12:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
736 case IMGFMT_IYUV:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
737 case IMGFMT_I420:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
738 case IMGFMT_UYVY:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
739 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
740 {
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
741 get_image_done = 0;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
742
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
743 if (!EnterMoviesDone)
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
744 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
745 qterr = EnterMovies();
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
746 EnterMoviesDone = 1;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
747 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
748 else
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
749 qterr = 0;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
750
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
751 if (qterr)
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
752 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
753 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: EnterMovies (%d)\n", qterr);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
754 return -1;
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
755 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
756
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
757
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
758 SetIdentityMatrix(&matrix);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
759
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
760 if ((d_width != width) || (d_height != height))
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
761 {
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
762 ScaleMatrix(&matrix, FixDiv(Long2Fix(d_width),Long2Fix(width)), FixDiv(Long2Fix(d_height),Long2Fix(height)), 0, 0);
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
763 }
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
764
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
765 yuv_qt_stuff.desc = (ImageDescriptionHandle)NewHandleClear( sizeof(ImageDescription) );
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
766
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
767 yuv_qt_stuff.extension_colr = NewHandleClear(sizeof(NCLCColorInfoImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
768 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->colorParamType = kVideoColorInfoImageDescriptionExtensionType;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
769 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->primaries = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
770 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->transferFunction = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
771 ((NCLCColorInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_colr))->matrix = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
772
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
773 yuv_qt_stuff.extension_fiel = NewHandleClear(sizeof(FieldInfoImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
774 ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldCount = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
775 ((FieldInfoImageDescriptionExtension*)(*yuv_qt_stuff.extension_fiel))->fieldOrderings = 0;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
776
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
777 yuv_qt_stuff.extension_clap = NewHandleClear(sizeof(CleanApertureImageDescriptionExtension));
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
778 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthN = imgRect.right;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
779 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureWidthD = 1;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
780 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightN = imgRect.bottom;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
781 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->cleanApertureHeightD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
782 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffN = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
783 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->horizOffD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
784 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffN = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
785 ((CleanApertureImageDescriptionExtension*)(*yuv_qt_stuff.extension_clap))->vertOffD = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
786
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
787 yuv_qt_stuff.extension_pasp = NewHandleClear(sizeof(PixelAspectRatioImageDescriptionExtension));
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
788 ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->hSpacing = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
789 ((PixelAspectRatioImageDescriptionExtension*)(*yuv_qt_stuff.extension_pasp))->vSpacing = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
790
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
791 (*yuv_qt_stuff.desc)->idSize = sizeof(ImageDescription);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
792 (*yuv_qt_stuff.desc)->cType = image_qtcodec;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
793 (*yuv_qt_stuff.desc)->version = 2;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
794 (*yuv_qt_stuff.desc)->revisionLevel = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
795 (*yuv_qt_stuff.desc)->vendor = 'mpla';
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
796 (*yuv_qt_stuff.desc)->width = imgRect.right;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
797 (*yuv_qt_stuff.desc)->height = imgRect.bottom;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
798 (*yuv_qt_stuff.desc)->hRes = Long2Fix(72);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
799 (*yuv_qt_stuff.desc)->vRes = Long2Fix(72);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
800 (*yuv_qt_stuff.desc)->temporalQuality = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
801 (*yuv_qt_stuff.desc)->spatialQuality = codecLosslessQuality;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
802 (*yuv_qt_stuff.desc)->frameCount = 1;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
803 (*yuv_qt_stuff.desc)->dataSize = 0;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
804 (*yuv_qt_stuff.desc)->depth = 24;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
805 (*yuv_qt_stuff.desc)->clutID = -1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
806
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
807 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_colr, kColorInfoImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
808 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
809 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
810 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [colr] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
811 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
812
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
813 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_fiel, kFieldInfoImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
814 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
815 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
816 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [fiel] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
817 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
818
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
819 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_clap, kCleanApertureImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
820 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
821 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
822 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [clap] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
823 }
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
824
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
825 qterr = AddImageDescriptionExtension(yuv_qt_stuff.desc, yuv_qt_stuff.extension_pasp, kCleanApertureImageDescriptionExtension);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
826 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
827 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
828 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: AddImageDescriptionExtension [pasp] (%d)\n", qterr);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
829 }
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
830 if (P != NULL) { // second or subsequent movie
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
831 free(P);
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
832 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
833 P = calloc(sizeof(PlanarPixmapInfoYUV420) + image_size, 1);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
834 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
835 {
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
836 case IMGFMT_YV12:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
837 case IMGFMT_IYUV:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
838 case IMGFMT_I420:
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
839 P->componentInfoY.offset = be2me_32(sizeof(PlanarPixmapInfoYUV420));
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
840 P->componentInfoCb.offset = be2me_32(be2me_32(P->componentInfoY.offset) + image_size / 2);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
841 P->componentInfoCr.offset = be2me_32(be2me_32(P->componentInfoCb.offset) + image_size / 4);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
842 P->componentInfoY.rowBytes = be2me_32(imgRect.right);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
843 P->componentInfoCb.rowBytes = be2me_32(imgRect.right / 2);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
844 P->componentInfoCr.rowBytes = be2me_32(imgRect.right / 2);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
845 image_buffer_size = image_size + sizeof(PlanarPixmapInfoYUV420);
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
846 break;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
847 case IMGFMT_UYVY:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
848 case IMGFMT_YUY2:
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
849 image_buffer_size = image_size;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
850 break;
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
851 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
852
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
853 qterr = DecompressSequenceBeginS(&seqId,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
854 yuv_qt_stuff.desc,
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
855 (char *)P,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
856 image_buffer_size,
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
857 GetWindowPort(theWindow),
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
858 NULL,
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
859 NULL,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
860 ((d_width != width) || (d_height != height)) ?
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
861 &matrix : NULL,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
862 srcCopy,
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
863 NULL,
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
864 0,
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
865 codecLosslessQuality,
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
866 bestSpeedCodec);
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
867
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
868 if (qterr)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
869 {
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
870 mp_msg(MSGT_VO, MSGL_FATAL, "Quartz error: DecompressSequenceBeginS (%d)\n", qterr);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
871 return -1;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
872 }
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
873 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
874 break;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
875 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
876
15885
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
877 //Show window
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
878 RepositionWindow(theWindow, NULL, kWindowCenterOnMainScreen);
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
879 ShowWindow (theWindow);
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
880
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
881 if(vo_fs)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
882 window_fullscreen();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
883
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
884 if(vo_ontop)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
885 window_ontop();
12888
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
886
12912
1f6bb2356d18 add var vo_rootwin and -rootwin switch for mac osx
nplourde
parents: 12889
diff changeset
887 if(vo_rootwin)
12888
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
888 {
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
889 vo_fs = TRUE;
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
890 winLevel = 0;
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
891 SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel]));
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
892 window_fullscreen();
3a58fa9639d4 add support for -rootwin command
nplourde
parents: 12886
diff changeset
893 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
894
15885
b2f434649dec properly redraw fullscreen window with -fs and zoom
nplourde
parents: 15881
diff changeset
895 window_resized();
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
896
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
897 return 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
898 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
899
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
900 static void check_events(void)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
901 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
902 EventRef theEvent;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
903 EventTargetRef theTarget;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
904 OSStatus theErr;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
905
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
906 //Get event
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
907 theTarget = GetEventDispatcherTarget();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
908 theErr = ReceiveNextEvent(0, 0, kEventDurationNoWait,true, &theEvent);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
909 if(theErr == noErr && theEvent != NULL)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
910 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
911 SendEventToEventTarget (theEvent, theTarget);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
912 ReleaseEvent(theEvent);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
913 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
914 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
915
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
916 static void draw_osd(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
917 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
918 vo_draw_text(imgRect.right,imgRect.bottom,draw_alpha);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
919 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
920
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
921 static void flip_page(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
922 {
21396
856d660a1ebd Fix a declarations vs statements warning.
diego
parents: 18057
diff changeset
923 int curTime;
24954
a4cf3ff9b70e Fix the prevent system idle code. Original code also works, but not as expected.
ulion
parents: 24952
diff changeset
924 static int lastTime = 0;
21396
856d660a1ebd Fix a declarations vs statements warning.
diego
parents: 18057
diff changeset
925
13707
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
926 if(theWindow == NULL)
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
927 return;
3fff37ed4fe7 Fixed event handling for menubar and window close button.
nplourde
parents: 13693
diff changeset
928
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
929 switch (image_format)
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
930 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
931 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
932 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
933 CGContextDrawImage (context, bounds, image);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
934 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
935 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
936
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
937 case IMGFMT_YV12:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
938 case IMGFMT_IYUV:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
939 case IMGFMT_I420:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
940 case IMGFMT_UYVY:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
941 case IMGFMT_YUY2:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
942 if (EnterMoviesDone)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
943 {
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
944 OSErr qterr;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
945 CodecFlags flags = 0;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
946 qterr = DecompressSequenceFrameWhen(seqId,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
947 (char *)P,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
948 image_buffer_size,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
949 0, //codecFlagUseImageBuffer,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
950 &flags,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
951 NULL,
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
952 NULL);
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
953 if (qterr)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
954 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
955 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: DecompressSequenceFrameWhen in flip_page (%d) flags:0x%08x\n", qterr, flags);
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
956 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
957 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
958 break;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
959 }
15723
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
960
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
961 if(!vo_quartz_fs)
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
962 {
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
963 //render resize box
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
964 CGContextBeginPath(context);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
965 CGContextSetAllowsAntialiasing(context, false);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
966 //CGContextSaveGState(context);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
967
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
968 //line white
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
969 CGContextSetRGBStrokeColor (context, 0.2, 0.2, 0.2, 0.5);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
970 CGContextMoveToPoint( context, winRect.right-1, 1); CGContextAddLineToPoint( context, winRect.right-1, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
971 CGContextMoveToPoint( context, winRect.right-1, 5); CGContextAddLineToPoint( context, winRect.right-5, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
972 CGContextMoveToPoint( context, winRect.right-1, 9); CGContextAddLineToPoint( context, winRect.right-9, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
973 CGContextStrokePath( context );
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
974
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
975 //line gray
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
976 CGContextSetRGBStrokeColor (context, 0.4, 0.4, 0.4, 0.5);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
977 CGContextMoveToPoint( context, winRect.right-1, 2); CGContextAddLineToPoint( context, winRect.right-2, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
978 CGContextMoveToPoint( context, winRect.right-1, 6); CGContextAddLineToPoint( context, winRect.right-6, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
979 CGContextMoveToPoint( context, winRect.right-1, 10); CGContextAddLineToPoint( context, winRect.right-10, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
980 CGContextStrokePath( context );
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
981
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
982 //line black
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
983 CGContextSetRGBStrokeColor (context, 0.6, 0.6, 0.6, 0.5);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
984 CGContextMoveToPoint( context, winRect.right-1, 3); CGContextAddLineToPoint( context, winRect.right-3, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
985 CGContextMoveToPoint( context, winRect.right-1, 7); CGContextAddLineToPoint( context, winRect.right-7, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
986 CGContextMoveToPoint( context, winRect.right-1, 11); CGContextAddLineToPoint( context, winRect.right-11, 1);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
987 CGContextStrokePath( context );
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
988
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
989 //CGContextRestoreGState( context );
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
990 CGContextFlush (context);
ac7dcf4a1f8a draw resize box
nplourde
parents: 15702
diff changeset
991 }
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
992
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
993 //auto hide mouse cursor and futur on-screen control?
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
994 if(vo_quartz_fs && !mouseHide)
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
995 {
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
996 int curTime = TickCount()/60;
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
997 static int lastTime = 0;
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
998
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
999 if( ((curTime - lastTime) >= 5) || (lastTime == 0) )
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1000 {
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
1001 CGDisplayHideCursor(kCGDirectMainDisplay);
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1002 mouseHide = TRUE;
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1003 lastTime = curTime;
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1004 }
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1005 }
17546
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1006
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1007 //update activity every 30 seconds to prevent
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1008 //screensaver from starting up.
21396
856d660a1ebd Fix a declarations vs statements warning.
diego
parents: 18057
diff changeset
1009 curTime = TickCount()/60;
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
1010
24954
a4cf3ff9b70e Fix the prevent system idle code. Original code also works, but not as expected.
ulion
parents: 24952
diff changeset
1011 if( ((curTime - lastTime) >= 30) || (lastTime == 0) )
17546
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1012 {
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1013 UpdateSystemActivity(UsrActivity);
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1014 lastTime = curTime;
d878e3e313eb let osx sleep if video is paused
nplourde
parents: 16892
diff changeset
1015 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1016 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1017
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
1018 static int draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1019 {
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1020 switch (image_format)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1021 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1022 case IMGFMT_YV12:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1023 case IMGFMT_I420:
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1024 memcpy_pic(((char*)P) + be2me_32(P->componentInfoY.offset) + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1025 x=x/2;y=y/2;w=w/2;h=h/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1026
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1027 memcpy_pic(((char*)P) + be2me_32(P->componentInfoCb.offset) + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1028 memcpy_pic(((char*)P) + be2me_32(P->componentInfoCr.offset) + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1029 return 0;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1030
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1031 case IMGFMT_IYUV:
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1032 memcpy_pic(((char*)P) + be2me_32(P->componentInfoY.offset) + x + imgRect.right * y, src[0], w, h, imgRect.right, stride[0]);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1033 x=x/2;y=y/2;w=w/2;h=h/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1034
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1035 memcpy_pic(((char*)P) + be2me_32(P->componentInfoCr.offset) + x + imgRect.right / 2 * y, src[1], w, h, imgRect.right / 2, stride[1]);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1036 memcpy_pic(((char*)P) + be2me_32(P->componentInfoCb.offset) + x + imgRect.right / 2 * y, src[2], w, h, imgRect.right / 2, stride[2]);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1037 return 0;
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1038 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1039 return -1;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1040 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1041
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
1042 static int draw_frame(uint8_t *src[])
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1043 {
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1044 switch (image_format)
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1045 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1046 case IMGFMT_RGB32:
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 23381
diff changeset
1047 fast_memcpy(image_data,src[0],image_size);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1048 return 0;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1049
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1050 case IMGFMT_UYVY:
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1051 case IMGFMT_YUY2:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1052 memcpy_pic(((char*)P), src[0], imgRect.right * 2, imgRect.bottom, imgRect.right * 2, imgRect.right * 2);
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1053 return 0;
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1054 }
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1055 return -1;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1056 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1057
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
1058 static int query_format(uint32_t format)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1059 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1060 image_format = format;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1061 image_qtcodec = 0;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1062
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1063 if (format == IMGFMT_RGB32)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1064 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1065 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1066 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1067
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1068 if ((format == IMGFMT_YV12) || (format == IMGFMT_IYUV) || (format == IMGFMT_I420))
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1069 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1070 image_qtcodec = kMpegYUV420CodecType; //kYUV420CodecType ?;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1071 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_ACCEPT_STRIDE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1072 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1073
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1074 if (format == IMGFMT_YUY2)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1075 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1076 image_qtcodec = kComponentVideoUnsigned;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1077 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1078 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1079
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1080 if (format == IMGFMT_UYVY)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1081 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1082 image_qtcodec = k422YpCbCr8CodecType;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1083 return VFCAP_CSP_SUPPORTED | VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1084 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1085
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1086 return 0;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1087 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1088
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1089 static void uninit(void)
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1090 {
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1091 OSErr qterr;
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1092
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1093 switch (image_format)
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1094 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1095 case IMGFMT_YV12:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1096 case IMGFMT_IYUV:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1097 case IMGFMT_I420:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1098 case IMGFMT_UYVY:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1099 case IMGFMT_YUY2:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1100 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1101 if (EnterMoviesDone)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1102 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1103 qterr = CDSequenceEnd(seqId);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1104 if (qterr)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1105 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1106 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: CDSequenceEnd (%d)\n", qterr);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1107 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1108 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1109 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1110 }
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1111 default:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1112 break;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1113 }
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1114
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1115 ShowMenuBar();
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1116 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1117
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
1118 static int preinit(const char *arg)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1119 {
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1120 int parse_err = 0;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1121
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1122 if(arg)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1123 {
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
1124 char *parse_pos = (char *)&arg[0];
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1125 while (parse_pos[0] && !parse_err)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1126 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1127 if (strncmp (parse_pos, "device_id=", 10) == 0)
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1128 {
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1129 parse_pos = &parse_pos[10];
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1130 device_id = strtol(parse_pos, &parse_pos, 0);
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1131 }
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1132 if (strncmp (parse_pos, "fs_res=", 7) == 0)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1133 {
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1134 parse_pos = &parse_pos[7];
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1135 fs_res_x = strtol(parse_pos, &parse_pos, 0);
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1136 parse_pos = &parse_pos[1];
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1137 fs_res_y = strtol(parse_pos, &parse_pos, 0);
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1138 }
12519
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1139 if (parse_pos[0] == ':') parse_pos = &parse_pos[1];
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1140 else if (parse_pos[0]) parse_err = 1;
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1141 }
12a87d539f6d choose fullscreen device with suboption device_id=#
nplourde
parents: 12517
diff changeset
1142 }
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1143
14082
30db51086c84 do not bring process to front if HAVE_SDL
nplourde
parents: 14081
diff changeset
1144 #if !defined (MACOSX_FINDER_SUPPORT) || !defined (HAVE_SDL)
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1145 //this chunk of code is heavily based off SDL_macosx.m from SDL
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1146 //it uses an Apple private function to request foreground operation
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
1147 {
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1148 void CPSEnableForegroundOperation(ProcessSerialNumber* psn);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1149 ProcessSerialNumber myProc, frProc;
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1150 Boolean sameProc;
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1151
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1152 if (GetFrontProcess(&frProc) == noErr)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1153 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1154 if (GetCurrentProcess(&myProc) == noErr)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1155 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1156 if (SameProcess(&frProc, &myProc, &sameProc) == noErr && !sameProc)
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1157 {
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1158 CPSEnableForegroundOperation(&myProc);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1159 }
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1160 SetFrontProcess(&myProc);
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1161 }
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1162 }
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
1163 }
13909
07dadc3066f3 add support for macosx finder argument support (let you bundle mplayer to be a finder compliant .app) patch by Chris Roccati <roccati@pobox.com>
nplourde
parents: 13856
diff changeset
1164 #endif
12785
33f58bfc8a1b make mplayer capable of being in the foreground by Dan Christiansen
nplourde
parents: 12624
diff changeset
1165
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1166 return 0;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1167 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1168
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1169 static uint32_t draw_yuv_image(mp_image_t *mpi)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1170 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1171 // ATM we're only called for planar IMGFMT
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1172 // drawing is done directly in P
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1173 // and displaying is in flip_page.
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1174 return get_image_done ? VO_TRUE : VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1175 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1176
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1177 static uint32_t get_yuv_image(mp_image_t *mpi)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1178 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1179 if(mpi->type!=MP_IMGTYPE_EXPORT) return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1180
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1181 if(mpi->imgfmt!=image_format) return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1182
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1183 if(mpi->flags&MP_IMGFLAG_PLANAR)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1184 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1185 if (mpi->num_planes != 3)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1186 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1187 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: only 3 planes allowed in get_yuv_image for planar (%d) \n", mpi->num_planes);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1188 return VO_FALSE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1189 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1190
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1191 mpi->planes[0]=((char*)P) + be2me_32(P->componentInfoY.offset);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1192 mpi->stride[0]=imgRect.right;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1193 mpi->width=imgRect.right;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1194
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1195 if(mpi->flags&MP_IMGFLAG_SWAPPED)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1196 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1197 // I420
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1198 mpi->planes[1]=((char*)P) + be2me_32(P->componentInfoCb.offset);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1199 mpi->planes[2]=((char*)P) + be2me_32(P->componentInfoCr.offset);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1200 mpi->stride[1]=imgRect.right/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1201 mpi->stride[2]=imgRect.right/2;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1202 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1203 else
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1204 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1205 // YV12
23676
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1206 mpi->planes[1]=((char*)P) + be2me_32(P->componentInfoCr.offset);
f3cb35ec74c3 bugfix intel mac vo_quartz, PlanarPixmapInfoYUV420 structure requires big-endian value. author Taihei Monma tmkk@mac.com
nplourde
parents: 23457
diff changeset
1207 mpi->planes[2]=((char*)P) + be2me_32(P->componentInfoCb.offset);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1208 mpi->stride[1]=imgRect.right/2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1209 mpi->stride[2]=imgRect.right/2;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1210 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1211
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1212 mpi->flags|=MP_IMGFLAG_DIRECT;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1213 get_image_done = 1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1214 return VO_TRUE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1215 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1216 else
12433
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1217 {
e7ed5efa4d10 More code cleanup
nplourde
parents: 12432
diff changeset
1218 // doesn't work yet
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1219 if (mpi->num_planes != 1)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1220 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1221 mp_msg(MSGT_VO, MSGL_ERR, "Quartz error: only 1 plane allowed in get_yuv_image for packed (%d) \n", mpi->num_planes);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1222 return VO_FALSE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1223 }
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1224
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1225 mpi->planes[0] = (char*)P;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1226 mpi->stride[0] = imgRect.right * 2;
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1227 mpi->width=imgRect.right;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1228 mpi->flags|=MP_IMGFLAG_DIRECT;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1229 get_image_done = 1;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1230 return VO_TRUE;
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1231 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1232 return VO_FALSE;
12414
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1233 }
f1a9dcdfab5d Add yuv csp support
nplourde
parents: 12296
diff changeset
1234
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15909
diff changeset
1235 static int control(uint32_t request, void *data, ...)
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1236 {
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1237 switch (request)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1238 {
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25422
diff changeset
1239 case VOCTRL_PAUSE: return int_pause = 1;
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25422
diff changeset
1240 case VOCTRL_RESUME: return int_pause = 0;
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1241 case VOCTRL_FULLSCREEN: vo_fs = (!(vo_fs)); window_fullscreen(); return VO_TRUE;
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1242 case VOCTRL_ONTOP: vo_ontop = (!(vo_ontop)); window_ontop(); return VO_TRUE;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1243 case VOCTRL_QUERY_FORMAT: return query_format(*((uint32_t*)data));
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
1244 case VOCTRL_GET_PANSCAN: return VO_TRUE;
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1245 case VOCTRL_SET_PANSCAN: window_panscan(); return VO_TRUE;
13795
ac35862cbc16 enable pan-scan + menu option
nplourde
parents: 13793
diff changeset
1246
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1247 case VOCTRL_GET_IMAGE:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1248 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1249 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1250 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1251 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1252 case IMGFMT_I420:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1253 case IMGFMT_UYVY:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1254 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1255 return get_yuv_image(data);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1256 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1257 default:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1258 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1259 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1260 case VOCTRL_DRAW_IMAGE:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1261 switch (image_format)
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1262 {
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1263 case IMGFMT_YV12:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1264 case IMGFMT_IYUV:
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1265 case IMGFMT_I420:
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1266 case IMGFMT_UYVY:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1267 case IMGFMT_YUY2:
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1268 return draw_yuv_image(data);
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1269 break;
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1270 default:
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1271 break;
12424
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1272 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1273 }
09f8724dd0b0 Cosmetic change std ident style
nplourde
parents: 12423
diff changeset
1274 return VO_NOTIMPL;
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1275 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1276
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1277 void window_resized()
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1278 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1279 float aspectX;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1280 float aspectY;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1281
13855
493a0dd78307 set aqua default theme
nplourde
parents: 13841
diff changeset
1282 int padding = 0;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1283
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1284 uint32_t d_width;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1285 uint32_t d_height;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1286
13779
a03e87034921 fix windows resizing ui glitch
nplourde
parents: 13734
diff changeset
1287 CGRect tmpBounds;
13734
efefaa53aaf9 Enable live resize
nplourde
parents: 13722
diff changeset
1288
12623
e64e106c8798 removed buggy rgb32 support
nplourde
parents: 12519
diff changeset
1289 GetPortBounds( GetWindowPort(theWindow), &winRect );
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1290
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1291 if(vo_keepaspect)
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1292 {
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1293 aspect( &d_width, &d_height, A_NOZOOM);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1294 d_height = ((float)d_width/movie_aspect);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1295
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1296 aspectX = (float)((float)winRect.right/(float)d_width);
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1297 aspectY = (float)((float)(winRect.bottom)/(float)d_height);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1298
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1299 if((d_height*aspectX)>(winRect.bottom))
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1300 {
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1301 padding = (winRect.right - d_width*aspectY)/2;
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1302 SetRect(&dstRect, padding, 0, d_width*aspectY+padding, d_height*aspectY);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1303 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1304 else
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1305 {
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1306 padding = ((winRect.bottom) - d_height*aspectX)/2;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1307 SetRect(&dstRect, 0, padding, (d_width*aspectX), d_height*aspectX+padding);
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1308 }
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1309 }
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1310 else
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1311 {
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1312 SetRect(&dstRect, 0, 0, winRect.right, winRect.bottom);
13792
d603c33bb3d3 menu option to set desired movie aspect & keep aspect on window resize
nplourde
parents: 13791
diff changeset
1313 }
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1314
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1315 switch (image_format)
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1316 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1317 case IMGFMT_RGB32:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1318 {
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1319 bounds = CGRectMake(dstRect.left, dstRect.top, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top);
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1320 CreateCGContextForPort (GetWindowPort (theWindow), &context);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1321 break;
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1322 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1323 case IMGFMT_YV12:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1324 case IMGFMT_IYUV:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1325 case IMGFMT_I420:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1326 case IMGFMT_UYVY:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1327 case IMGFMT_YUY2:
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1328 {
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1329 long scale_X = FixDiv(Long2Fix(dstRect.right - dstRect.left),Long2Fix(imgRect.right));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1330 long scale_Y = FixDiv(Long2Fix(dstRect.bottom - dstRect.top),Long2Fix(imgRect.bottom));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1331
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1332 SetIdentityMatrix(&matrix);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1333 if (((dstRect.right - dstRect.left) != imgRect.right) || ((dstRect.bottom - dstRect.right) != imgRect.bottom))
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1334 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1335 ScaleMatrix(&matrix, scale_X, scale_Y, 0, 0);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1336
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1337 if (padding > 0)
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1338 {
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1339 TranslateMatrix(&matrix, Long2Fix(dstRect.left), Long2Fix(dstRect.top));
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1340 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1341 }
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1342
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1343 SetDSequenceMatrix(seqId, &matrix);
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1344 break;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1345 }
13124
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1346 default:
d830a4d6ffa6 add rgb32 csp support
nplourde
parents: 13119
diff changeset
1347 break;
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1348 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1349
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1350 //Clear Background
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1351 tmpBounds = CGRectMake( 0, 0, winRect.right, winRect.bottom);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1352 CreateCGContextForPort(GetWindowPort(theWindow),&context);
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1353 CGContextFillRect(context, tmpBounds);
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1354 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1355
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1356 void window_ontop()
12460
77cca80b1f27 Event Handling Makeover
nplourde
parents: 12433
diff changeset
1357 {
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1358 if(!vo_quartz_fs)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1359 {
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1360 //Cycle between level
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1361 winLevel++;
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1362 if(winLevel>2)
15524
21252725b639 Toggle only between ontop and normal.
nplourde
parents: 14699
diff changeset
1363 winLevel = 1;
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1364 }
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1365 SetWindowGroupLevel(winGroup, CGWindowLevelForKey(levelList[winLevel]));
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1366 }
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1367
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1368 void window_fullscreen()
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1369 {
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1370 static Ptr restoreState = NULL;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1371
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1372 //go fullscreen
12432
877d25c4b237 Switch rgb32 from QD to QT
nplourde
parents: 12425
diff changeset
1373 if(vo_fs)
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1374 {
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1375 if(winLevel != 0)
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1376 {
13841
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1377 if(device_id == 0)
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1378 {
15881
ab6d02448e57 auto hide menubar and cursor in fullscreen
nplourde
parents: 15723
diff changeset
1379 SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
1380 CGDisplayHideCursor(kCGDirectMainDisplay);
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
1381 mouseHide = TRUE;
13841
394deaee5d21 do not hide mouse and menubar in fulscreen if not using main device
nplourde
parents: 13840
diff changeset
1382 }
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1383
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1384 if(fs_res_x != 0 || fs_res_y != 0)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1385 {
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
1386 BeginFullScreen( &restoreState, deviceHdl, &fs_res_x, &fs_res_y, NULL, NULL, 0);
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1387
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1388 //Get Main device info///////////////////////////////////////////////////
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1389 deviceRect = (*deviceHdl)->gdRect;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1390
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1391 device_width = deviceRect.right;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1392 device_height = deviceRect.bottom;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1393 }
12826
fb55f94f3001 Add Window Level Key, Can switch mode with T key
nplourde
parents: 12785
diff changeset
1394 }
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1395
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1396 //save old window size
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1397 if (!vo_quartz_fs)
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1398 {
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1399 GetWindowPortBounds(theWindow, &oldWinRect);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1400 GetWindowBounds(theWindow, kWindowContentRgn, &oldWinBounds);
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1401 }
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1402
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1403 //go fullscreen
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1404 panscan_calc();
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1405 ChangeWindowAttributes(theWindow, kWindowNoShadowAttribute, 0);
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1406 MoveWindow(theWindow, deviceRect.left-(vo_panscan_x >> 1), deviceRect.top-(vo_panscan_y >> 1), 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1407 SizeWindow(theWindow, device_width+vo_panscan_x, device_height+vo_panscan_y,1);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1408
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1409 vo_quartz_fs = 1;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1410 }
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1411 else //go back to windowed mode
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1412 {
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
1413 vo_quartz_fs = 0;
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1414 if(restoreState != NULL)
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1415 {
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
1416 EndFullScreen(restoreState, 0);
13788
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1417
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1418 //Get Main device info///////////////////////////////////////////////////
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1419 deviceRect = (*deviceHdl)->gdRect;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1420
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1421 device_width = deviceRect.right;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1422 device_height = deviceRect.bottom;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1423 restoreState = NULL;
ced61fa921ca let you choose fullscreen resolution for slower system
nplourde
parents: 13787
diff changeset
1424 }
24952
70b6cb8bbfd8 Warning fixes:
ulion
parents: 23676
diff changeset
1425 SetSystemUIMode( kUIModeNormal, 0);
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1426
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1427 //show mouse cursor
18057
0e7291ee4b6b Replace deprecated function
nplourde
parents: 17546
diff changeset
1428 CGDisplayShowCursor(kCGDirectMainDisplay);
15892
c8e414e49fef more fullscreen behaviour fix for mouse cursor
nplourde
parents: 15885
diff changeset
1429 mouseHide = FALSE;
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1430
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1431 //revert window to previous setting
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1432 ChangeWindowAttributes(theWindow, 0, kWindowNoShadowAttribute);
12487
deec5d737a61 re-use same window when playing multiple files
nplourde
parents: 12460
diff changeset
1433 SizeWindow(theWindow, oldWinRect.right, oldWinRect.bottom,1);
13818
9f707a805967 window now save is old position when going in fullscreen or while using resize preset
nplourde
parents: 13796
diff changeset
1434 MoveWindow(theWindow, oldWinBounds.left, oldWinBounds.top, 1);
12296
1da74cbaf324 Add Fullscreen, Ontop and OSD support
nplourde
parents: 12120
diff changeset
1435 }
15702
9dbea0b7f3ce Fix Live Resize to match vo_macosx behavior
nplourde
parents: 15524
diff changeset
1436 window_resized();
12120
56e4423f16be Quartz/MacOSX video output module by Nicolas Plourde
alex
parents:
diff changeset
1437 }
13840
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1438
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1439 void window_panscan()
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1440 {
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1441 panscan_calc();
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1442
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1443 if(vo_panscan > 0)
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1444 CheckMenuItem (aspectMenu, 2, 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1445 else
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1446 CheckMenuItem (aspectMenu, 2, 0);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1447
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1448 if(vo_quartz_fs)
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1449 {
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1450 MoveWindow(theWindow, deviceRect.left-(vo_panscan_x >> 1), deviceRect.top-(vo_panscan_y >> 1), 1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1451 SizeWindow(theWindow, device_width+vo_panscan_x, device_height+vo_panscan_y,1);
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1452 }
62af31e1bdc8 more panscan fix
nplourde
parents: 13818
diff changeset
1453 }