annotate libvo/vo_aa.c @ 1537:7bdf6a585b67

All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
author folke
date Wed, 15 Aug 2001 19:27:57 +0000
parents 187aa4b576a7
children f3f4fc77fd88
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
1 / /* configuration */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
2 /*
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
3 if (osdcolor;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
4 int subcolor;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
5 int extended;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
6 int eight;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
7 char *driver;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
8 char *font;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
9 int dim;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
10 int bold;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
11 int reverse;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
12 int normal;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
13 int boldfont;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
14
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
15 int inverse;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
16 int bright;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
17 int contrast;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
18 int gamma;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
19 int dimmul;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
20 int boldmul;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
21 */*
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
22 * MPlayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
23 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
24 * Video driver for AAlib - alpha version
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
25 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
26 * by Folke Ashberg <folke@ashberg.de>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
27 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
28 * Code started: Sun Aug 12 2001
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
29 *
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
30 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
31
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
32 #include <stdio.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
33 #include <stdlib.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
34
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
35
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
36 #include <limits.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
37 #include <math.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
38 #include <stdarg.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
39 #include <time.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
40 #include <string.h>
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
41
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
42 #include "config.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
43 #include "video_out.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
44 #include "video_out_internal.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
45 #include "yuv2rgb.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
46 #include "sub.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
47
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
48 #include "linux/keycodes.h"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
49 #include <aalib.h>
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
50 #include "cfgparser.h"
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
51
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
52 #define RGB 0
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
53 #define BGR 1
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
54
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
55 #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
56 #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
57
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
58 #define MESSAGE_DURATION 3
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
59 #define MESSAGE_SIZE 512
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
60 #define MESSAGE_DEKO " +++ %s +++ "
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
61
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
62
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
63
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
64 LIBVO_EXTERN(aa)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
65
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
66 static vo_info_t vo_info = {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
67 "AAlib",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
68 "aa",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
69 "Folke Ashberg <folke@ashberg.de>",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
70 ""
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
71 };
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
72
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
73 /* aa's main context we use */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
74 aa_context *c;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
75 aa_renderparams *p;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
76 static int fast =0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
77 /* used for YV12 streams for the converted RGB image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
78 uint8_t * convertbuf=NULL;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
79
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
80 /* image infos */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
81 static int image_format, bpp=24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
82 static int image_width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
83 static int image_height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
84 static int bppmul;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
85
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
86 /* osd stuff */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
87 time_t stoposd = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
88 static int showosd = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
89 char osdtext[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
90 char posbar[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
91 static int osdx, osdy;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
92
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
93 /* for resizing/scaling */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
94 static int *stx;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
95 static int *sty;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
96 double accum;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
97
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
98 /* our version of the playmodes :) */
1527
187aa4b576a7 Fix OSD, small misspelling.
atmos4
parents: 1520
diff changeset
99 static char * osdmodes[] ={ "|>", "||", "[]", "<<" , ">>" };
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
100
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
101 extern void mplayer_put_key(int code);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
102
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
103 /* to disable stdout outputs when curses/linux mode */
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
104 extern int quiet;
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
105
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
106 /* configuration */
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
107 int aaopt_osdcolor = AA_SPECIAL;
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
108 int aaopt_subcolor = AA_SPECIAL;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
109
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
110 extern struct aa_hardware_params aa_defparams;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
111 extern struct aa_renderparams aa_defrenderparams;
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
112
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
113 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
114 resize(void){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
115 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
116 * this function is called by aa lib if windows resizes
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
117 * further during init, because here we have to calculate
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
118 * a little bit
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 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
122 aa_resize(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
123
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
124 showosd=0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
125 osdy=aa_scrheight(c) - ( aa_scrheight(c)/10 );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
126
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
127 /* now calculating the needed values for resizing */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
128
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
129 /* We only need to use floating point to determine the correct
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
130 stretch vector for one line's worth. */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
131 stx = (int *) malloc(sizeof(int) * image_width);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
132 sty = (int *) malloc(sizeof(int) * image_height);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
133 accum = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
134 for (i=0; (i < image_width); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
135 int got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
136 accum += (double)aa_imgwidth(c)/(double)image_width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
137 got = (int) floor(accum);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
138 stx[i] = got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
139 accum -= got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
140 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
141 accum = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
142 for (i=0; (i < image_height); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
143 int got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
144 accum += (double)aa_imgheight(c)/(double)image_height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
145 got = (int) floor(accum);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
146 sty[i] = got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
147 accum -= got;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
148 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
149 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
150
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
151 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
152 osdmessage(int duration, int deko, char *fmt, ...)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
153 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
154 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
155 * for outputting a centered string at the bottom
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
156 * of our window for a while
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
157 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
158 va_list ar;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
159 char m[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
160 va_start(ar, fmt);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
161 vsprintf(m, fmt, ar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
162 va_end(ar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
163 if (deko==1) sprintf(osdtext, MESSAGE_DEKO , m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
164 else strcpy(osdtext, m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
165 showosd=1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
166 stoposd = time(NULL) + duration;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
167 osdx=(aa_scrwidth(c) / 2) - (strlen(osdtext) / 2 ) ;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
168 posbar[0]='\0';
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 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
172 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
173 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
174 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
175 * prints a bar for setting values
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
176 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
177 float step;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
178 int where;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
179 char m[MESSAGE_SIZE];
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
180 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
181 step=(float)aa_scrwidth(c) /(float)(max-min);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
182 where=(val-min)*step;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
183 sprintf(m,"%s: %i%s",desc, val, unit);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
184 if (deko==1) sprintf(osdtext, MESSAGE_DEKO , m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
185 else strcpy(osdtext, m);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
186 posbar[0]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
187 posbar[aa_scrwidth(c)-1]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
188 for (i=0;i<aa_scrwidth(c);i++){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
189 if (i==where) posbar[i]='#';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
190 else posbar[i]='-';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
191 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
192 if (where!=0) posbar[0]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
193 if (where!=(aa_scrwidth(c)-1) ) posbar[aa_scrwidth(c)-1]='|';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
194 /* snipp */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
195 posbar[aa_scrwidth(c)]='\0';
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
196 showosd=1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
197 stoposd = time(NULL) + duration;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
198 osdx=(aa_scrwidth(c) / 2) - (strlen(osdtext) / 2 ) ;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
199 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
200
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
201 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
202 init(uint32_t width, uint32_t height, uint32_t d_width,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
203 uint32_t d_height, uint32_t fullscreen, char *title,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
204 uint32_t format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
205 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
206 * main init
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
207 * called by mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
208 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
209
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
210 switch(format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
211 case IMGFMT_BGR24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
212 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
213 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
214 case IMGFMT_RGB24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
215 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
216 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
217 case IMGFMT_YV12:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
218 bpp = 24;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
219 /* YUV ? then initialize what we will need */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
220 convertbuf=malloc(width*height*3);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
221 yuv2rgb_init(24,MODE_BGR);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
222 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
223 default:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
224 return 1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
225 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
226 bppmul=bpp/8;
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
227
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
228
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
229 /* initializing of aalib */
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
230 /*
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
231 TODO check /dev/vcsa
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
232 aa_recommendhidisplay("curses");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
233 aa_recommendhidisplay("X11");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
234 aa_recommendlowdisplay("linux");
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
235 */
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
236
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
237 c = aa_autoinit(&aa_defparams);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
238 aa_resizehandler(c, (void *)resize);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
239
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
240 if (c == NULL) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
241 printf("Can not intialize aalib\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
242 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
243 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
244 if (!aa_autoinitkbd(c,0)) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
245 printf("Can not intialize keyboard\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
246 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
247 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
248 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
249 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
250 if (!aa_autoinitmouse(c,0)) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
251 printf("Can not intialize mouse\n");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
252 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
253 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
254 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
255 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
256 aa_hidecursor(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
257 p = aa_getrenderparams();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
258
1520
c156984e545e write fault error fixed
folke
parents: 1518
diff changeset
259 if ((strstr(c->driver->name,"Curses")) || (strstr(c->driver->name,"Linux"))){
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
260 freopen("/dev/null", "w", stderr);
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
261 quiet=1; /* disable mplayer outputs */
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
262 }
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
263
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
264 image_height = height;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
265 image_width = width;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
266 image_format = format;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
267
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
268 /* needed by prepare_image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
269 stx = (int *) malloc(sizeof(int) * image_width);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
270 sty = (int *) malloc(sizeof(int) * image_height);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
271
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
272 /* nothing will change its size, be we need some values initialized */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
273 resize();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
274
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
275 /* say hello */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
276 osdmessage(5, 1, "Welcome to ASCII ARTS MPlayer");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
277
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
278 printf("VO: [aa] screendriver: %s\n", c->driver->name);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
279 printf("VO: [aa] keyboarddriver: %s\n", c->kbddriver->name);
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
280 //printf("VO: mousedriver: %s\n", c->mousedriver->name);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
281
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
282 printf(
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
283 "\n"
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
284 "Important Options\n"
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
285 "\t-aaextended use use all 256 characters\n"
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
286 "\t-aaeight use eight bit ascii\n"
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
287 "\t-aadriver set recommended aalib driver (X11,curses,linux)\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
288 "\t-aahelp to see all options provided by aalib\n"
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
289 "\n"
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
290 "AA-MPlayer Keys:\n"
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
291 "\t1 : fast rendering\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
292 "\t2 : dithering\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
293 "\t3 : invert image\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
294 "\t4 : contrast -\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
295 "\t5 : contrast +\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
296 "\t6 : brightness -\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
297 "\t7 : brightness +\n"
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
298 "\n"
1527
187aa4b576a7 Fix OSD, small misspelling.
atmos4
parents: 1520
diff changeset
299 "All other keys are MPlayer defaults.\n"
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
300
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
301
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
302 );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
303
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
304 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
305 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
306
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
307 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
308 query_format(uint32_t format) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
309 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
310 * ...are we able to... ?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
311 * called by mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
312 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
313 switch(format){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
314 case IMGFMT_YV12:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
315 case IMGFMT_RGB|24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
316 case IMGFMT_BGR|24:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
317 return 1;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
318 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
319 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
320 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
321
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
322 static const vo_info_t*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
323 get_info(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
324 /* who i am? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
325 return (&vo_info);
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 int
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
329 prepare_image(uint8_t *data, int inx, int iny, int outx, int outy){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
330 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
331 * copies an RGB-Image to the aalib imagebuffer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
332 * also scaling an grayscaling is done here
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
333 * show_image calls us
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
334 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
335
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
336 int value;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
337 int x, y;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
338 int tox, toy;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
339 int ydest;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
340 int i;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
341 int pos;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
342
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
343 toy = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
344 for (y=0; (y < (0 + iny)); y++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
345 for (ydest=0; (ydest < sty[y-0]); ydest++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
346 tox = 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
347 for (x=0; (x < (0 + inx)); x++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
348 if (!stx[x - 0]) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
349 continue;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
350 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
351 pos=3*(inx*y)+(3*x);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
352 value=(data[pos]+data[pos+1]+data[pos+2])/3;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
353 for (i=0; (i < stx[x - 0]); i++) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
354 //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
355 c->imagebuffer[(toy*outx) +tox]=value;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
356 tox++;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
357 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
358 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
359 toy++;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
360 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
361 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
362 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
363 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
364
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
365 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
366 printosd()
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
367 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
368 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
369 * places the mplayer status osd
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
370 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
371 if (vo_osd_text){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
372 if (vo_osd_text[0]-1<=5)
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
373 aa_puts(c, 0,0, aaopt_osdcolor, osdmodes[vo_osd_text[0]-1]);
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
374 else aa_puts(c, 0,0, aaopt_osdcolor, "?");
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
375 aa_puts(c,2,0, aaopt_osdcolor, vo_osd_text+1);
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
376 aa_puts(c,strlen(vo_osd_text)+1,0, aaopt_osdcolor, " ");
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
377 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
378 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
379
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
380 void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
381 show_image(uint8_t * src){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
382 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
383 * every frame (flip_page/draw_frame) we will be called
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
384 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
385
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
386 /* events? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
387 check_events();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
388
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
389 /* RGB->gray , scaling/resizing, stores data in aalib imgbuf */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
390 prepare_image( src, image_width, image_height,
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
391 aa_imgwidth(c), aa_imgheight(c) );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
392
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
393 /* Now 'ASCIInate' the image */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
394 if (fast)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
395 aa_fastrender(c, 0, 0, aa_scrwidth(c), aa_scrheight(c) );
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
396 else
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
397 aa_render(c, p, 0, 0, aa_scrwidth(c), aa_scrheight(c));
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
398
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
399 /* do we have to put our osd to aa's txtbuf ? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
400 if (showosd)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
401 {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
402 if (time(NULL)>=stoposd ) showosd=0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
403 /* update osd */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
404 aa_puts(c, osdx, osdy, AA_SPECIAL, osdtext);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
405 /* posbar? */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
406 if (posbar[0]!='\0')
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
407 aa_puts(c, 0, osdy + 1, AA_SPECIAL, posbar);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
408 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
409 /* and the real OSD, but only the time & playmode */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
410 printosd();
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
411
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
412 /* print out */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
413 aa_flush(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
414 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
415
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
416 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
417 draw_frame(uint8_t *src[]) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
418 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
419 * RGB-Video's Only
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
420 * src[0] is handled bu prepare_image
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
421 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
422 show_image(src[0]);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
423 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
424 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
425
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
426 static uint32_t
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
427 draw_slice(uint8_t *src[], int stride[],
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
428 int w, int h, int x, int y) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
429 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
430 * for MPGEGS YV12
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
431 * draw a rectangle converted to RGB to a
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
432 * temporary RGB Buffer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
433 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
434 uint8_t *dst;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
435
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
436 dst = convertbuf+(image_width * y + x) * 3;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
437 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
438
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
439 return 0;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
440 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
441
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
442 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
443 flip_page(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
444 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
445 * wow! another ready Image, so draw it !
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
446 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
447 if(image_format == IMGFMT_YV12)
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
448 show_image(convertbuf);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
449 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
450
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
451 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
452 check_events(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
453 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
454 * any events?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
455 * called by show_image and mplayer
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
456 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
457 int key;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
458 while ((key=aa_getevent(c,0))!=AA_NONE ){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
459 if (key>255){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
460 /* some conversations */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
461 switch (key) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
462 case AA_UP:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
463 mplayer_put_key(KEY_UP);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
464 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
465 case AA_DOWN:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
466 mplayer_put_key(KEY_DOWN);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
467 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
468 case AA_LEFT:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
469 mplayer_put_key(KEY_LEFT);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
470 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
471 case AA_RIGHT:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
472 mplayer_put_key(KEY_RIGHT);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
473 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
474 case AA_ESC:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
475 mplayer_put_key(KEY_ESC);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
476 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
477 case 65765:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
478 mplayer_put_key(KEY_PAGE_UP);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
479 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
480 case 65766:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
481 mplayer_put_key(KEY_PAGE_DOWN);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
482 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
483 default:
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
484 continue; /* aa lib special key */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
485 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
486 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
487 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
488 switch (key) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
489 /* AA image controls */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
490 case '1':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
491 fast=!fast;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
492 osdmessage(MESSAGE_DURATION, 1, "Fast mode is now %s", fast==1 ? "on" : "off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
493 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
494 case '2':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
495 if (p->dither==AA_FLOYD_S){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
496 p->dither=AA_NONE;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
497 osdmessage(MESSAGE_DURATION, 1, "Dithering: Off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
498 }else if (p->dither==AA_NONE){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
499 p->dither=AA_ERRORDISTRIB;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
500 osdmessage(MESSAGE_DURATION, 1, "Dithering: Error Distribution");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
501 }else if (p->dither==AA_ERRORDISTRIB){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
502 p->dither=AA_FLOYD_S;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
503 osdmessage(MESSAGE_DURATION, 1, "Dithering: Floyd Steinberg");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
504 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
505 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
506 case '3':
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
507 p->inversion=!p->inversion;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
508 osdmessage(MESSAGE_DURATION, 1, "Invert mode is now %s",
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
509 p->inversion==1 ? "on" : "off");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
510 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
512 case '4': /* contrast */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
513 DO_DEC(p->contrast,0,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
514 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->contrast, "AA-Contrast", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
515
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
516 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
517 case '5': /* contrast */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
518 DO_INC(p->contrast,255,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
519 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->contrast, "AA-Contrast", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
520 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
521 case '6': /* brightness */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
522 DO_DEC(p->bright,0,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
523 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->bright, "AA-Brightnes", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
524 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
525 case '7': /* brightness */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
526 DO_INC(p->bright,255,1);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
527 osdpercent(MESSAGE_DURATION, 1, 0, 255, p->bright, "AA-Brightnes", "");
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
528 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
529
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
530 default :
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
531 /* nothing if we're interested in?
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
532 * the mplayer should handle it!
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
533 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
534 mplayer_put_key(key);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
535 break;
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
536 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
537 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
538 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
539
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
540 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
541 uninit(void) {
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
542 /*
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
543 * THE END
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
544 */
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
545 aa_close(c);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
546 free(stx);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
547 free(sty);
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
548 if (convertbuf!=NULL) free(convertbuf);
1520
c156984e545e write fault error fixed
folke
parents: 1518
diff changeset
549 if (strstr(c->driver->name,"Curses") || strstr(c->driver->name,"Linux")){
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
550 freopen("/dev/tty", "w", stderr);
1518
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
551 quiet=0; /* enable mplayer outputs */
e0ceb814471d vo_aa: configurable now
folke
parents: 1511
diff changeset
552 }
1511
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
553 }
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
554
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
555 static void
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
556 draw_osd(void){
f29e0c2bb675 Added cool aalib vo driver.
atmos4
parents:
diff changeset
557 }
1537
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
558
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
559 int
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
560 getcolor(char * s){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
561 int i;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
562 char * rest;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
563 if (s==NULL) return -1;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
564 i=strtol(s, &rest, 10);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
565 if ((rest==NULL || strlen(rest)==0) && i>=0 && i<=5) return i;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
566 if (!strcasecmp(s, "normal")) return AA_NORMAL;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
567 else if (!strcasecmp(s, "dim")) return AA_DIM;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
568 else if (!strcasecmp(s, "bold")) return AA_BOLD;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
569 else if (!strcasecmp(s, "boldfont")) return AA_BOLDFONT;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
570 else if (!strcasecmp(s, "special")) return AA_SPECIAL;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
571 else return -1;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
572 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
573
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
574 int
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
575 vo_aa_parseoption(struct config * conf, char *opt, char *param){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
576 /* got an option starting with aa */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
577 char *pseudoargv[3];
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
578 int pseudoargc;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
579 char * x, *help;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
580 int i;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
581 /* do WE need it ? */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
582 if (!strcasecmp(opt, "aaosdcolor")){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
583 if (param==NULL) return ERR_MISSING_PARAM;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
584 if ((i=getcolor(param))==-1) return ERR_OUT_OF_RANGE;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
585 aaopt_osdcolor=i;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
586 return 1;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
587 }else if (!strcasecmp(opt, "aasubcolor")){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
588 if ((i=getcolor(param))==-1) return ERR_OUT_OF_RANGE;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
589 aaopt_subcolor=i;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
590 return 1;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
591 }else if (!strcasecmp(opt, "aahelp")){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
592 printf("Here are the aalib options:\n");
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
593 help=strdup(aa_help); /* aa_help is const :( */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
594 x=strtok(help,"-");
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
595 printf(x);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
596 while (x=strtok(NULL, "-")){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
597 if (*(x-2)==' ') printf("-aa");
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
598 else printf("-");
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
599 printf("%s", x);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
600 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
601 printf(
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
602 "\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
603 "\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
604 "Additional options vo_aa provides:\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
605 " -aaosdcolor set osd color\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
606 " -aasubcolor set subtitle color\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
607 " the color params are:\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
608 " 0 : normal\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
609 " 1 : dark\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
610 " 2 : bold\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
611 " 3 : boldfont\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
612 " 4 : reverse\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
613 " 6 : special\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
614 "\n\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
615 " dT8 8Tb\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
616 " dT 8 8 Tb\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
617 " dT 8 8 Tb\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
618 " <PROJECT><PROJECT>\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
619 " dT 8 8 Tb\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
620 " dT 8 8 Tb\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
621 "\n"
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
622
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
623 );
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
624 exit(0);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
625
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
626 }else{
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
627 /* parse param to aalib */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
628 pseudoargv[1]=malloc(strlen(opt));
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
629 pseudoargv[3]=NULL;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
630 sprintf(pseudoargv[1], "-%s", opt+2);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
631 if (param!=NULL){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
632 pseudoargv[2]=param;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
633 pseudoargc=3;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
634 }else{
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
635 pseudoargv[2]=NULL;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
636 pseudoargc=2;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
637 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
638 fprintf(stderr,"VO: [aa] ");
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
639 i=aa_parseoptions(&aa_defparams, &aa_defrenderparams, &pseudoargc, pseudoargv);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
640 if (i!=1){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
641 return ERR_MISSING_PARAM;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
642 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
643 if (pseudoargv[1]!=NULL){
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
644 /* aalib has given param back */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
645 fprintf(stderr," Parameter -%s accepted\n", opt, param);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
646 return 0; /* param could be the filename */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
647 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
648 fprintf(stderr," Parameter -%s %s accepted\n", opt, param==NULL ? "" : param);
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
649 return 1; /* all opt & params accepted */
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
650
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
651 }
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
652 return ERR_NOT_AN_OPTION;
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
653
7bdf6a585b67 All aalib options can be passed to aalib (-aaXXX), also -aahelp is new
folke
parents: 1527
diff changeset
654 }