color.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:1k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __COLOR_H
  2. #define __COLOR_H
  3. /*
  4. ** Color space conversion.
  5. **
  6. ** from CCIR REC 601.4
  7. **
  8. ** Y          = .299R + .587G + .114B
  9. ** Cr = (R-Y) = .701R - .587G - .114B
  10. ** Cb = (B-Y) =-.299R - .587G + .886B
  11. **
  12. ** CCIR recommendation
  13. ** Y  = 219 * Y + 16
  14. ** Cr = 224 * Cr + 128
  15. ** Cb = 224 * Cb + 128
  16. **
  17. ** CCIR fixed.
  18. **
  19. **  Y  = ( 81 Rd +  145 Gd +  25 Bd) / 256 + 16
  20. **  Cr = (157 Rd + -131 Gd + -26 Bd) / 256 + 128
  21. **  Cb = (-67 Rd + -131 Gd + 198 Bd) / 256 + 128
  22. **
  23. **  Y  = ( 77 Rd +  150 Gd +  29 Bd) / 256
  24. **  Cr = (131 Rd + -110 Gd + -21 Bd) / 256 + 128
  25. **  Cb = (-44 Rd +  -87 Gd + 131 Bd) / 256 + 128
  26. **
  27. ** for example
  28. **    R   G   B   Y  Cr  Cb
  29. ** RED  255   0   0  76 255  84
  30. **/
  31. int CLIP_TOP(int x, int c);
  32. int CLIP_BOT(int x, int c);
  33. int CLIP_TWO(int x, int t, int b);
  34. #define RGB_CLIP_Y(x) CLIP_TOP(x,255)
  35. #define RGB_CLIP_C(x) CLIP_TWO(x,255,0)
  36. int RGB_Y (int R, int G, int B);
  37. int RGB_Cr(int R, int G, int B);
  38. int RGB_Cb(int R, int G, int B);
  39. #if 0
  40. static inline int RGB_Y (int R, int G, int B) {return (( 77*(R) + 150*(G) +  29*(B))/256);}
  41. static inline int RGB_Cr(int R, int G, int B) {return ((131*(R) - 110*(G) -  21*(B))/256 + 128);}
  42. static inline int RGB_Cb(int R, int G, int B) {return ((-44*(R) -  87*(G) + 131*(B))/256 + 128);}
  43. #endif
  44. #endif/*__COLOR_H*/