ditherer_mmx16.hh
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:1k
源码类别:

DVD

开发平台:

Unix_Linux

  1. #ifndef _ditherer_mmx16_hh_
  2. #define _ditherer_mmx16_hh_
  3. #if defined(HAVE_MMX)
  4.    
  5. #include "ditherer.hh"
  6. class Dither_MMX16: public GenericDitherer {
  7. public:
  8.    static Ditherer * alloc() {return new Dither_MMX16();}
  9.    Dither_MMX16() { _pixelSize=2;_bpp=16;}
  10.    
  11.    void  ditherBlock(unsigned char *lum, unsigned char *cb, unsigned char *cr,
  12.                      unsigned char *out,
  13.                      int cols, int rows, int screen_width);
  14. };
  15. extern "C" void yuv_2_rgb(void *,void *,void *,int,int,int,int,int,void *,int,int,int,int);
  16. class Dither_MMX16B: public GenericDitherer {
  17. public:
  18.    static Ditherer * alloc() {return new Dither_MMX16B();}
  19.    Dither_MMX16B() { _pixelSize=2;_bpp=0;}
  20.    
  21.    void  ditherBlock(unsigned char *Y, unsigned char *U, unsigned char *V,
  22.                      unsigned char *out,
  23.                      int cols, int rows, int screen_width) {
  24.       if (_bpp==0) {
  25.          setBpp(16);
  26.       }
  27.       yuv_2_rgb(Y,U,V,cols,rows,cols,cols/2,0,out,0,0,screen_width*2,
  28.                 (_bpp==16?0:1));
  29.    }
  30. };
  31.    
  32. #endif
  33. #endif