You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.1 KiB
134 lines
4.1 KiB
#ifndef __BM_VPP_H__
|
|
#define __BM_VPP_H__
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined _WIN32 && !defined(__cplusplus)
|
|
#if !defined(bool)
|
|
#define bool int
|
|
#endif
|
|
#if !defined(true)
|
|
#define true 1
|
|
#endif
|
|
#if !defined(false)
|
|
#define false 0
|
|
#endif
|
|
#endif
|
|
|
|
#if !defined DECL_EXPORT
|
|
#ifdef _WIN32
|
|
#define DECL_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define DECL_EXPORT
|
|
#endif
|
|
#endif
|
|
#define MIN_RESOLUTION_W (8) /*linear mode to linear mode*/
|
|
#define MIN_RESOLUTION_H (8) /*linear mode to linear mode*/
|
|
#define MAX_RESOLUTION_W (4096)
|
|
#define MAX_RESOLUTION_H (4096)
|
|
#define MAX_SCALE_RATIO (32)
|
|
|
|
#define VPP_CROP_NUM_MAX (256)
|
|
|
|
typedef unsigned char u8;
|
|
typedef signed char s8;
|
|
typedef unsigned short u16;
|
|
typedef signed short s16;
|
|
typedef unsigned int u32;
|
|
typedef signed int s32;
|
|
typedef unsigned long long int u64;
|
|
typedef signed long long int s64;
|
|
|
|
typedef enum _vpp_scale_type {
|
|
VPP_SCALE_BILINEAR = 0,
|
|
VPP_SCALE_NEAREST = 1,
|
|
VPP_SCALE_BICUBIC = 2
|
|
} vpp_scale_type;
|
|
|
|
typedef enum _img_fmt {
|
|
FMT_Y = 0, /*Y only*/
|
|
FMT_I420 = 1, /*YUV420 Planar(I420)*/
|
|
FMT_NV12 = 2, /*YUV420 SemiPlanar(NV12)*/
|
|
FMT_BGR = 3, /*BGR Packed 24, (low) B-G-R (high)*/
|
|
FMT_RGB = 4, /*RGB Packed 24, (low) R-G-B (high)*/
|
|
FMT_RGBP = 5, /*rgb 24 planar,rrrgggbbb,r g b three channels of data in three different physically contiguous memory spaces*/
|
|
FMT_BGRP = 6, /*bgr 24 planar,bbbgggrrr,r g b three channels of data in three different physically contiguous memory spaces*/
|
|
FMT_YUV444P = 7, /*yuv444 planar,yyyuuuvvv,y u v three channels of data in three different physically contiguous memory spaces*/
|
|
FMT_YUV422P = 8, /*yuv422 planar,yyyyuuvv,y u v three channels of data in three different physically contiguous memory spaces*/
|
|
FMT_YUV444 = 9, /*yuv444 Packed 24,yuvyuvyuv*/
|
|
FMT_ABGR = 10, /*ABGR Packed 32, bgrabgra*/
|
|
FMT_ARGB = 11 /*ARGB Packed 32, argbargb*/
|
|
} vpp_img_fmt;
|
|
|
|
typedef enum _csc_coe_type {
|
|
YCbCr2RGB_BT601 = 0,
|
|
YPbPr2RGB_BT601 = 1,
|
|
RGB2YCbCr_BT601 = 2,
|
|
YCbCr2RGB_BT709 = 3,
|
|
RGB2YCbCr_BT709 = 4,
|
|
RGB2YPbPr_BT601 = 5,
|
|
YPbPr2RGB_BT709 = 6,
|
|
RGB2YPbPr_BT709 = 7,
|
|
CSC_MAX,
|
|
CSC_USER_DEFINED
|
|
} vpp_csc_type;
|
|
|
|
typedef struct csc_matrix {
|
|
int csc_coe00;
|
|
int csc_coe01;
|
|
int csc_coe02;
|
|
int csc_add0;
|
|
int csc_coe10;
|
|
int csc_coe11;
|
|
int csc_coe12;
|
|
int csc_add1;
|
|
int csc_coe20;
|
|
int csc_coe21;
|
|
int csc_coe22;
|
|
int csc_add2;
|
|
} vpp_csc_matrix;
|
|
|
|
typedef struct _vpp_fd_ {
|
|
int dev_fd;/*vpp dev fd*/
|
|
char name[7];/*if u fill in the value of vpp_dev_fd,u must fill in vpp_dev_name as bm-vpp*/
|
|
void* handle; // handle of pcie mode
|
|
} vpp_fd_s;
|
|
|
|
typedef struct vpp_mat_s {
|
|
int num_comp; /*channel number of data blocks. packet data:1, yuv420sp: 2, yuv420p:3*/
|
|
vpp_img_fmt format; /*image data format*/
|
|
int is_pa; /*Judging whether to use ion memory handles or physical addresses directly, now only is 1 */
|
|
vpp_fd_s vpp_fd; /*vpp handle*/
|
|
int stride; /*stride of image*/
|
|
int uv_stride; /*uv stride of image*/
|
|
int fd[4]; /*Handles pointing to ion memory*/
|
|
void* va[4]; /*Virtual address of ion memory, now not used*/
|
|
unsigned long long pa[4]; /*Physical address of device memory*/
|
|
int ion_len[4]; /* Memory Length of Three Channels*/
|
|
int axisX; /*Image offset in x quadrant*/
|
|
int axisY; /*Image offset in y quadrant*/
|
|
int cols; /*Image width*/
|
|
int rows; /*Image height*/
|
|
void* reserved; /*reserved field, no need to fill in*/
|
|
} vpp_mat;
|
|
|
|
typedef struct vpp_rect_s {
|
|
unsigned int x;
|
|
unsigned int y;
|
|
unsigned int width;
|
|
unsigned int height;
|
|
} vpp_rect;
|
|
|
|
#define STRIDE_ALIGN (64)
|
|
#define VPP_ALIGN(x, mask) (((x) + ((mask)-1)) & ~((mask)-1))
|
|
|
|
DECL_EXPORT int vpp_basic(vpp_mat* src, vpp_rect* loca, vpp_mat* dst, int in_img_num, int* crop_num_vec, vpp_csc_type csc_type, vpp_scale_type scale_type, vpp_csc_matrix *matrix);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|