| /* | 
|  * Copyright 2015 Rockchip Electronics Co. LTD | 
|  * | 
|  * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  * you may not use this file except in compliance with the License. | 
|  * You may obtain a copy of the License at | 
|  * | 
|  *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  * | 
|  * Unless required by applicable law or agreed to in writing, software | 
|  * distributed under the License is distributed on an "AS IS" BASIS, | 
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  * See the License for the specific language governing permissions and | 
|  * limitations under the License. | 
|  */ | 
|   | 
| #ifndef _PPOP_H_ | 
| #define _PPOP_H_ | 
|   | 
| #include <sys/types.h> | 
|   | 
| typedef RK_S32     status_t; | 
|   | 
| namespace android | 
| { | 
|   | 
| #define PP_IN_FORMAT_YUV422INTERLAVE                0 | 
| #define PP_IN_FORMAT_YUV420SEMI                     1 | 
| #define PP_IN_FORMAT_YUV420PLANAR                   2 | 
| #define PP_IN_FORMAT_YUV400                         3 | 
| #define PP_IN_FORMAT_YUV422SEMI                     4 | 
| #define PP_IN_FORMAT_YUV420SEMITIELED               5 | 
| #define PP_IN_FORMAT_YUV440SEMI                     6 | 
| #define PP_IN_FORMAT_YUV444_SEMI                    7 | 
| #define PP_IN_FORMAT_YUV411_SEMI                    8 | 
|   | 
| #define PP_OUT_FORMAT_RGB565                        0 | 
| #define PP_OUT_FORMAT_ARGB                          1 | 
| #define PP_OUT_FORMAT_ABGR                          2 | 
| #define PP_OUT_FORMAT_YUV422INTERLAVE               3 | 
| #define PP_OUT_FORMAT_YUV420INTERLAVE               5 | 
|   | 
| #define PP_ROTATION_NONE                                0U | 
| #define PP_ROTATION_RIGHT_90                            1U | 
| #define PP_ROTATION_LEFT_90                             2U | 
| #define PP_ROTATION_HOR_FLIP                            3U | 
| #define PP_ROTATION_VER_FLIP                            4U | 
| #define PP_ROTATION_180                                 5U | 
|   | 
| typedef struct { | 
|     RK_U32 srcAddr;           // 16 align | 
|     RK_U32 srcFormat; | 
|     RK_U32 srcWidth;          // 16 align max 2048 | 
|     RK_U32 srcHeight;         // 16 align max 2048 | 
|     RK_U32 srcHStride;        // 16 align max 2048 | 
|     RK_U32 srcVStride;        // 16 align max 2048 | 
|     RK_U32 srcCrop8R;         // crop rigth | 
|     RK_U32 srcCrop8D;         // crop down | 
|     RK_U32 srcX;                  // src x | 
|     RK_U32 srcY;                  // src y | 
|     RK_U32 srcReserv[2]; | 
|   | 
|     RK_U32 dstAddr;           // 16 align | 
|     RK_U32 dstFormat; | 
|     RK_U32 dstWidth;          // 16 align max 2048 | 
|     RK_U32 dstHeight;         // 16 align max 2048 | 
|     RK_U32 dstHStride;        // 16 align max 2048 | 
|     RK_U32 dstVStride;        // 16 align max 2048 | 
|     RK_U32 dstReserv[2]; | 
|     RK_U32 dstX;                  // dst x | 
|     RK_U32 dstY;                  // dst y | 
|   | 
|     RK_U32 vpuFd;             // VPUClient handle | 
|     RK_U32 rotation;          // rotation angel | 
|     RK_U32 yuvFullRange;      // yuv is full range or not, set yuv trans table | 
|     RK_U32 deinterlace;       // do deinterlace or not | 
|     RK_U32 optReserv[13]; | 
| } PP_OPERATION; | 
|   | 
|   | 
| typedef enum { | 
|     PP_SET_SRC_ADDR         = 0, | 
|     PP_SET_SRC_FORMAT, | 
|     PP_SET_SRC_WIDTH, | 
|     PP_SET_SRC_HEIGHT, | 
|     PP_SET_SRC_HSTRIDE, | 
|     PP_SET_SRC_VSTRIDE, | 
|   | 
|     PP_SET_DST_ADDR         = 8, | 
|     PP_SET_DST_FORMAT, | 
|     PP_SET_DST_WIDTH, | 
|     PP_SET_DST_HEIGHT, | 
|     PP_SET_DST_HSTRIDE, | 
|     PP_SET_DST_VSTRIDE, | 
|   | 
|     PP_SET_VPU_FD           = 16,           // important must be set or use ppOpSet to set this fd | 
|     PP_SET_ROTATION, | 
|     PP_SET_YUV_RANGE, | 
|     PP_SET_DEINTERLACE, | 
|   | 
|     PP_SET_BUTT             = 32, | 
| } PP_SET_OPT; | 
|   | 
| typedef void* PP_OP_HANDLE; | 
|   | 
| status_t ppOpInit(PP_OP_HANDLE *hnd, PP_OPERATION *init); | 
| status_t ppOpSet(PP_OP_HANDLE hnd, PP_SET_OPT opt, RK_U32 val); | 
| status_t ppOpPerform(PP_OP_HANDLE hnd); | 
| status_t ppOpSync(PP_OP_HANDLE hnd); | 
| status_t ppOpRelease(PP_OP_HANDLE hnd); | 
|   | 
| } | 
|   | 
| #endif  // _PPOP_H_ |