annotate libmenu/vf_menu.c @ 26892:3c360ca1c304

The size of output buffer is stored in 'osize', not 'size'. This is just for readability, the code behaviour is not changed.
author eugeni
date Thu, 29 May 2008 18:35:22 +0000
parents 8eff880f638c
children 4876c89bafdd
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"
25026
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
24 #include "libvo/sub.h"
16862
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
25 #include "input/input.h"
931bdbc37ee0 Unify include paths, -I.. is in CFLAGS.
diego
parents: 13528
diff changeset
26 #include "m_struct.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
27 #include "menu.h"
22284
83366c8e1928 Fix menu to work with mpctx
uau
parents: 21925
diff changeset
28 #include "access_mpcontext.h"
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
29
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
30
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
31 static struct vf_priv_s* st_priv = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
32
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
33 static mp_image_t* pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
34 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
35 /// if nonzero display menu at startup
13528
39bdfbbc4216 support newer gcc
faust3
parents: 13344
diff changeset
36 int attribute_used menu_startup = 0;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
37
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
38 struct vf_priv_s {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
39 menu_t* root;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
40 menu_t* current;
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
41 int passthrough;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
42 };
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
43
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
44 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
45
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
46 void vf_menu_pause_update(struct vf_instance_s* vf) {
25219
e82ecde2cbd4 Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents: 25026
diff changeset
47 const vo_functions_t *video_out = mpctx_get_video_out(vf->priv->current->ctx);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
48 if(pause_mpi) {
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
49 put_image(vf,pause_mpi, MP_NOPTS_VALUE);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
50 // Don't draw the osd atm
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
51 //vf->control(vf,VFCTRL_DRAW_OSD,NULL);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
52 video_out->flip_page();
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
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
56 static int cmd_filter(mp_cmd_t* cmd, int paused, struct vf_priv_s * priv) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
57
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
58 switch(cmd->id) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
59 case MP_CMD_MENU : { // Convert txt cmd from the users into libmenu stuff
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
60 char* arg = cmd->args[0].v.s;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
61
25496
63234bdc80e4 Simplify the condition code.
ulion
parents: 25461
diff changeset
62 if (!priv->current->show && strcmp(arg,"hide"))
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
63 priv->current->show = 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
64 else if(strcmp(arg,"up") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
65 menu_read_cmd(priv->current,MENU_CMD_UP);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
66 else if(strcmp(arg,"down") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
67 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
68 else if(strcmp(arg,"left") == 0)
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
69 menu_read_cmd(priv->current,MENU_CMD_LEFT);
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
70 else if(strcmp(arg,"right") == 0)
98f4e3704a76 Allow 6 ways (up/down/left/right/ok/cancel) navigation.
albeu
parents: 17908
diff changeset
71 menu_read_cmd(priv->current,MENU_CMD_RIGHT);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
72 else if(strcmp(arg,"ok") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
73 menu_read_cmd(priv->current,MENU_CMD_OK);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
74 else if(strcmp(arg,"cancel") == 0)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
75 menu_read_cmd(priv->current,MENU_CMD_CANCEL);
25263
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
76 else if(strcmp(arg,"home") == 0)
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
77 menu_read_cmd(priv->current,MENU_CMD_HOME);
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
78 else if(strcmp(arg,"end") == 0)
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
79 menu_read_cmd(priv->current,MENU_CMD_END);
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
80 else if(strcmp(arg,"pageup") == 0)
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
81 menu_read_cmd(priv->current,MENU_CMD_PAGE_UP);
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
82 else if(strcmp(arg,"pagedown") == 0)
96d0992c7920 Remove hardcoded key->cmd bindings in libmenu, support custom key bindings
ulion
parents: 25219
diff changeset
83 menu_read_cmd(priv->current,MENU_CMD_PAGE_DOWN);
25461
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25263
diff changeset
84 else if(strcmp(arg,"click") == 0)
7ef04742572c OSD menu support mouse selection.
ulion
parents: 25263
diff changeset
85 menu_read_cmd(priv->current,MENU_CMD_CLICK);
19489
87c339558bc1 fix menu toggle/hide issues
ben
parents: 17994
diff changeset
86 else if(strcmp(arg,"hide") == 0 || strcmp(arg,"toggle") == 0)
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
87 priv->current->show = 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
88 else
17994
6927fabaef92 Part1 of several printf2mp_msg changes in patch from Otvos Attila oattila AT chello DOT hu
reynaldo
parents: 17945
diff changeset
89 mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_UnknownMenuCommand,arg);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
90 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
91 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
92 case MP_CMD_SET_MENU : {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
93 char* menu = cmd->args[0].v.s;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
94 menu_t* l = priv->current;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
95 priv->current = menu_open(menu);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
96 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
97 mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToOpenMenu,menu);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
98 priv->current = l;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
99 priv->current->show = 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
100 } else {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
101 priv->current->show = 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
102 priv->current->parent = l;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
103 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
104 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
105 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
106 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
107 return 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
108 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
109
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
110 static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
111 mp_image_t *dmpi;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
112
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
113 if(mpi->type == MP_IMGTYPE_TEMP && (!(mpi->flags&MP_IMGFLAG_PRESERVE)) ) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
114 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
115 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
116 memcpy(mpi->stride,dmpi->stride,MP_MAX_PLANES*sizeof(unsigned int));
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
117 mpi->flags|=MP_IMGFLAG_DIRECT;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
118 mpi->priv=(void*)dmpi;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
119 return;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
120 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
121 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
122
25502
605d4e3e403f From now on, libmenu does not steal all input keys from input modules.
ulion
parents: 25496
diff changeset
123 static int key_cb(int code) {
605d4e3e403f From now on, libmenu does not steal all input keys from input modules.
ulion
parents: 25496
diff changeset
124 return menu_read_key(st_priv->current,code);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
125 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
126
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
127 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
128 mp_image_t *dmpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
129
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
130 if (vf->priv->passthrough) {
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
131 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
132 0, mpi->w, mpi->h);
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
133 dmpi->planes[0]=mpi->planes[0];
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
134 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
135 }
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
136
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
137 // Close all menu who requested it
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
138 while(vf->priv->current->cl && vf->priv->current != vf->priv->root) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
139 menu_t* m = vf->priv->current;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
140 vf->priv->current = m->parent ? m->parent : vf->priv->root;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
141 menu_close(m);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
142 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
143
25026
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
144 // Try to capture the last frame before pause, or fallback to use
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
145 // last captured frame.
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
146 if(pause_mpi && (mpi->w != pause_mpi->w || mpi->h != pause_mpi->h ||
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
147 mpi->imgfmt != pause_mpi->imgfmt)) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
148 free_mp_image(pause_mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
149 pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
150 }
25026
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
151 if (!pause_mpi) {
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
152 pause_mpi = alloc_mpi(mpi->w,mpi->h,mpi->imgfmt);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
153 copy_mpi(pause_mpi,mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
154 }
25026
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
155 else if (mpctx_get_osd_function(vf->priv->root->ctx) == OSD_PAUSE)
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
156 copy_mpi(pause_mpi,mpi);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
157
25026
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
158 if (vf->priv->current->show) {
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
159 if (!mp_input_key_cb)
afead6ecb8ba Remove the pause filter and the cmd queue hack, to know the mplayer going to
ulion
parents: 24960
diff changeset
160 mp_input_key_cb = key_cb;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
161
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
162 if(mpi->flags&MP_IMGFLAG_DIRECT)
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
163 dmpi = mpi->priv;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
164 else {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
165 dmpi = vf_get_image(vf->next,mpi->imgfmt,
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
166 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
167 mpi->w,mpi->h);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
168 copy_mpi(dmpi,mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
169 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
170 menu_draw(vf->priv->current,dmpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
171
8244
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
172 } else {
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
173 if(mp_input_key_cb)
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
174 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
175
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
176 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
177 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
178 else {
21925
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
179 dmpi = vf_get_image(vf->next,mpi->imgfmt,
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
180 MP_IMGTYPE_EXPORT, MP_IMGFLAG_ACCEPT_STRIDE,
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
181 mpi->w,mpi->h);
8244
64352fb332b6 don't fully-copy the planes if the menu doesn't show (faster)
colin
parents: 8224
diff changeset
182
21925
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
183 dmpi->stride[0] = mpi->stride[0];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
184 dmpi->stride[1] = mpi->stride[1];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
185 dmpi->stride[2] = mpi->stride[2];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
186 dmpi->planes[0] = mpi->planes[0];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
187 dmpi->planes[1] = mpi->planes[1];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
188 dmpi->planes[2] = mpi->planes[2];
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
189 dmpi->priv = mpi->priv;
1c93736b6751 fix identation, broken by last commit
gpoirier
parents: 21924
diff changeset
190 }
21924
422eef67d14a speeds up mplayer execution by over FIVE times when all of the of the following apply:
gpoirier
parents: 21818
diff changeset
191 }
17908
dcfaebcdde14 10l (forgot ...)
michael
parents: 16862
diff changeset
192 return vf_next_put_image(vf,dmpi, pts);
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
193 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
194
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
195 static void uninit(vf_instance_t *vf) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
196 vf->priv=NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
197 if(pause_mpi) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
198 free_mp_image(pause_mpi);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
199 pause_mpi = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
200 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
201 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
202
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
203 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
204 unsigned int flags, unsigned int outfmt) {
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
205 #ifdef HAVE_FREETYPE
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
206 // 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
207 if (force_load_font) {
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
208 force_load_font = 0;
25851
9ebd00825df2 Allow independent scaling of vo_font and sub_font.
reimar
parents: 25502
diff changeset
209 load_font_ft(width,height,&vo_font,font_name,osd_font_scale_factor);
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
210 }
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
211 #endif
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
212 if(outfmt == IMGFMT_MPEGPES)
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
213 vf->priv->passthrough = 1;
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
214 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
215 }
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
216
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
217 static int query_format(struct vf_instance_s* vf, unsigned int fmt){
26759
8eff880f638c cosmetics: Remove useless parentheses from return statements.
diego
parents: 25851
diff changeset
218 return vf_next_query_format(vf,fmt);
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
219 }
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
220
23366
b344b6520518 rename some menu open functions, to avoid confusion with libc native open()
ben
parents: 23338
diff changeset
221 static int open_vf(vf_instance_t *vf, char* args){
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
222 if(!st_priv) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
223 st_priv = calloc(1,sizeof(struct vf_priv_s));
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
224 st_priv->root = st_priv->current = menu_open(args);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
225 if(!st_priv->current) {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
226 free(st_priv);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
227 st_priv = NULL;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
228 return 0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
229 }
13344
0d96af97ec00 option to display menu at startup, patch by Aurelien Jacobs <aurel at gnuage.org>
faust3
parents: 10397
diff changeset
230 st_priv->root->show = menu_startup;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
231 mp_input_add_cmd_filter((mp_input_cmd_filter)cmd_filter,st_priv);
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
232 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
233
8224
fefc56153615 Fix freetype. Freetype is highly recommended for a nice output ;)
albeu
parents: 8197
diff changeset
234 vf->config = config;
21803
3acc4b00bcc6 allows OSD menu to be displayed when using MPEG PES video out
ben
parents: 19489
diff changeset
235 vf->query_format=query_format;
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
236 vf->put_image = put_image;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
237 vf->get_image = get_image;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
238 vf->uninit=uninit;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
239 vf->priv=st_priv;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
240 go2pause=0;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
241
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
242 return 1;
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
243 }
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
244
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
245
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
246 vf_info_t vf_info_menu = {
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
247 "Internal filter for libmenu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
248 "menu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
249 "Albeu",
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
250 "",
23366
b344b6520518 rename some menu open functions, to avoid confusion with libc native open()
ben
parents: 23338
diff changeset
251 open_vf,
9755
6b7710f78c32 10L forgot this filter.
albeu
parents: 8635
diff changeset
252 NULL
8197
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
253 };
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
254
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
255
b31caec933e9 OSD menus initial version
albeu
parents:
diff changeset
256