Mercurial > libavcodec.hg
comparison libpostproc/postprocess.c @ 117:a02f3088b0cf libavcodec
negative black bugfix
| author | michael |
|---|---|
| date | Tue, 23 Oct 2001 00:03:19 +0000 |
| parents | 1895a8fa81ea |
| children | 3dd1950ac98d |
comparison
equal
deleted
inserted
replaced
| 116:1895a8fa81ea | 117:a02f3088b0cf |
|---|---|
| 134 | 134 |
| 135 //amount of "black" u r willing to loose to get a brightness corrected picture | 135 //amount of "black" u r willing to loose to get a brightness corrected picture |
| 136 double maxClippedThreshold= 0.01; | 136 double maxClippedThreshold= 0.01; |
| 137 | 137 |
| 138 int maxAllowedY=234; | 138 int maxAllowedY=234; |
| 139 //FIXME can never make a movie´s black brighter (anyone needs that?) | |
| 140 int minAllowedY=16; | 139 int minAllowedY=16; |
| 141 | 140 |
| 142 static struct PPFilter filters[]= | 141 static struct PPFilter filters[]= |
| 143 { | 142 { |
| 144 {"hb", "hdeblock", 1, 1, 3, H_DEBLOCK}, | 143 {"hb", "hdeblock", 1, 1, 3, H_DEBLOCK}, |
| 2505 "pxor %%mm4, %%mm4 \n\t" | 2504 "pxor %%mm4, %%mm4 \n\t" |
| 2506 | 2505 |
| 2507 #define SCALED_CPY \ | 2506 #define SCALED_CPY \ |
| 2508 "movq (%0), %%mm0 \n\t"\ | 2507 "movq (%0), %%mm0 \n\t"\ |
| 2509 "movq (%0,%2), %%mm1 \n\t"\ | 2508 "movq (%0,%2), %%mm1 \n\t"\ |
| 2510 "psubusb %%mm2, %%mm0 \n\t"\ | |
| 2511 "psubusb %%mm2, %%mm1 \n\t"\ | |
| 2512 "movq %%mm0, %%mm5 \n\t"\ | 2509 "movq %%mm0, %%mm5 \n\t"\ |
| 2513 "punpcklbw %%mm4, %%mm0 \n\t"\ | 2510 "punpcklbw %%mm4, %%mm0 \n\t"\ |
| 2514 "punpckhbw %%mm4, %%mm5 \n\t"\ | 2511 "punpckhbw %%mm4, %%mm5 \n\t"\ |
| 2515 "psllw $7, %%mm0 \n\t"\ | 2512 "psubw %%mm2, %%mm0 \n\t"\ |
| 2516 "psllw $7, %%mm5 \n\t"\ | 2513 "psubw %%mm2, %%mm5 \n\t"\ |
| 2514 "psllw $6, %%mm0 \n\t"\ | |
| 2515 "psllw $6, %%mm5 \n\t"\ | |
| 2517 "pmulhw %%mm3, %%mm0 \n\t"\ | 2516 "pmulhw %%mm3, %%mm0 \n\t"\ |
| 2518 "pmulhw %%mm3, %%mm5 \n\t"\ | 2517 "pmulhw %%mm3, %%mm5 \n\t"\ |
| 2519 "packuswb %%mm5, %%mm0 \n\t"\ | 2518 "packuswb %%mm5, %%mm0 \n\t"\ |
| 2520 "movq %%mm0, (%1) \n\t"\ | 2519 "movq %%mm0, (%1) \n\t"\ |
| 2521 "movq %%mm1, %%mm5 \n\t"\ | 2520 "movq %%mm1, %%mm5 \n\t"\ |
| 2522 "punpcklbw %%mm4, %%mm1 \n\t"\ | 2521 "punpcklbw %%mm4, %%mm1 \n\t"\ |
| 2523 "punpckhbw %%mm4, %%mm5 \n\t"\ | 2522 "punpckhbw %%mm4, %%mm5 \n\t"\ |
| 2524 "psllw $7, %%mm1 \n\t"\ | 2523 "psubw %%mm2, %%mm1 \n\t"\ |
| 2525 "psllw $7, %%mm5 \n\t"\ | 2524 "psubw %%mm2, %%mm5 \n\t"\ |
| 2525 "psllw $6, %%mm1 \n\t"\ | |
| 2526 "psllw $6, %%mm5 \n\t"\ | |
| 2526 "pmulhw %%mm3, %%mm1 \n\t"\ | 2527 "pmulhw %%mm3, %%mm1 \n\t"\ |
| 2527 "pmulhw %%mm3, %%mm5 \n\t"\ | 2528 "pmulhw %%mm3, %%mm5 \n\t"\ |
| 2528 "packuswb %%mm5, %%mm1 \n\t"\ | 2529 "packuswb %%mm5, %%mm1 \n\t"\ |
| 2529 "movq %%mm1, (%1, %3) \n\t"\ | 2530 "movq %%mm1, (%1, %3) \n\t"\ |
| 2530 | 2531 |
| 2683 { | 2684 { |
| 2684 if(clipped < maxClipped) break; | 2685 if(clipped < maxClipped) break; |
| 2685 clipped-= yHistogram[white]; | 2686 clipped-= yHistogram[white]; |
| 2686 } | 2687 } |
| 2687 | 2688 |
| 2688 // we cant handle negative correctures | 2689 packedYOffset= (black - minAllowedY) & 0xFFFF; |
| 2689 packedYOffset= MAX(black - minAllowedY, 0); | |
| 2690 packedYOffset|= packedYOffset<<32; | 2690 packedYOffset|= packedYOffset<<32; |
| 2691 packedYOffset|= packedYOffset<<16; | 2691 packedYOffset|= packedYOffset<<16; |
| 2692 packedYOffset|= packedYOffset<<8; | |
| 2693 | 2692 |
| 2694 scale= (double)(maxAllowedY - minAllowedY) / (double)(white-black); | 2693 scale= (double)(maxAllowedY - minAllowedY) / (double)(white-black); |
| 2695 | 2694 |
| 2696 packedYScale= (uint16_t)(scale*512.0 + 0.5); | 2695 packedYScale= (uint16_t)(scale*1024.0 + 0.5); |
| 2697 packedYScale|= packedYScale<<32; | 2696 packedYScale|= packedYScale<<32; |
| 2698 packedYScale|= packedYScale<<16; | 2697 packedYScale|= packedYScale<<16; |
| 2699 } | 2698 } |
| 2700 else | 2699 else |
| 2701 { | 2700 { |
