blob: 927faf87e21728e611759df35ad0a49e103d5461
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 |