1
|
1 /*
|
|
2 * video_out.c,
|
|
3 *
|
|
4 * Copyright (C) Aaron Holtzman - June 2000
|
|
5 *
|
|
6 * mpeg2dec is free software; you can redistribute it and/or modify
|
|
7 * it under the terms of the GNU General Public License as published by
|
|
8 * the Free Software Foundation; either version 2, or (at your option)
|
|
9 * any later version.
|
|
10 *
|
|
11 * mpeg2dec is distributed in the hope that it will be useful,
|
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14 * GNU General Public License for more details.
|
|
15 *
|
|
16 * You should have received a copy of the GNU General Public License
|
|
17 * along with GNU Make; see the file COPYING. If not, write to
|
|
18 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
19 *
|
|
20 */
|
|
21
|
|
22 #include <stdio.h>
|
|
23 #include <stdlib.h>
|
|
24 #include <string.h>
|
|
25
|
|
26 #include <unistd.h>
|
|
27 #include <sys/mman.h>
|
|
28
|
|
29 #include "config.h"
|
|
30 #include "video_out.h"
|
|
31
|
|
32 #include "../linux/shmem.h"
|
|
33
|
388
|
34 // currect resolution/bpp on screen: (should be autodetected by vo_init())
|
|
35 int vo_depthonscreen=0;
|
|
36 int vo_screenwidth=0;
|
|
37 int vo_screenheight=0;
|
|
38
|
|
39 // requested resolution/bpp: (-x -y -bpp options)
|
|
40 int vo_dwidth=0;
|
|
41 int vo_dheight=0;
|
|
42 int vo_dbpp=0;
|
1149
|
43 int vo_doublebuffering = 0;
|
1269
|
44 int vo_fsmode = 0;
|
388
|
45
|
1184
|
46 char *vo_subdevice = NULL;
|
|
47
|
1
|
48 //
|
|
49 // Externally visible list of all vo drivers
|
|
50 //
|
|
51 extern vo_functions_t video_out_mga;
|
|
52 extern vo_functions_t video_out_xmga;
|
|
53 extern vo_functions_t video_out_x11;
|
|
54 extern vo_functions_t video_out_xv;
|
|
55 extern vo_functions_t video_out_gl;
|
12
|
56 extern vo_functions_t video_out_dga;
|
38
|
57 extern vo_functions_t video_out_fsdga;
|
1
|
58 extern vo_functions_t video_out_sdl;
|
|
59 extern vo_functions_t video_out_3dfx;
|
1979
|
60 extern vo_functions_t video_out_tdfxfb;
|
1
|
61 extern vo_functions_t video_out_null;
|
|
62 extern vo_functions_t video_out_odivx;
|
|
63 extern vo_functions_t video_out_pgm;
|
|
64 extern vo_functions_t video_out_md5;
|
|
65 extern vo_functions_t video_out_syncfb;
|
225
|
66 extern vo_functions_t video_out_fbdev;
|
286
|
67 extern vo_functions_t video_out_svga;
|
528
|
68 extern vo_functions_t video_out_png;
|
1130
|
69 extern vo_functions_t video_out_ggi;
|
1511
|
70 extern vo_functions_t video_out_aa;
|
1871
|
71 extern vo_functions_t video_out_mpegpes;
|
1
|
72
|
|
73 vo_functions_t* video_out_drivers[] =
|
|
74 {
|
1179
|
75 #ifdef HAVE_XMGA
|
1
|
76 &video_out_xmga,
|
|
77 #endif
|
1179
|
78 #ifdef HAVE_MGA
|
1
|
79 &video_out_mga,
|
|
80 #endif
|
|
81 #ifdef HAVE_SYNCFB
|
|
82 &video_out_syncfb,
|
|
83 #endif
|
|
84 #ifdef HAVE_3DFX
|
|
85 &video_out_3dfx,
|
|
86 #endif
|
1979
|
87 #ifdef HAVE_TDFXFB
|
|
88 &video_out_tdfxfb,
|
|
89 #endif
|
1
|
90 #ifdef HAVE_XV
|
|
91 &video_out_xv,
|
|
92 #endif
|
|
93 #ifdef HAVE_X11
|
|
94 &video_out_x11,
|
|
95 #endif
|
|
96 #ifdef HAVE_GL
|
|
97 &video_out_gl,
|
|
98 #endif
|
12
|
99 #ifdef HAVE_DGA
|
|
100 &video_out_dga,
|
1235
|
101 // &video_out_fsdga,
|
12
|
102 #endif
|
1
|
103 #ifdef HAVE_SDL
|
|
104 &video_out_sdl,
|
|
105 #endif
|
1235
|
106 #ifdef HAVE_GGI
|
|
107 &video_out_ggi,
|
|
108 #endif
|
234
|
109 #ifdef HAVE_FBDEV
|
|
110 &video_out_fbdev,
|
|
111 #endif
|
286
|
112 #ifdef HAVE_SVGALIB
|
|
113 &video_out_svga,
|
|
114 #endif
|
1511
|
115 #ifdef HAVE_AA
|
|
116 &video_out_aa,
|
|
117 #endif
|
|
118
|
529
|
119 #ifdef HAVE_PNG
|
|
120 &video_out_png,
|
|
121 #endif
|
1
|
122 &video_out_null,
|
|
123 &video_out_odivx,
|
|
124 &video_out_pgm,
|
|
125 &video_out_md5,
|
1871
|
126 &video_out_mpegpes,
|
1
|
127 NULL
|
|
128 };
|
|
129
|
202
|
130 #include "sub.c"
|
1130
|
131
|
|
132 char *vo_format_name(int format)
|
|
133 {
|
|
134 switch(format)
|
|
135 {
|
|
136 case IMGFMT_RGB8: return("RGB 8-bit");
|
|
137 case IMGFMT_RGB15: return("RGB 15-bit");
|
|
138 case IMGFMT_RGB16: return("RGB 16-bit");
|
|
139 case IMGFMT_RGB24: return("RGB 24-bit");
|
|
140 case IMGFMT_RGB32: return("RGB 32-bit");
|
|
141 case IMGFMT_BGR8: return("BGR 8-bit");
|
|
142 case IMGFMT_BGR15: return("BGR 15-bit");
|
|
143 case IMGFMT_BGR16: return("BGR 16-bit");
|
|
144 case IMGFMT_BGR24: return("BGR 24-bit");
|
|
145 case IMGFMT_BGR32: return("BGR 32-bit");
|
|
146 case IMGFMT_YVU9: return("Planar YVU9");
|
|
147 case IMGFMT_IF09: return("Planar IF09");
|
|
148 case IMGFMT_YV12: return("Planar YV12");
|
|
149 case IMGFMT_I420: return("Planar I420");
|
|
150 case IMGFMT_IYUV: return("Planar IYUV");
|
|
151 case IMGFMT_CLPL: return("Planar CLPL");
|
|
152 case IMGFMT_IYU1: return("Packed IYU1");
|
|
153 case IMGFMT_IYU2: return("Packed IYU2");
|
|
154 case IMGFMT_UYVY: return("Packed UYVY");
|
|
155 case IMGFMT_UYNV: return("Packed UYNV");
|
|
156 case IMGFMT_cyuv: return("Packed CYUV");
|
|
157 case IMGFMT_YUY2: return("Packed YUY2");
|
|
158 case IMGFMT_YUNV: return("Packed YUNV");
|
|
159 case IMGFMT_YVYU: return("Packed YVYU");
|
|
160 case IMGFMT_Y41P: return("Packed Y41P");
|
|
161 case IMGFMT_Y211: return("Packed Y211");
|
|
162 case IMGFMT_Y41T: return("Packed Y41T");
|
|
163 case IMGFMT_Y42T: return("Packed Y42T");
|
|
164 case IMGFMT_V422: return("Packed V422");
|
|
165 case IMGFMT_V655: return("Packed V655");
|
|
166 case IMGFMT_CLJR: return("Packed CLJR");
|
|
167 case IMGFMT_YUVP: return("Packed YUVP");
|
|
168 case IMGFMT_UYVP: return("Packed UYVP");
|
1871
|
169 case IMGFMT_MPEGPES: return("Mpeg PES");
|
1130
|
170 }
|
|
171 return("Unknown");
|
|
172 }
|