annotate libmenu/vf_menu.c @ 24954:a4cf3ff9b70e

Fix the prevent system idle code. Original code also works, but not as expected. The update function was always called, but it should only be called every 30 seconds.
author ulion
date Tue, 06 Nov 2007 12:52:54 +0000
parents ea73d155ef00
children 983806685c44
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
1
16862
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
2 #include "config.h"
17994
6927fabaef92 Part1 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu
reynaldo
parents: 17945
diff changeset
3 #include "mp_msg.h"
6927fabaef92 Part1 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu
reynaldo
parents: 17945
diff changeset
4 #include "help_mp.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
5
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
6 #include <stdio.h>
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
7 #include <stdlib.h>
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
8 #include <string.h>
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
9
8623
440301fef3fe Added/reordered #includes to silence warnings about "implicit declaration".
rathann
parents: 8251
diff changeset
10 #ifdef HAVE_MALLOC_H
440301fef3fe Added/reordered #includes to silence warnings about "implicit declaration".
rathann
parents: 8251
diff changeset
11 #include <malloc.h>
440301fef3fe Added/reordered #includes to silence warnings about "implicit declaration".
rathann
parents: 8251
diff changeset
12 #endif
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
13
23338
2a66d95355f0 add new -subfont option, that allows having a different font for OSD (controls and menu) and subtitles
ben
parents: 22284
diff changeset
14 #include "mplayer.h"
16862
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
15 #include "mp_msg.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
16
16862
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
17 #include "libmpcodecs/img_format.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
18 #include "libmpcodecs/mp_image.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
19 #include "libmpcodecs/vf.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
20
16862
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
21 #include "libvo/fastmemcpy.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
22 #include "libvo/video_out.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
23 #include "libvo/font_load.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
24 #include "input/input.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
25 #include "m_struct.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
26 #include "menu.h"
22284
83366c8e1928 Fix menu to work with mpctx
uau
parents: 21925
diff changeset
27 #include "access_mpcontext.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
28
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
29
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
30 static struct vf_priv_s* st_priv = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
31
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
32 static mp_image_t* pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
33 static int go2pause = 0;
13344
0d96af97ec00 option to display menu at startup, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents: 10397
diff changeset
34 /// if nonzero display menu at startup
13528
39bdfbbc4216 support newer gcc
faust3
parents: 13344
diff changeset
35 int attribute_used menu_startup = 0;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
36
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
37 struct vf_priv_s {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
38 menu_t* root;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
39 menu_t* current;
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
40 int passthrough;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
41 };
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
42
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
43 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
44
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
45 void vf_menu_pause_update(struct vf_instance_s* vf) {
22284
83366c8e1928 Fix menu to work with mpctx
uau
parents: 21925
diff changeset
46 vo_functions_t *video_out = mpctx_get_video_out(vf->priv->current->ctx);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
47 if(pause_mpi) {
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
48 put_image(vf,pause_mpi, MP_NOPTS_VALUE);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
49 // Don't draw the osd atm
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
50 //vf->control(vf,VFCTRL_DRAW_OSD,NULL);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
51 video_out->flip_page();
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
52 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
53 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
54
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
55 static int cmd_filter(mp_cmd_t* cmd, int paused, struct vf_priv_s * priv) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
56
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
57 switch(cmd->id) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
58 case MP_CMD_PAUSE :
24929
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
59 #if 0
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
60 /* disabled because of
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
61 * http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2003-March/017281.html
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
62 * Subject: -menu & pause bug fix?
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
63 * Date: Sun Mar 23 11:00:49 CET 2003
ea73d155ef00 Fix link to email explaining the paused vf_menu behaviour change
reimar
parents: 23994
diff changeset
64 */
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
65 if(!paused && !go2pause) { // Initial pause cmd -> wait the next put_image
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
66 go2pause = 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
67 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
68 }
9903
7d70e56f317a 10l fix by Vladimir Mosgalin <mosgalin@VM10124.spb.edu>
alex
parents: 9755
diff changeset
69 #endif
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
70 if(go2pause == 2) // Msg resent by put_image after saving the image
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
71 go2pause = 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
72 break;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
73 case MP_CMD_MENU : { // Convert txt cmd from the users into libmenu stuff
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
74 char* arg = cmd->args[0].v.s;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
75
19489
87c339558bc1 fix menu toggle/hide issues
ben
parents: 17994
diff changeset
76 if(!priv->current->show && !(strcmp(arg,"hide") == 0) )
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
77 priv->current->show = 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
78 else if(strcmp(arg,"up") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
79 menu_read_cmd(priv->current,MENU_CMD_UP);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
80 else if(strcmp(arg,"down") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
81 menu_read_cmd(priv->current,MENU_CMD_DOWN);
17945
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
82 else if(strcmp(arg,"left") == 0)
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
83 menu_read_cmd(priv->current,MENU_CMD_LEFT);
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
84 else if(strcmp(arg,"right") == 0)
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
85 menu_read_cmd(priv->current,MENU_CMD_RIGHT);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
86 else if(strcmp(arg,"ok") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
87 menu_read_cmd(priv->current,MENU_CMD_OK);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
88 else if(strcmp(arg,"cancel") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
89 menu_read_cmd(priv->current,MENU_CMD_CANCEL);
19489
87c339558bc1 fix menu toggle/hide issues
ben
parents: 17994
diff changeset
90 else if(strcmp(arg,"hide") == 0 || strcmp(arg,"toggle") == 0)
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
91 priv->current->show = 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
92 else
17994
6927fabaef92 Part1 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu
reynaldo
parents: 17945
diff changeset
93 mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_UnknownMenuCommand,arg);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
94 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
95 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
96 case MP_CMD_SET_MENU : {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
97 char* menu = cmd->args[0].v.s;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
98 menu_t* l = priv->current;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
99 priv->current = menu_open(menu);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
100 if(!priv->current) {
17994
6927fabaef92 Part1 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu
reynaldo
parents: 17945
diff changeset
101 mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToOpenMenu,menu);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
102 priv->current = l;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
103 priv->current->show = 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
104 } else {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
105 priv->current->show = 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
106 priv->current->parent = l;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
107 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
108 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
109 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
110 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
111 return 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
112 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
113
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
114 static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
115 mp_image_t *dmpi;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
116
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
117 if(mpi->type == MP_IMGTYPE_TEMP && (!(mpi->flags&MP_IMGFLAG_PRESERVE)) ) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
118 dmpi = vf_get_image(vf->next,mpi->imgfmt,mpi->type, mpi->flags, mpi->w, mpi->h);
23458
973e53dc7df5 Do not use fast_memcpy for small size copy, esp. when the size is constant
reimar
parents: 23457
diff changeset
119 memcpy(mpi->planes,dmpi->planes,MP_MAX_PLANES*sizeof(unsigned char*));
973e53dc7df5 Do not use fast_memcpy for small size copy, esp. when the size is constant
reimar
parents: 23457
diff changeset
120 memcpy(mpi->stride,dmpi->stride,MP_MAX_PLANES*sizeof(unsigned int));
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
121 mpi->flags|=MP_IMGFLAG_DIRECT;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
122 mpi->priv=(void*)dmpi;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
123 return;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
124 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
125 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
126
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
127 static void key_cb(int code) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
128 menu_read_key(st_priv->current,code);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
129 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
130
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
131 static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
132 mp_image_t *dmpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
133
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
134 if (vf->priv->passthrough) {
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
135 dmpi=vf_get_image(vf->next, IMGFMT_MPEGPES, MP_IMGTYPE_EXPORT,
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
136 0, mpi->w, mpi->h);
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
137 dmpi->planes[0]=mpi->planes[0];
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
138 return vf_next_put_image(vf,dmpi, pts);
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
139 }
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
140
8251
3d74366d947e better fix for my previous 10l
colin
parents: 8244
diff changeset
141 if(vf->priv->current->show
3d74366d947e better fix for my previous 10l
colin
parents: 8244
diff changeset
142 || (vf->priv->current->parent && vf->priv->current->parent->show)) {
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
143 // Close all menu who requested it
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
144 while(vf->priv->current->cl && vf->priv->current != vf->priv->root) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
145 menu_t* m = vf->priv->current;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
146 vf->priv->current = m->parent ? m->parent : vf->priv->root;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
147 menu_close(m);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
148 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
149
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
150 // Step 1 : save the picture
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
151 while(go2pause == 1) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
152 static char delay = 0; // Hack : wait the 2 frame to be sure to show the right picture
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
153 delay ^= 1; // after a seek
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
154 if(!delay) break;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
155
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
156 if(pause_mpi && (mpi->w != pause_mpi->w || mpi->h != pause_mpi->h ||
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
157 mpi->imgfmt != pause_mpi->imgfmt)) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
158 free_mp_image(pause_mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
159 pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
160 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
161 if(!pause_mpi)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
162 pause_mpi = alloc_mpi(mpi->w,mpi->h,mpi->imgfmt);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
163 copy_mpi(pause_mpi,mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
164 mp_input_queue_cmd(mp_input_parse_cmd("pause"));
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
165 go2pause = 2;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
166 break;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
167 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
168
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
169 // Grab // Ungrab the keys
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
170 if(!mp_input_key_cb && vf->priv->current->show)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
171 mp_input_key_cb = key_cb;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
172 if(mp_input_key_cb && !vf->priv->current->show)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
173 mp_input_key_cb = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
174
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
175 if(mpi->flags&MP_IMGFLAG_DIRECT)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
176 dmpi = mpi->priv;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
177 else {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
178 dmpi = vf_get_image(vf->next,mpi->imgfmt,
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
179 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
180 mpi->w,mpi->h);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
181 copy_mpi(dmpi,mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
182 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
183 menu_draw(vf->priv->current,dmpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
184
8244
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
185 } else {
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
186 if(mp_input_key_cb)
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
187 mp_input_key_cb = NULL;
21924
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
188
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
189 if(mpi->flags&MP_IMGFLAG_DIRECT)
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
190 dmpi = mpi->priv;
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
191 else {
21925
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
192 dmpi = vf_get_image(vf->next,mpi->imgfmt,
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
193 MP_IMGTYPE_EXPORT, MP_IMGFLAG_ACCEPT_STRIDE,
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
194 mpi->w,mpi->h);
8244
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
195
21925
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
196 dmpi->stride[0] = mpi->stride[0];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
197 dmpi->stride[1] = mpi->stride[1];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
198 dmpi->stride[2] = mpi->stride[2];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
199 dmpi->planes[0] = mpi->planes[0];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
200 dmpi->planes[1] = mpi->planes[1];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
201 dmpi->planes[2] = mpi->planes[2];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
202 dmpi->priv = mpi->priv;
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
203 }
21924
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
204 }
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
205 return vf_next_put_image(vf,dmpi, pts);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
206 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
207
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
208 static void uninit(vf_instance_t *vf) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
209 vf->priv=NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
210 if(pause_mpi) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
211 free_mp_image(pause_mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
212 pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
213 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
214 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
215
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
216 static int config(struct vf_instance_s* vf, int width, int height, int d_width, int d_height,
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
217 unsigned int flags, unsigned int outfmt) {
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
218 #ifdef HAVE_FREETYPE
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
219 // here is the right place to get screen dimensions
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
220 if (force_load_font) {
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
221 force_load_font = 0;
23338
2a66d95355f0 add new -subfont option, that allows having a different font for OSD (controls and menu) and subtitles
ben
parents: 22284
diff changeset
222 load_font_ft(width,height,&vo_font,font_name);
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
223 }
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
224 #endif
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
225 if(outfmt == IMGFMT_MPEGPES)
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
226 vf->priv->passthrough = 1;
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
227 return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt);
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
228 }
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
229
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
230 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
231 return (vf_next_query_format(vf,fmt));
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
232 }
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
233
23366
b344b6520518 rename some menu open functions, to avoid confusion with libc native open()
ben
parents: 23338
diff changeset
234 static int open_vf(vf_instance_t *vf, char* args){
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
235 if(!st_priv) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
236 st_priv = calloc(1,sizeof(struct vf_priv_s));
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
237 st_priv->root = st_priv->current = menu_open(args);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
238 if(!st_priv->current) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
239 free(st_priv);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
240 st_priv = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
241 return 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
242 }
13344
0d96af97ec00 option to display menu at startup, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents: 10397
diff changeset
243 st_priv->root->show = menu_startup;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
244 mp_input_add_cmd_filter((mp_input_cmd_filter)cmd_filter,st_priv);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
245 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
246
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
247 vf->config = config;
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
248 vf->query_format=query_format;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
249 vf->put_image = put_image;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
250 vf->get_image = get_image;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
251 vf->uninit=uninit;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
252 vf->priv=st_priv;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
253 go2pause=0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
254
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
255 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
256 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
257
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
258
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
259 vf_info_t vf_info_menu = {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
260 "Internal filter for libmenu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
261 "menu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
262 "Albeu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
263 "",
23366
b344b6520518 rename some menu open functions, to avoid confusion with libc native open()
ben
parents: 23338
diff changeset
264 open_vf,
9755
6b7710f78c32 10L forgot this filter.
albeu
parents: 8635
diff changeset
265 NULL
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
266 };
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
267
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
268
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
269