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;