comparison vidix/drivers/nvidia_vid.c @ 11118:344052fdfc4a

Fix colorkey for xvidix, tested on Riva128 4MB X@15/16/24bpp (aka 15/15/32 in nvidia_vid) This is very cool, using mplayer -vo xvidix -ao oss -framedrop -dr movie.avi I can play 640x272 DivX 1MBps on PII 233, 64MB, i440LX, Riva128 4MB AGP, FreeBSD 5.0, XFree 4.2.0, with little framedrop,
author atmos4
date Tue, 14 Oct 2003 21:29:25 +0000
parents 7f659e7b7ce1
children 8ac4d769a1fb
comparison
equal deleted inserted replaced
11117:9a6fbdb320a4 11118:344052fdfc4a
413 r = (chromakey & 0x00FF0000) >> 16; 413 r = (chromakey & 0x00FF0000) >> 16;
414 g = (chromakey & 0x0000FF00) >> 8; 414 g = (chromakey & 0x0000FF00) >> 8;
415 b = chromakey & 0x000000FF; 415 b = chromakey & 0x000000FF;
416 switch (info->depth) { 416 switch (info->depth) {
417 case 15: 417 case 15:
418 key = ((r >> 3) << 10) | ((g >> 3) << 5) | ((b >> 3)); 418 key = ((r >> 3) << 10) | ((g >> 3) << 5) | ((b >> 3)) | 0x00008000;
419 break; 419 break;
420 case 16: 420 case 16: // XXX unchecked
421 key = ((r >> 3) << 11) | ((g >> 2) << 5) | ((b >> 3)); 421 key = ((r >> 3) << 11) | ((g >> 2) << 5) | ((b >> 3)) | 0x00008000;
422 break; 422 break;
423 case 24: 423 case 24: // XXX unchecked, maybe swap order of masking
424 key = chromakey & 0x00FFFFFF; 424 key = (chromakey & 0x00FFFFFF) | 0x00800000;
425 break; 425 break;
426 case 32: 426 case 32:
427 key = chromakey; 427 key = chromakey | 0x80000000;
428 break; 428 break;
429 } 429 }
430 //printf("[nvidia_vid] depth=%d %08X \n", info->depth, chromakey);
430 if(!info->use_colorkey)return; 431 if(!info->use_colorkey)return;
431 switch (info->chip.arch) { 432 switch (info->chip.arch) {
432 case NV_ARCH_10: 433 case NV_ARCH_10:
433 case NV_ARCH_20: 434 case NV_ARCH_20:
434 case NV_ARCH_30: 435 case NV_ARCH_30: