annotate libvo/osd.c @ 26730:41794a5fb100

Add a new suboption to -vo xv and -vo xvmc that allows selection of XVideo adaptor to be used (instead of default one, which is #0). This is useful for example if you'd rather like to use the original Overlay renderer of your GPU instead of the texture blitting engine (which is usually default), which is number one cause of nasty video tearing effects.
author ben
date Tue, 13 May 2008 17:52:25 +0000
parents 7a1397677cb3
children 7e09ce31f426
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
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
15 #ifdef ARCH_X86
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
16 #define CAN_COMPILE_X86_ASM
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
17 #endif
622
6737025afed0 to be sure in that header is okey
arpi_esp
parents: 326
diff changeset
18
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
19 #ifdef CAN_COMPILE_X86_ASM
25903
7a1397677cb3 Avoid a MANGLE, there is no register pressure and the generated code
reimar
parents: 20577
diff changeset
20 static const uint64_t bFF __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
2839
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
21 static const unsigned long long mask24lh __attribute__((aligned(8))) = 0xFFFF000000000000ULL;
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
22 static const unsigned long long mask24hl __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL;
03ccbb72e2e9 Cloning 32 stuff to 24
nick
parents: 2835
diff changeset
23 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
24
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
25 //Note: we have C, X86-nommx, MMX, MMX2, 3DNOW version therse no 3DNOW+MMX2 one
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
26 //Plain C versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
27 #if !defined (HAVE_MMX) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
28 #define COMPILE_C
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
29 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
30
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
31 #ifdef CAN_COMPILE_X86_ASM
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
32
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
33 #if (defined (HAVE_MMX) && !defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
34 #define COMPILE_MMX
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
35 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
36
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
37 #if defined (HAVE_MMX2) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
38 #define COMPILE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
39 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
40
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
41 #if (defined (HAVE_3DNOW) && !defined (HAVE_MMX2)) || defined (RUNTIME_CPUDETECT)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
42 #define COMPILE_3DNOW
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
43 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
44 #endif //CAN_COMPILE_X86_ASM
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
45
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
46 #undef HAVE_MMX
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
47 #undef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
48 #undef HAVE_3DNOW
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
49
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
50 #ifndef CAN_COMPILE_X86_ASM
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
51
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
52 #ifdef COMPILE_C
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
53 #undef HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
54 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
55 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
56 #define RENAME(a) a ## _C
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
57 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
58 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
59
13720
821f464b4d90 adapting existing mmx/mmx2/sse/3dnow optimizations so they work on x86_64
aurel
parents: 12516
diff changeset
60 #else
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
61
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
62 //X86 noMMX versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
63 #ifdef COMPILE_C
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
64 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
65 #undef HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
66 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
67 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
68 #define RENAME(a) a ## _X86
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
69 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
70 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
71
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
72 //MMX versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
73 #ifdef COMPILE_MMX
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
74 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
75 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
76 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
77 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
78 #define RENAME(a) a ## _MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
79 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
80 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
81
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
82 //MMX2 versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
83 #ifdef COMPILE_MMX2
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
84 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
85 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
86 #define HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
87 #undef HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
88 #define RENAME(a) a ## _MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
89 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
90 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
91
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
92 //3DNOW versions
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
93 #ifdef COMPILE_3DNOW
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
94 #undef RENAME
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
95 #define HAVE_MMX
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
96 #undef HAVE_MMX2
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
97 #define HAVE_3DNOW
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
98 #define RENAME(a) a ## _3DNow
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
99 #include "osd_template.c"
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
100 #endif
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
101
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
102 #endif //CAN_COMPILE_X86_ASM
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
103
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
104 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
105 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
106 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
107 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
108 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
109 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
110 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
111 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
112 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
113 vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
114 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
115 vo_draw_alpha_yv12_X86(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_C(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
118 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
119 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
120 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
121 vo_draw_alpha_yv12_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
122 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
123 vo_draw_alpha_yv12_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
124 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
125 vo_draw_alpha_yv12_MMX(w, h, src, srca, srcstride, dstbase, dststride);
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
126 #elif defined(ARCH_X86)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
127 vo_draw_alpha_yv12_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
128 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
129 vo_draw_alpha_yv12_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
130 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
131 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
132 }
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
133
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
134 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
135 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
136 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
137 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
138 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
139 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
140 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
141 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
142 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
143 vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
144 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
145 vo_draw_alpha_yuy2_X86(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_C(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
148 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
149 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
150 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
151 vo_draw_alpha_yuy2_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
152 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
153 vo_draw_alpha_yuy2_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
154 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
155 vo_draw_alpha_yuy2_MMX(w, h, src, srca, srcstride, dstbase, dststride);
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
156 #elif defined(ARCH_X86)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
157 vo_draw_alpha_yuy2_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
158 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
159 vo_draw_alpha_yuy2_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
160 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
161 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
162 }
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
163
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
164 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
165 #ifdef RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
166 #ifdef CAN_COMPILE_X86_ASM
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
167 // ordered by speed / fastest first
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
168 if(gCpuCaps.hasMMX2)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
169 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
170 else if(gCpuCaps.has3DNow)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
171 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
172 else if(gCpuCaps.hasMMX)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
173 vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
174 else
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
175 vo_draw_alpha_uyvy_X86(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_C(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
178 #endif
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
179 #else //RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
180 #ifdef HAVE_MMX2
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
181 vo_draw_alpha_uyvy_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
182 #elif defined (HAVE_3DNOW)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
183 vo_draw_alpha_uyvy_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
184 #elif defined (HAVE_MMX)
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
185 vo_draw_alpha_uyvy_MMX(w, h, src, srca, srcstride, dstbase, dststride);
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
186 #elif defined(ARCH_X86)
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
187 vo_draw_alpha_uyvy_X86(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
188 #else
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
189 vo_draw_alpha_uyvy_C(w, h, src, srca, srcstride, dstbase, dststride);
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
190 #endif
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
191 #endif //!RUNTIME_CPUDETECT
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
192 }
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
193
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
194 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
195 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
196 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
197 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
198 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
199 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
200 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
201 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
202 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
203 vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
204 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
205 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
206 #else
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
207 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
208 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
209 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
210 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
211 vo_draw_alpha_rgb24_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
212 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
213 vo_draw_alpha_rgb24_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
214 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
215 vo_draw_alpha_rgb24_MMX(w, h, src, srca, srcstride, dstbase, dststride);
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
216 #elif defined(ARCH_X86)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
217 vo_draw_alpha_rgb24_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
218 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
219 vo_draw_alpha_rgb24_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
220 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
221 #endif //!RUNTIME_CPUDETECT
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
222 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
223
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
224 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
225 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
226 #ifdef CAN_COMPILE_X86_ASM
12516
6f7b5123ac56 draw alpha for uyvy
nplourde
parents: 12292
diff changeset
227 // ordered by speed / fastest first
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
228 if(gCpuCaps.hasMMX2)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
229 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
230 else if(gCpuCaps.has3DNow)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
231 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
232 else if(gCpuCaps.hasMMX)
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
233 vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride);
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
234 else
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
235 vo_draw_alpha_rgb32_X86(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_C(w, h, src, srca, srcstride, dstbase, dststride);
2846
ab51228bf3cf p2/p3 bgr32 version (20%faster)
michael
parents: 2843
diff changeset
238 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
239 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
240 #ifdef HAVE_MMX2
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
241 vo_draw_alpha_rgb32_MMX2(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
242 #elif defined (HAVE_3DNOW)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
243 vo_draw_alpha_rgb32_3DNow(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
244 #elif defined (HAVE_MMX)
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
245 vo_draw_alpha_rgb32_MMX(w, h, src, srca, srcstride, dstbase, dststride);
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
246 #elif defined(ARCH_X86)
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
247 vo_draw_alpha_rgb32_X86(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
248 #else
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
249 vo_draw_alpha_rgb32_C(w, h, src, srca, srcstride, dstbase, dststride);
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
250 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
251 #endif //!RUNTIME_CPUDETECT
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
252 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
253
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
254 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
255 static unsigned short fast_osd_15bpp_table[256];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
256 static unsigned short fast_osd_16bpp_table[256];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
257 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
258
17566
f580a7755ac5 Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents: 13787
diff changeset
259 void vo_draw_alpha_init(void){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
260 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
261 int i;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
262 for(i=0;i<256;i++){
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
263 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
264 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
265 }
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
266 #endif
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10516
diff changeset
267 //FIXME the optimized stuff is a lie for 15/16bpp as they aren't optimized yet
17969
843e0427b5b9 Change 'if(verbose)' to the more appropriate mp_msg_test.
diego
parents: 17566
diff changeset
268 if( mp_msg_test(MSGT_OSD,MSGL_V) )
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
269 {
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
270 #ifdef RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
271 #ifdef CAN_COMPILE_X86_ASM
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
272 // ordered per speed fasterst first
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
273 if(gCpuCaps.hasMMX2)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
274 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
275 else if(gCpuCaps.has3DNow)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
276 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
277 else if(gCpuCaps.hasMMX)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
278 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX Optimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
279 else
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
280 mp_msg(MSGT_OSD,MSGL_INFO,"Using X86 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 Unoptimized OnScreenDisplay\n");
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
283 #endif
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
284 #else //RUNTIME_CPUDETECT
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
285 #ifdef HAVE_MMX2
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
286 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
287 #elif defined (HAVE_3DNOW)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
288 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
289 #elif defined (HAVE_MMX)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
290 mp_msg(MSGT_OSD,MSGL_INFO,"Using MMX Optimized OnScreenDisplay\n");
20577
6289755ce7c7 ARCH_X86 simplifications
reimar
parents: 17969
diff changeset
291 #elif defined(ARCH_X86)
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
292 mp_msg(MSGT_OSD,MSGL_INFO,"Using X86 Optimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
293 #else
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 4245
diff changeset
294 mp_msg(MSGT_OSD,MSGL_INFO,"Using Unoptimized OnScreenDisplay\n");
3153
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
295 #endif
5b8db331d0c1 optional runtime cpu detect
michael
parents: 3142
diff changeset
296 #endif //!RUNTIME_CPUDETECT
3142
0f6cce3a8059 runtime cpu detection
michael
parents: 2850
diff changeset
297 }
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
298 }
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
299
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
300 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
301 int y;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
302 for(y=0;y<h;y++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
303 register unsigned short *dst = (unsigned short*) dstbase;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
304 register int x;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
305 for(x=0;x<w;x++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
306 if(srca[x]){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
307 #ifdef FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
308 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
309 dst[x]=fast_osd_15bpp_table[src[x]];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
310 #else
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
311 register unsigned int a=src[x]>>3;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
312 dst[x]=(a<<10)|(a<<5)|a;
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
313 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
314 #else
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
315 unsigned char r=dst[x]&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
316 unsigned char g=(dst[x]>>5)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
317 unsigned char b=(dst[x]>>10)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
318 r=(((r*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
319 g=(((g*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
320 b=(((b*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
321 dst[x]=(b<<10)|(g<<5)|r;
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
322 #endif
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
323 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
324 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
325 src+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
326 srca+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
327 dstbase+=dststride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
328 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
329 return;
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
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
332 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
333 int y;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
334 for(y=0;y<h;y++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
335 register unsigned short *dst = (unsigned short*) dstbase;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
336 register int x;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
337 for(x=0;x<w;x++){
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
338 if(srca[x]){
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
339 #ifdef FAST_OSD
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
340 #ifdef FAST_OSD_TABLE
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
341 dst[x]=fast_osd_16bpp_table[src[x]];
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
342 #else
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
343 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
344 #endif
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
345 #else
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
346 unsigned char r=dst[x]&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
347 unsigned char g=(dst[x]>>5)&0x3F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
348 unsigned char b=(dst[x]>>11)&0x1F;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
349 r=(((r*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
350 g=(((g*srca[x])>>6)+src[x])>>2;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
351 b=(((b*srca[x])>>5)+src[x])>>3;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
352 dst[x]=(b<<11)|(g<<5)|r;
947
76fd9463b9d3 FAST_OSD option to disable font outline antialiasing
arpi_esp
parents: 622
diff changeset
353 #endif
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
354 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
355 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
356 src+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
357 srca+=srcstride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
358 dstbase+=dststride;
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
359 }
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents:
diff changeset
360 return;
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