annotate libvo/vo_aa.c @ 1511:f29e0c2bb675

Added cool aalib vo driver.
author atmos4
date Tue, 14 Aug 2001 12:30:56 +0000
parents
children e0ceb814471d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
1 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
2 * MPlayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
3 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
4 * Video driver for AAlib - alpha version
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
5 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
6 * by Folke Ashberg <folke@ashberg.de>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
7 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
8 * Code started: Sun Aug 12 2001
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
9 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
10 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
11
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
12 #include <stdio.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
13 #include <stdlib.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
14
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
15
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
16 #include <limits.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
17 #include <math.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
18 #include <stdarg.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
19 #include <time.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
20 #include <string.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
21
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
22 #include "config.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
23 #include "video_out.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
24 #include "video_out_internal.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
25 #include "yuv2rgb.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
26 #include "sub.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
27
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
28 #include "linux/keycodes.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
29 #include <aalib.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
30
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
31 #define RGB 0
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
32 #define BGR 1
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
33
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
34 #define DO_INC(val,max,step) if (val + step <=max) val+=step; else val=max;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
35 #define DO_DEC(val,min,step) if (val - step >=min) val-=step; else val=min;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
36
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
37 #define MESSAGE_DURATION 3
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
38 #define MESSAGE_SIZE 512
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
39 #define MESSAGE_DEKO " +++ %s +++ "
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
40
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
41
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
42
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
43 LIBVO_EXTERN(aa)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
44
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
45 static vo_info_t vo_info = {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
46 "AAlib",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
47 "aa",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
48 "Folke Ashberg <folke@ashberg.de>",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
49 ""
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
50 };
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
51
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
52 /* aa's main context we use */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
53 aa_context *c;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
54 aa_renderparams *p;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
55 static int fast =0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
56 /* used for YV12 streams for the converted RGB image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
57 uint8_t * convertbuf=NULL;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
58
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
59 /* image infos */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
60 static int image_format, bpp=24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
61 static int image_width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
62 static int image_height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
63 static int bppmul;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
64
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
65 /* osd stuff */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
66 time_t stoposd = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
67 static int showosd = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
68 char osdtext[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
69 char posbar[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
70 static int osdx, osdy;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
71
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
72 /* for resizing/scaling */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
73 static int *stx;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
74 static int *sty;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
75 double accum;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
76
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
77 /* our version of the playmodes :) */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
78 static char * osdmodes[] ={ ">", "\"", "#", "-" , "+" };
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
79
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
80 extern void mplayer_put_key(int code);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
81
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
82
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
83 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
84 resize(void){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
85 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
86 * this function is called by aa lib if windows resizes
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
87 * further during init, because here we have to calculate
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
88 * a little bit
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
89 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
90
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
91 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
92 aa_resize(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
93
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
94 showosd=0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
95 osdy=aa_scrheight(c) - ( aa_scrheight(c)/10 );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
96
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
97 /* now calculating the needed values for resizing */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
98
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
99 /* We only need to use floating point to determine the correct
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
100 stretch vector for one line's worth. */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
101 stx = (int *) malloc(sizeof(int) * image_width);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
102 sty = (int *) malloc(sizeof(int) * image_height);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
103 accum = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
104 for (i=0; (i < image_width); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
105 int got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
106 accum += (double)aa_imgwidth(c)/(double)image_width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
107 got = (int) floor(accum);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
108 stx[i] = got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
109 accum -= got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
110 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
111 accum = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
112 for (i=0; (i < image_height); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
113 int got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
114 accum += (double)aa_imgheight(c)/(double)image_height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
115 got = (int) floor(accum);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
116 sty[i] = got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
117 accum -= got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
118 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
119 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
120
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
121 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
122 osdmessage(int duration, int deko, char *fmt, ...)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
123 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
124 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
125 * for outputting a centered string at the bottom
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
126 * of our window for a while
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
127 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
128 va_list ar;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
129 char m[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
130 va_start(ar, fmt);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
131 vsprintf(m, fmt, ar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
132 va_end(ar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
133 if (deko==1) sprintf(osdtext, MESSAGE_DEKO , m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
134 else strcpy(osdtext, m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
135 showosd=1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
136 stoposd = time(NULL) + duration;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
137 osdx=(aa_scrwidth(c) / 2) - (strlen(osdtext) / 2 ) ;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
138 posbar[0]='\0';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
139 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
140
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
141 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
142 osdpercent(int duration, int deko, int min, int max, int val, char * desc, char * unit)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
143 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
144 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
145 * prints a bar for setting values
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
146 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
147 float step;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
148 int where;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
149 char m[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
150 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
151 step=(float)aa_scrwidth(c) /(float)(max-min);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
152 where=(val-min)*step;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
153 sprintf(m,"%s: %i%s",desc, val, unit);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
154 if (deko==1) sprintf(osdtext, MESSAGE_DEKO , m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
155 else strcpy(osdtext, m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
156 posbar[0]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
157 posbar[aa_scrwidth(c)-1]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
158 for (i=0;i<aa_scrwidth(c);i++){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
159 if (i==where) posbar[i]='#';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
160 else posbar[i]='-';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
161 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
162 if (where!=0) posbar[0]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
163 if (where!=(aa_scrwidth(c)-1) ) posbar[aa_scrwidth(c)-1]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
164 /* snipp */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
165 posbar[aa_scrwidth(c)]='\0';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
166 showosd=1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
167 stoposd = time(NULL) + duration;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
168 osdx=(aa_scrwidth(c) / 2) - (strlen(osdtext) / 2 ) ;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
169 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
170
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
171 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
172 init(uint32_t width, uint32_t height, uint32_t d_width,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
173 uint32_t d_height, uint32_t fullscreen, char *title,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
174 uint32_t format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
175 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
176 * main init
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
177 * called by mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
178 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
179
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
180 switch(format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
181 case IMGFMT_BGR24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
182 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
183 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
184 case IMGFMT_RGB24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
185 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
186 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
187 case IMGFMT_YV12:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
188 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
189 /* YUV ? then initialize what we will need */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
190 convertbuf=malloc(width*height*3);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
191 yuv2rgb_init(24,MODE_BGR);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
192 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
193 default:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
194 return 1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
195 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
196 bppmul=bpp/8;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
197
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
198 /* initializing of aalib */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
199 aa_recommendhidisplay("curses");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
200 aa_recommendhidisplay("X11");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
201 aa_recommendlowdisplay("linux");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
202
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
203
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
204 c = aa_autoinit(&aa_defparams);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
205 aa_resizehandler(c, (void *)resize);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
206
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
207 if (c == NULL) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
208 printf("Can not intialize aalib\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
209 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
210 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
211 if (!aa_autoinitkbd(c,0)) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
212 printf("Can not intialize keyboard\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
213 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
214 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
215 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
216 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
217 if (!aa_autoinitmouse(c,0)) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
218 printf("Can not intialize mouse\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
219 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
220 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
221 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
222 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
223 aa_hidecursor(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
224 p = aa_getrenderparams();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
225
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
226 if ((strstr(c->driver->name,"curses")) || (strstr(c->driver->name,"libux")))
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
227 freopen("/dev/null", "w", stderr);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
228
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
229 image_height = height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
230 image_width = width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
231 image_format = format;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
232
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
233 /* needed by prepare_image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
234 stx = (int *) malloc(sizeof(int) * image_width);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
235 sty = (int *) malloc(sizeof(int) * image_height);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
236
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
237 /* nothing will change its size, be we need some values initialized */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
238 resize();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
239
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
240 /* say hello */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
241 osdmessage(5, 1, "Welcome to ASCII ARTS MPlayer");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
242
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
243 printf("VO: screendriver: %s\n", c->driver->name);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
244 printf("VO: keyboarddriver: %s\n", c->kbddriver->name);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
245 //printf("VO: mousedriver: %s\n", c->mousedriver->name);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
246
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
247 printf(
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
248 "\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
249 "\tAA-MPlayer Keys:\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
250 "\t1 : fast rendering\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
251 "\t2 : dithering\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
252 "\t3 : invert image\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
253 "\t4 : contrast -\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
254 "\t5 : contrast +\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
255 "\t6 : brightness -\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
256 "\t7 : brightness +\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
257 "\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
258 "All other keys are MPlayer standart\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
259
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
260
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
261 );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
262
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
263 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
264 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
265
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
266 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
267 query_format(uint32_t format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
268 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
269 * ...are we able to... ?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
270 * called by mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
271 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
272 switch(format){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
273 case IMGFMT_YV12:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
274 case IMGFMT_RGB|24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
275 case IMGFMT_BGR|24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
276 return 1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
277 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
278 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
279 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
280
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
281 static const vo_info_t*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
282 get_info(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
283 /* who i am? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
284 return (&vo_info);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
285 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
286
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
287 int
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
288 prepare_image(uint8_t *data, int inx, int iny, int outx, int outy){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
289 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
290 * copies an RGB-Image to the aalib imagebuffer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
291 * also scaling an grayscaling is done here
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
292 * show_image calls us
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
293 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
294
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
295 int value;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
296 int x, y;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
297 int tox, toy;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
298 int ydest;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
299 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
300 int pos;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
301
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
302 toy = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
303 for (y=0; (y < (0 + iny)); y++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
304 for (ydest=0; (ydest < sty[y-0]); ydest++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
305 tox = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
306 for (x=0; (x < (0 + inx)); x++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
307 if (!stx[x - 0]) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
308 continue;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
309 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
310 pos=3*(inx*y)+(3*x);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
311 value=(data[pos]+data[pos+1]+data[pos+2])/3;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
312 for (i=0; (i < stx[x - 0]); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
313 //printf("ToX: %i, ToY %i, i=%i, stx=%i, x=%i\n", tox, toy, i, stx[x], x);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
314 c->imagebuffer[(toy*outx) +tox]=value;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
315 tox++;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
316 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
317 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
318 toy++;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
319 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
320 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
321 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
322 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
323
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
324 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
325 printosd()
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
326 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
327 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
328 * places the mplayer status osd
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
329 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
330 if (vo_osd_text){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
331 if (vo_osd_text[0]-1<=5)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
332 aa_puts(c, 0,0, AA_BOLDFONT, osdmodes[vo_osd_text[0]-1]);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
333 else aa_puts(c, 0,0, AA_BOLDFONT, "?");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
334 aa_puts(c,1,0, AA_BOLDFONT, vo_osd_text+1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
335 aa_puts(c,strlen(vo_osd_text),0, AA_BOLDFONT, " ");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
336 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
337 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
338
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
339 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
340 show_image(uint8_t * src){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
341 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
342 * every frame (flip_page/draw_frame) we will be called
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
343 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
344
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
345 /* events? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
346 check_events();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
347
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
348 /* RGB->gray , scaling/resizing, stores data in aalib imgbuf */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
349 prepare_image( src, image_width, image_height,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
350 aa_imgwidth(c), aa_imgheight(c) );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
351
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
352 /* Now 'ASCIInate' the image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
353 if (fast)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
354 aa_fastrender(c, 0, 0, aa_scrwidth(c), aa_scrheight(c) );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
355 else
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
356 aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c));
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
357
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
358 /* do we have to put our osd to aa's txtbuf ? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
359 if (showosd)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
360 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
361 if (time(NULL)>=stoposd ) showosd=0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
362 /* update osd */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
363 aa_puts(c, osdx, osdy, AA_SPECIAL, osdtext);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
364 /* posbar? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
365 if (posbar[0]!='\0')
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
366 aa_puts(c, 0, osdy + 1, AA_SPECIAL, posbar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
367 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
368 /* and the real OSD, but only the time & playmode */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
369 printosd();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
370
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
371 /* print out */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
372 aa_flush(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
373 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
374
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
375 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
376 draw_frame(uint8_t *src[]) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
377 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
378 * RGB-Video's Only
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
379 * src[0] is handled bu prepare_image
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
380 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
381 show_image(src[0]);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
382 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
383 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
384
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
385 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
386 draw_slice(uint8_t *src[], int stride[],
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
387 int w, int h, int x, int y) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
388 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
389 * for MPGEGS YV12
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
390 * draw a rectangle converted to RGB to a
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
391 * temporary RGB Buffer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
392 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
393 uint8_t *dst;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
394
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
395 dst = convertbuf+(image_width * y + x) * 3;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
396 yuv2rgb(dst,src[0],src[1],src[2],w,h,image_width*3,stride[0],stride[1]);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
397
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
398 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
399 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
400
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
401 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
402 flip_page(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
403 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
404 * wow! another ready Image, so draw it !
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
405 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
406 if(image_format == IMGFMT_YV12)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
407 show_image(convertbuf);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
408 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
409
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
410 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
411 check_events(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
412 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
413 * any events?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
414 * called by show_image and mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
415 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
416 int key;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
417 while ((key=aa_getevent(c,0))!=AA_NONE ){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
418 if (key>255){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
419 /* some conversations */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
420 switch (key) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
421 case AA_UP:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
422 mplayer_put_key(KEY_UP);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
423 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
424 case AA_DOWN:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
425 mplayer_put_key(KEY_DOWN);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
426 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
427 case AA_LEFT:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
428 mplayer_put_key(KEY_LEFT);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
429 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
430 case AA_RIGHT:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
431 mplayer_put_key(KEY_RIGHT);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
432 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
433 case AA_ESC:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
434 mplayer_put_key(KEY_ESC);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
435 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
436 case 65765:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
437 mplayer_put_key(KEY_PAGE_UP);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
438 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
439 case 65766:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
440 mplayer_put_key(KEY_PAGE_DOWN);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
441 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
442 default:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
443 continue; /* aa lib special key */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
444 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
445 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
446 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
447 switch (key) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
448 /* AA image controls */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
449 case '1':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
450 fast=!fast;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
451 osdmessage(MESSAGE_DURATION, 1, "Fast mode is now %s", fast==1 ? "on" : "off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
452 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
453 case '2':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
454 if (p->dither==AA_FLOYD_S){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
455 p->dither=AA_NONE;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
456 osdmessage(MESSAGE_DURATION, 1, "Dithering: Off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
457 }else if (p->dither==AA_NONE){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
458 p->dither=AA_ERRORDISTRIB;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
459 osdmessage(MESSAGE_DURATION, 1, "Dithering: Error Distribution");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
460 }else if (p->dither==AA_ERRORDISTRIB){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
461 p->dither=AA_FLOYD_S;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
462 osdmessage(MESSAGE_DURATION, 1, "Dithering: Floyd Steinberg");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
463 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
464 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
465 case '3':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
466 p->inversion=!p->inversion;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
467 osdmessage(MESSAGE_DURATION, 1, "Invert mode is now %s",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
468 p->inversion==1 ? "on" : "off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
469 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
470
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
471 case '4': /* contrast */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
472 DO_DEC(p->contrast,0,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
473 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->contrast, "AA-Contrast", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
474
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
475 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
476 case '5': /* contrast */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
477 DO_INC(p->contrast,255,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
478 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->contrast, "AA-Contrast", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
479 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
480 case '6': /* brightness */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
481 DO_DEC(p->bright,0,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
482 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->bright, "AA-Brightnes", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
483 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
484 case '7': /* brightness */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
485 DO_INC(p->bright,255,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
486 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->bright, "AA-Brightnes", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
487 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
488
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
489 default :
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
490 /* nothing if we're interested in?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
491 * the mplayer should handle it!
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
492 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
493 mplayer_put_key(key);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
494 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
495 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
496 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
497 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
498
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
499 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
500 uninit(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
501 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
502 * THE END
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
503 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
504 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
505 free(stx);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
506 free(sty);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
507 if (convertbuf!=NULL) free(convertbuf);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
508 if (strstr(c->driver->name,"curses") || strstr(c->driver->name,"libux"))
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
509 freopen("/dev/tty", "w", stderr);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
510 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
512 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
513 draw_osd(void){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
514 }