annotate libvo/osd.c @ 14742:76d461a061df

Unified colorkey code for vo xv and vo xvmc. Made the code also more flexible. Colorkey drawing is now by default done as proposed by Marko Macek. Patch also approved by iive.
author al
date Sun, 20 Feb 2005 22:43:25 +0000
parents e047e70a9767
children f580a7755ac5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
1 // Generic alpha renderers for all YUV modes and RGB depths.
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
2 // These are "reference implementations", should be optimized later (MMX, etc)
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
3 // Templating Code from Michael Niedermayer (michaelni@gmx.at) is under GPL
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
4
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
5 //#define FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
6 //#define FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
7
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
8 #include "config.h"
622
6737025afed0 to be sure in that header is okey
arpi_esp
parents: 326
diff changeset
9 #include "osd.h"
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
10 #include "mp_msg.h"
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
11 #include <inttypes.h>
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13720
diff changeset
12 #include "cpudetect.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13720
diff changeset
13 #include "mangle.h"
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
14
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
15 extern int verbose; // defined in mplayer.c
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
16
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
17 #if defined(ARCH_X86) || defined(ARCH_X86_64)
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
18 #define CAN_COMPILE_X86_ASM
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
19 #endif
622
6737025afed0 to be sure in that header is okey
arpi_esp
parents: 326
diff changeset
20
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
21 #ifdef CAN_COMPILE_X86_ASM
12292
114f3d149324 attribute_used for gcc3.4
alex
parents: 11000
diff changeset
22 static const uint64_t bFF attribute_used __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
2839
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
23 static const unsigned long long mask24lh __attribute__((aligned(8))) = 0xFFFF000000000000ULL;
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
24 static const unsigned long long mask24hl __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL;
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
25 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
26
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
27 //Note: we have C, X86-nommx, MMX, MMX2, 3DNOW version therse no 3DNOW+MMX2 one
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
28 //Plain C versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
29 #if !defined (HAVE_MMX) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
30 #define COMPILE_C
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
31 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
32
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
33 #ifdef CAN_COMPILE_X86_ASM
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
34
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
35 #if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
36 #define COMPILE_MMX
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
37 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
38
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
39 #if defined (HAVE_MMX2) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
40 #define COMPILE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
41 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
42
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
43 #if (defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
44 #define COMPILE_3DNOW
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
45 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
46 #endif //CAN_COMPILE_X86_ASM
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
47
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
48 #undef HAVE_MMX
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
49 #undef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
50 #undef HAVE_3DNOW
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
51
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
52 #ifndef CAN_COMPILE_X86_ASM
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
53
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
54 #ifdef COMPILE_C
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
55 #undef HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
56 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
57 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
58 #define RENAME(a) a ## _C
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
59 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
60 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
61
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
62 #else
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
63
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
64 //X86 noMMX versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
65 #ifdef COMPILE_C
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
66 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
67 #undef HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
68 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
69 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
70 #define RENAME(a) a ## _X86
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
71 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
72 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
73
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
74 //MMX versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
75 #ifdef COMPILE_MMX
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
76 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
77 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
78 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
79 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
80 #define RENAME(a) a ## _MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
81 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
82 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
83
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
84 //MMX2 versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
85 #ifdef COMPILE_MMX2
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
86 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
87 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
88 #define HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
89 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
90 #define RENAME(a) a ## _MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
91 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
92 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
93
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
94 //3DNOW versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
95 #ifdef COMPILE_3DNOW
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
96 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
97 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
98 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
99 #define HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
100 #define RENAME(a) a ## _3DNow
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
101 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
102 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
103
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
104 #endif //CAN_COMPILE_X86_ASM
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
105
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
106 void vo_draw_alpha_yv12(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
107 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
108 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
109 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
110 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
111 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
112 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
113 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
114 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
115 vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
116 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
117 vo_draw_alpha_yv12_X86(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
118 #else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
119 vo_draw_alpha_yv12_C(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
120 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
121 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
122 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
123 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
124 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
125 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
126 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
127 vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride);
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
128 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
129 vo_draw_alpha_yv12_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
130 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
131 vo_draw_alpha_yv12_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
132 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
133 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
134 }
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
135
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
136 void vo_draw_alpha_yuy2(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
137 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
138 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
139 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
140 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
141 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
142 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
143 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
144 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
145 vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
146 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
147 vo_draw_alpha_yuy2_X86(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
148 #else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
149 vo_draw_alpha_yuy2_C(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
150 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
151 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
152 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
153 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
154 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
155 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
156 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
157 vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride);
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
158 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
159 vo_draw_alpha_yuy2_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
160 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
161 vo_draw_alpha_yuy2_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
162 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
163 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
164 }
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
165
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
166 void vo_draw_alpha_uyvy(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
167 #ifdef RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
168 #ifdef CAN_COMPILE_X86_ASM
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
169 // ordered by speed / fastest first
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
170 if(gCpuCaps.hasMMX2)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
171 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
172 else if(gCpuCaps.has3DNow)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
173 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
174 else if(gCpuCaps.hasMMX)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
175 vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
176 else
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
177 vo_draw_alpha_uyvy_X86(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
178 #else
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
179 vo_draw_alpha_uyvy_C(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
180 #endif
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
181 #else //RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
182 #ifdef HAVE_MMX2
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
183 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
184 #elif defined (HAVE_3DNOW)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
185 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
186 #elif defined (HAVE_MMX)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
187 vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride);
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
188 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
189 vo_draw_alpha_uyvy_X86(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
190 #else
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
191 vo_draw_alpha_uyvy_C(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
192 #endif
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
193 #endif //!RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
194 }
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
195
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
196 void vo_draw_alpha_rgb24(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
197 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
198 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
199 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
200 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
201 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
202 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
203 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
204 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
205 vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
206 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
207 vo_draw_alpha_rgb24_X86(w, h, src, srca, srcstride, dstbase, dststride);
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
208 #else
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
209 vo_draw_alpha_rgb24_C(w, h, src, srca, srcstride, dstbase, dststride);
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
210 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
211 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
212 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
213 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
214 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
215 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
216 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
217 vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride);
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
218 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
219 vo_draw_alpha_rgb24_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
220 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
221 vo_draw_alpha_rgb24_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
222 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
223 #endif //!RUNTIME_CPUDETECT
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
224 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
225
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
226 void vo_draw_alpha_rgb32(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
227 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
228 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
229 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
230 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
231 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
232 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
233 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
234 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
235 vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
236 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
237 vo_draw_alpha_rgb32_X86(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
238 #else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
239 vo_draw_alpha_rgb32_C(w, h, src, srca, srcstride, dstbase, dststride);
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
240 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
241 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
242 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
243 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
244 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
245 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
246 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
247 vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride);
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
248 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
249 vo_draw_alpha_rgb32_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
250 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
251 vo_draw_alpha_rgb32_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
252 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
253 #endif //!RUNTIME_CPUDETECT
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
254 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
255
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
256 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
257 static unsigned short fast_osd_15bpp_table[256];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
258 static unsigned short fast_osd_16bpp_table[256];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
259 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
260
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
261 void vo_draw_alpha_init(){
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
262 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
263 int i;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
264 for(i=0;i<256;i++){
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
265 fast_osd_15bpp_table[i]=((i>>3)<<10)|((i>>3)<<5)|(i>>3);
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
266 fast_osd_16bpp_table[i]=((i>>3)<<11)|((i>>2)<<5)|(i>>3);
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
267 }
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
268 #endif
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10516
diff changeset
269 //FIXME the optimized stuff is a lie for 15/16bpp as they aren't optimized yet
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
270 if(verbose)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
271 {
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
272 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
273 #ifdef CAN_COMPILE_X86_ASM
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
274 // ordered per speed fasterst first
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
275 if(gCpuCaps.hasMMX2)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
276 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
277 else if(gCpuCaps.has3DNow)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
278 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit 3DNow) Optimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
279 else if(gCpuCaps.hasMMX)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
280 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX Optimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
281 else
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
282 mp_msg(MSGT_OSD,MSGL_INFO,"Using X86 Optimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
283 #else
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
284 mp_msg(MSGT_OSD,MSGL_INFO,"Using Unoptimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
285 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
286 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
287 #ifdef HAVE_MMX2
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
288 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
289 #elif defined (HAVE_3DNOW)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
290 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX (with tiny bit 3DNow) Optimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
291 #elif defined (HAVE_MMX)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
292 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX Optimized OnScreenDisplay\n");
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
293 #elif defined(ARCH_X86) || defined(ARCH_X86_64)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
294 mp_msg(MSGT_OSD,MSGL_INFO,"Using X86 Optimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
295 #else
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
296 mp_msg(MSGT_OSD,MSGL_INFO,"Using Unoptimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
297 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
298 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
299 }
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
300 }
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
301
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
302 void vo_draw_alpha_rgb15(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
303 int y;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
304 for(y=0;y<h;y++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
305 register unsigned short *dst = (unsigned short*) dstbase;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
306 register int x;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
307 for(x=0;x<w;x++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
308 if(srca[x]){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
309 #ifdef FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
310 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
311 dst[x]=fast_osd_15bpp_table[src[x]];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
312 #else
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
313 register unsigned int a=src[x]>>3;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
314 dst[x]=(a<<10)|(a<<5)|a;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
315 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
316 #else
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
317 unsigned char r=dst[x]&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
318 unsigned char g=(dst[x]>>5)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
319 unsigned char b=(dst[x]>>10)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
320 r=(((r*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
321 g=(((g*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
322 b=(((b*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
323 dst[x]=(b<<10)|(g<<5)|r;
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
324 #endif
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
325 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
326 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
327 src+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
328 srca+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
329 dstbase+=dststride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
330 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
331 return;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
332 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
333
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
334 void vo_draw_alpha_rgb16(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
335 int y;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
336 for(y=0;y<h;y++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
337 register unsigned short *dst = (unsigned short*) dstbase;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
338 register int x;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
339 for(x=0;x<w;x++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
340 if(srca[x]){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
341 #ifdef FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
342 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
343 dst[x]=fast_osd_16bpp_table[src[x]];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
344 #else
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
345 dst[x]=((src[x]>>3)<<11)|((src[x]>>2)<<5)|(src[x]>>3);
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
346 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
347 #else
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
348 unsigned char r=dst[x]&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
349 unsigned char g=(dst[x]>>5)&0x3F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
350 unsigned char b=(dst[x]>>11)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
351 r=(((r*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
352 g=(((g*srca[x])>>6)+src[x])>>2;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
353 b=(((b*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
354 dst[x]=(b<<11)|(g<<5)|r;
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
355 #endif
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
356 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
357 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
358 src+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
359 srca+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
360 dstbase+=dststride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
361 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
362 return;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
363 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
364