mpp-nyanmisaka/mpp/legacy/ppOp.h
Herman Chen 67e80ebfe4 [mpp]: Remove RKPLATFORM macro
Mpp will only run under Linux environment. Windows support will be
removed.

Change-Id: I52de4bd69f6d7b34507edeb6642668e225fcbd38
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2018-09-11 10:31:08 +08:00

115 lines
3.7 KiB
C++

/*
* 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_