Mercurial > mplayer.hg
comparison libvo/osd.c @ 31082:92f88bb315c5
Add support for 12-bit color mode on framebuffer devices.
Patch Janusz Krzysztofik, jkrzyszt A tis icnet pl
author | cehoyos |
---|---|
date | Thu, 06 May 2010 10:18:25 +0000 |
parents | 32725ca88fed |
children | 4ab80ac9c2d1 |
comparison
equal
deleted
inserted
replaced
31081:09b714720a80 | 31082:92f88bb315c5 |
---|---|
327 #endif | 327 #endif |
328 #endif //!CONFIG_RUNTIME_CPUDETECT | 328 #endif //!CONFIG_RUNTIME_CPUDETECT |
329 } | 329 } |
330 } | 330 } |
331 | 331 |
332 void vo_draw_alpha_rgb12(int w, int h, unsigned char* src, unsigned char *srca, | |
333 int srcstride, unsigned char* dstbase, int dststride) { | |
334 int y; | |
335 for (y = 0; y < h; y++) { | |
336 register unsigned short *dst = (unsigned short*) dstbase; | |
337 register int x; | |
338 for (x = 0; x < w; x++) { | |
339 if(srca[x]){ | |
340 #ifdef FAST_OSD | |
341 #ifdef FAST_OSD_TABLE | |
342 dst[x] = fast_osd_12bpp_table[src[x]]; | |
343 #else | |
344 register unsigned int a = src[x] >> 4; | |
345 dst[x] = (a << 8) | (a << 4) | a; | |
346 #endif | |
347 #else | |
348 unsigned char r = dst[x] & 0x0F; | |
349 unsigned char g = (dst[x] >> 4) & 0x0F; | |
350 unsigned char b = (dst[x] >> 8) & 0x0F; | |
351 r = (((r*srca[x]) >> 4) + src[x]) >> 4; | |
352 g = (((g*srca[x]) >> 4) + src[x]) >> 4; | |
353 b = (((b*srca[x]) >> 4) + src[x]) >> 4; | |
354 dst[x] = (b << 8) | (g << 4) | r; | |
355 #endif | |
356 } | |
357 } | |
358 src += srcstride; | |
359 srca += srcstride; | |
360 dstbase += dststride; | |
361 } | |
362 return; | |
363 } | |
364 | |
332 void vo_draw_alpha_rgb15(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ | 365 void vo_draw_alpha_rgb15(int w,int h, unsigned char* src, unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride){ |
333 int y; | 366 int y; |
334 for(y=0;y<h;y++){ | 367 for(y=0;y<h;y++){ |
335 register unsigned short *dst = (unsigned short*) dstbase; | 368 register unsigned short *dst = (unsigned short*) dstbase; |
336 register int x; | 369 register int x; |