Home | History | Annotate | Download | only in inc
      1 #ifndef NV12_RESIZE_H_
      2 #define NV12_RESIZE_H_
      3 
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 typedef unsigned char       mmBool;
      9 typedef unsigned char       mmUchar;
     10 typedef unsigned char       mmUint8;
     11 typedef unsigned char       mmByte;
     12 typedef unsigned short      mmUint16;
     13 typedef unsigned int        mmUint32;
     14 typedef unsigned long       mmUint64;
     15 typedef signed char         mmInt8;
     16 typedef char		        mmChar;
     17 typedef signed short        mmInt16;
     18 typedef signed int          mmInt32;
     19 typedef signed long         mmLong;
     20 typedef signed int          mmHandle;
     21 typedef float        mmFloat;
     22 typedef double       mmDouble;
     23 typedef int 		    HObj;
     24 typedef HObj		    HFile;
     25 typedef int 		    HDir;
     26 typedef void* mmMutexHandle;
     27 typedef struct _fstat
     28 {
     29       mmInt32 fileSize;
     30 }VE_FileAttribute;
     31 
     32 typedef struct
     33 {
     34 	mmInt32		second;
     35 	mmInt32 	millisecond;
     36 }tsVE_Time;
     37 
     38 typedef struct
     39 {
     40 	mmInt32 	year;
     41 	mmInt32 	month;
     42 	mmInt32 	day;
     43 	mmInt32 	hour;
     44 	mmInt32 	minute;
     45 	mmInt32 	second;
     46 } TmDateTime;
     47 
     48 /*----------------------------------------------------------------------------
     49     Define : TRUE/FALSE for boolean operations
     50 ----------------------------------------------------------------------------*/
     51 
     52 #ifndef TRUE
     53     #define TRUE    1
     54 #endif
     55 
     56 #ifndef FALSE
     57     #define FALSE   0
     58 #endif
     59 
     60 #ifndef NULL
     61    #define NULL        0
     62 #endif
     63 
     64 const mmUint8 bWeights[8][8][4] = {
     65   {{64, 0, 0, 0}, {56, 0, 0, 8}, {48, 0, 0,16}, {40, 0, 0,24},
     66    {32, 0, 0,32}, {24, 0, 0,40}, {16, 0, 0,48}, { 8, 0, 0,56}},
     67 
     68   {{56, 8, 0, 0}, {49, 7, 1, 7}, {42, 6, 2,14}, {35, 5, 3,21},
     69    {28, 4, 4,28}, {21, 3, 5,35}, {14, 2, 6,42}, { 7, 1, 7,49}},
     70 
     71   {{48,16, 0, 0}, {42,14, 2, 6}, {36,12,4 ,12}, {30,10,6 ,18},
     72    {24, 8, 8,24}, {18, 6,10,30}, {12,4 ,12,36}, { 6, 2,14,42}},
     73 
     74   {{40,24,0 ,0 }, {35,21, 3, 5}, {30,18, 6,10}, {25,15, 9,15},
     75    {20,12,12,20}, {15, 9,15,25}, {10, 6,18,30}, { 5, 3,21,35}},
     76 
     77   {{32,32, 0,0 }, {28,28, 4, 4}, {24,24, 8, 8}, {20,20,12,12},
     78    {16,16,16,16}, {12,12,20,20}, { 8, 8,24,24}, { 4, 4,28,28}},
     79 
     80   {{24,40,0 ,0 }, {21,35, 5, 3}, {18,30,10, 6}, {15,25,15, 9},
     81    {12,20,20,12}, { 9,15,25,15}, { 6,10,30,18}, { 3, 5,35,21}},
     82 
     83   {{16,48, 0,0 }, {14,42, 6, 2}, {12,36,12, 4}, {10,30,18, 6},
     84    {8 ,24,24,8 }, { 6,18,30,10}, { 4,12,36,12}, { 2, 6,42,14}},
     85 
     86   {{ 8,56, 0,0 }, { 7,49, 7, 1}, { 6,42,14, 2}, { 5,35,21, 3},
     87    { 4,28,28,4 }, { 3,21,35, 5}, { 2,14,42, 6}, { 1,7 ,49, 7}}
     88 };
     89 
     90 typedef enum
     91 {
     92     IC_FORMAT_NONE,
     93     IC_FORMAT_RGB565,
     94     IC_FORMAT_RGB888,
     95     IC_FORMAT_YCbCr420_lp,
     96     IC_FORMAT_YCbCr,
     97     IC_FORMAT_YCbCr420_FRAME_PK,
     98     IC_FORMAT_MAX
     99 }enumImageFormat;
    100 
    101 /* This structure defines the format of an image */
    102 typedef struct
    103 {
    104   mmInt32                       uWidth;
    105   mmInt32                       uHeight;
    106   mmInt32                       uStride;
    107   enumImageFormat               eFormat;
    108   mmByte                        *imgPtr;
    109   mmByte                        *clrPtr;
    110   mmInt32                       uOffset;
    111 } structConvImage;
    112 
    113 typedef struct IC_crop_struct
    114 {
    115   mmUint32 x;             /* x pos of rectangle                              */
    116   mmUint32 y;             /* y pos of rectangle                              */
    117   mmUint32 uWidth;        /* dx of rectangle                                 */
    118   mmUint32 uHeight;       /* dy of rectangle                                 */
    119 } IC_rect_type;
    120 
    121 /*==========================================================================
    122 * Function Name  : VT_resizeFrame_Video_opt2_lp
    123 *
    124 * Description    : Resize a yuv frame.
    125 *
    126 * Input(s)       : input_img_ptr        -> Input Image Structure
    127 *                : output_img_ptr       -> Output Image Structure
    128 *                : cropout             -> crop structure
    129 *
    130 * Value Returned : mmBool               -> FALSE on error TRUE on success
    131 * NOTE:
    132 *            Not tested for crop funtionallity.
    133 *            faster version.
    134 ============================================================================*/
    135 mmBool
    136 VT_resizeFrame_Video_opt2_lp
    137 (
    138  structConvImage* i_img_ptr,        /* Points to the input image           */
    139  structConvImage* o_img_ptr,        /* Points to the output image          */
    140  IC_rect_type*  cropout,          /* how much to resize to in final image */
    141  mmUint16 dummy                         /* Transparent pixel value              */
    142  );
    143 
    144 #ifdef __cplusplus
    145 }
    146 #endif
    147 
    148 #endif //#define NV12_RESIZE_H_
    149