00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00037 #if ! defined ( ALGORITHM_HH )
00038 #define ALGORITHM_HH
00039
00040
00041 #include <stdint.h>
00042
00043
00044
00045
00046
00047 namespace PIAVE {
00048
00049 class Color;
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 class Algorithm
00064 {
00065 public:
00066
00067
00068
00069 virtual Color RGB2YCbCr( Color rgb ) const = 0;
00070
00071
00072
00073
00074 virtual int yuyv2yuyv( int x_src, int y_src, uint8_t * src,
00075 int x_dest, int y_dest, uint8_t * dest) const = 0;
00076 virtual int rgb242yuyv( int x_src, int y_src, uint8_t * src,
00077 int x_dest, int y_dest, uint8_t * dest) const = 0;
00078
00079 };
00080
00081
00082 class Algorithm_C : public Algorithm
00083 {
00084 public:
00085 Algorithm_C();
00086
00087 virtual Color RGB2YCbCr( Color rgb ) const;
00088
00089 virtual int yuyv2yuyv( int x_src, int y_src, uint8_t * src,
00090 int x_dest, int y_dest, uint8_t * dest) const;
00091 virtual int rgb242yuyv( int x_src, int y_src, uint8_t * src,
00092 int x_dest, int y_dest, uint8_t * dest) const;
00093
00094 private:
00095 void init_RGB2YCbCr();
00096
00097 static int32_t RGBYCbCr02570[256], RGBYCbCr05040[256], RGBYCbCr00980[256];
00098 static int32_t RGBYCbCr01480[256], RGBYCbCr02910[256], RGBYCbCr04390[256];
00099 static int32_t RGBYCbCr03680[256], RGBYCbCr00710[256];
00100
00101 };
00102
00103
00104 };
00105
00106 #endif