Mercurial > mplayer.hg
annotate libvo/vo_cvidix.c @ 36920:40ad45360c8a
Replace old item 'potmeter' by new item 'pimage'.
Recent versions of the X11/GTK GUI didn't allow to control a potmeter,
because that didn't seem to make any sense.
In order to get rid of the confusing potmeter that doesn't distinguish
from a hpotmeter and in order to allow the more useful behaviour recent
versions of the X11/GTK GUI have been utilized (and because we're still
supporting item 'potmeter' for reasons of compatibility with old skins),
introduce new item 'pimage' that reuses most of the current potmeter
code.
Additionally, remove remaining code and documentation of 'potmeter'.
author | ib |
---|---|
date | Mon, 17 Mar 2014 12:29:46 +0000 |
parents | 5d3f93051de9 |
children |
rev | line source |
---|---|
10979 | 1 /* |
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
2 * VIDIX-accelerated overlay on (black) background |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
4 * should work on any OS |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
5 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
6 * copyright (C) 2003 Sascha Sommer |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
7 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
8 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
9 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
10 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
13 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
14 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
15 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
18 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
19 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
20 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
21 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27768
diff
changeset
|
23 */ |
10979 | 24 |
25 #include <stdio.h> | |
26 #include <stdlib.h> | |
27 #include <string.h> | |
28 #include <math.h> | |
29 #include <errno.h> | |
30 | |
31 #include "config.h" | |
32 #include "video_out.h" | |
36517 | 33 #define NO_DRAW_FRAME |
10979 | 34 #include "video_out_internal.h" |
11232 | 35 #include "aspect.h" |
36 #include "geometry.h" | |
10979 | 37 |
38 #include "mp_msg.h" | |
39 | |
40 #include "vosub_vidix.h" | |
27079 | 41 #include "vidix/vidix.h" |
10979 | 42 |
43 | |
25216 | 44 static const vo_info_t info = { |
12783 | 45 "console VIDIX", |
11017 | 46 "cvidix", |
10979 | 47 "Sascha Sommer", |
48 "" | |
49 }; | |
50 | |
11017 | 51 LIBVO_EXTERN(cvidix) |
10979 | 52 |
53 /* VIDIX related */ | |
54 static char *vidix_name; | |
11232 | 55 static uint32_t swidth,sheight,sformat; |
13360 | 56 /// center video only when screenw & height are set |
57 static uint32_t center=0; | |
10979 | 58 static vidix_grkey_t gr_key; |
11232 | 59 |
60 | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
16388
diff
changeset
|
61 static uint32_t setup_vidix(void){ |
11232 | 62 int x=vo_dx,y=vo_dy; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
63 aspect(&vo_dwidth,&vo_dheight,vo_fs ? A_ZOOM : A_NOZOOM); |
13360 | 64 if(vo_fs || center){ |
11232 | 65 if(vo_dwidth <= vo_screenwidth)x = (vo_screenwidth - vo_dwidth)/2; |
66 else x=0; | |
67 if(vo_dheight <= vo_screenheight)y = (vo_screenheight - vo_dheight)/2; | |
68 else y=0; | |
69 } | |
70 if(vo_config_count)vidix_stop(); | |
71 if(vidix_init(swidth, sheight, x, y, vo_dwidth, vo_dheight, sformat, 32, vo_screenwidth,vo_screenheight)){ | |
72 mp_msg(MSGT_VO, MSGL_FATAL, "Can't setup VIDIX driver: %s\n", strerror(errno)); | |
73 return 1; | |
74 } | |
10979 | 75 vidix_start(); |
76 if(vidix_grkey_support()){ | |
77 vidix_grkey_get(&gr_key); | |
78 gr_key.key_op = KEYS_PUT; | |
11232 | 79 if (!vo_fs && !(vo_colorkey & 0xff000000)){ |
80 gr_key.ckey.op = CKEY_TRUE; | |
81 gr_key.ckey.red = (vo_colorkey & 0x00FF0000) >> 16; | |
82 gr_key.ckey.green = (vo_colorkey & 0x0000FF00) >> 8; | |
83 gr_key.ckey.blue = vo_colorkey & 0x000000FF; | |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
11019
diff
changeset
|
84 } |
11232 | 85 else gr_key.ckey.op = CKEY_FALSE; |
10979 | 86 vidix_grkey_set(&gr_key); |
11232 | 87 } |
10979 | 88 return 0; |
89 } | |
90 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
91 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){ |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14041
diff
changeset
|
92 vo_fs = flags & VOFLAG_FULLSCREEN; |
13360 | 93 if(!vo_config_count){ |
14041
928b03a98062
10l initial patch by Oded Shimon <ods15 at ods15.dyndns.org>
faust3
parents:
13787
diff
changeset
|
94 if(vo_screenwidth && vo_screenheight){ |
928b03a98062
10l initial patch by Oded Shimon <ods15 at ods15.dyndns.org>
faust3
parents:
13787
diff
changeset
|
95 if(!vo_geometry)center=1; |
928b03a98062
10l initial patch by Oded Shimon <ods15 at ods15.dyndns.org>
faust3
parents:
13787
diff
changeset
|
96 } |
13360 | 97 } |
27768
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
98 if(!vo_screenwidth){ |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
99 mp_msg(MSGT_VO, MSGL_WARN, "vo_cvidix: Screen width not set (see -screenw), assuming 640 pixels.\n"); |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
100 vo_screenwidth = 640; |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
101 } |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
102 if(!vo_screenheight){ |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
103 mp_msg(MSGT_VO, MSGL_WARN, "vo_cvidix: Screen height not set (see -screenh), assuming 480 pixels.\n"); |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
104 vo_screenheight = 480; |
ffd1bd7043e6
Improve error message when screen width and height are not set.
diego
parents:
27079
diff
changeset
|
105 } |
11232 | 106 swidth = width; |
107 sheight = height; | |
108 sformat = format; | |
109 vo_dwidth=d_width; | |
110 vo_dheight=d_height; | |
111 aspect_save_orig(width,height); | |
112 aspect_save_prescale(d_width,d_height); | |
113 aspect_save_screenres(vo_screenwidth,vo_screenheight); | |
114 if(!vo_geometry){ | |
115 vo_dx=0; | |
116 vo_dy=0; | |
117 } | |
118 else geometry(&vo_dx, &vo_dy, &vo_dwidth, &vo_dheight,vo_screenwidth,vo_screenheight); | |
119 return setup_vidix(); | |
120 } | |
121 | |
10979 | 122 static void check_events(void){ |
123 } | |
124 | |
36517 | 125 /* draw_osd, flip_page, draw_slice should be |
10979 | 126 overwritten with vidix functions (vosub_vidix.c) */ |
127 static void draw_osd(void){ | |
11019 | 128 mp_msg(MSGT_VO, MSGL_FATAL, "vo_cvidix: error: didn't use vidix draw_osd!\n"); |
10979 | 129 return; |
130 } | |
131 | |
132 static void flip_page(void){ | |
11019 | 133 mp_msg(MSGT_VO, MSGL_FATAL, "vo_cvidix: error: didn't use vidix flip_page!\n"); |
10979 | 134 return; |
135 } | |
136 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
137 static int draw_slice(uint8_t *src[], int stride[],int w, int h, int x, int y){ |
11019 | 138 mp_msg(MSGT_VO, MSGL_FATAL, "vo_cvidix: error: didn't use vidix draw_slice!\n"); |
10979 | 139 return -1; |
140 } | |
141 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
142 static int query_format(uint32_t format){ |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
143 return vidix_query_fourcc(format); |
10979 | 144 } |
145 | |
146 static void uninit(void){ | |
147 if(!vo_config_count) return; | |
148 vidix_term(); | |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32336
diff
changeset
|
149 free(vidix_name); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32336
diff
changeset
|
150 vidix_name = NULL; |
10979 | 151 } |
152 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
153 static int preinit(const char *arg){ |
10979 | 154 if(arg)vidix_name = strdup(arg); |
155 else { | |
11462 | 156 mp_msg(MSGT_VO, MSGL_INFO, "vo_cvidix: No vidix driver name provided, probing available ones (-v option for details)!\n"); |
10979 | 157 vidix_name = NULL; |
158 } | |
11019 | 159 if(vidix_preinit(vidix_name, &video_out_cvidix))return 1; |
10979 | 160 return 0; |
161 } | |
162 | |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
33301
diff
changeset
|
163 static int control(uint32_t request, void *data){ |
10979 | 164 switch (request) { |
165 case VOCTRL_QUERY_FORMAT: | |
166 return query_format(*((uint32_t*)data)); | |
11232 | 167 case VOCTRL_FULLSCREEN: |
168 if(vo_fs)vo_fs=0; | |
169 else vo_fs=1; | |
170 setup_vidix(); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
171 return VO_TRUE; |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
172 } |
10979 | 173 return vidix_control(request, data); |
174 } |