* Copyright (c) Huawei Technologies Co., Ltd. 2026. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef VPC_CMDLIST_PIPELINE_DEFINE_H
#define VPC_CMDLIST_PIPELINE_DEFINE_H
#include <linux/types.h>
#define ENABLE 1
#define DISABLE 0
#define COLOR_CHANNEL_NUM 4
#define PORT_STEP 3
#define PORT0 0
#define PORT1 1
#define PORT2 2
#define PORT3 3
#define PORT4 4
#define PORT5 5
#define PORT6 6
#define PORT7 7
#define PORT8 8
#define PORT9 9
#define PORT10 10
#define PORT11 11
#define PORT12 12
#define PORT13 13
#define PORT14 14
#define PORT15 15
#define X_DIR 0
#define Y_DIR 1
#define PIPE_KERNEL_NUM 2
#define PIPE_OUT_NUM 3
#define SUB_CHN_NUM 2
#define MAIN_CHN 0
#define SUB_CHN_1 1
#define SUB_CHN_2 2
#define SCALER_COFF_NB_4 128
#define SCALER_COFF_NB_6 192
#define SCALER_COFF_NB_8 256
#define MAX_PARA_COUNT 2048
#define VP_RD_NUM 11
#define VP_WR_NUM 16
#define NR_RD_NUM 4
#define NR_WR_NUM 2
#define MAX_MOSAIC_NUM 4
#define MIN_MOSAIC_REGION_WIDTH 8
#define MIN_MOSAIC_REGION_HEIGHT 8
#define SCALER_RADIO_1_TIME 0x100000
#define SCALER_BIT_MOVE_TO_OLD_INC 4
#define MAX_COVER_NUM 8
#define MAX_LINE_NUM 8
#define MAX_OSD_NUM 8
#define YUV_SCALER_BYPASS 3
#define YUV_SCALER_ENABLE_HOR 1
#define YUV_SCALER_ENABLE_VER 2
#define MOSAIC_REGION_NUM 4
#define COVER_REGION_NUM 8
#define OSD_REGION_NUM 8
#define VPC_BORDER_CONSTANT 0
typedef enum ImageRankType {
NV12 = 0,
NV21,
YUYV,
YVYU,
UYVY,
VYUY,
YUV,
YVU,
RGB,
BGR,
RGBA,
BGRA,
ARGB,
ABGR,
UVY,
VUY,
BGR_PLANAR,
YVU_PLANAR,
XYUV,
RANK_BUTT = 100
} img_rank_type_e;
typedef enum VpcPixelFormat {
D8 = 0,
D16 = 1,
D24 = 2,
D32 = 3,
D48 = 4,
D64 = 5,
D96 = 6,
YUV422PKT = 15,
IDEL = 100
} vpc_pixel_fmt_e;
typedef enum PlannarFormat {
YUV_PLANNAR = 0,
RGB_PLANNAR,
BUTT_PLANNAR,
} plannar_fmt_e;
typedef enum VpcPictureFormat {
YUV420_SEMI_PLANNAR = 0x00,
YUV422_SEMI_PLANNAR = 0x01,
YUV444_SEMI_PLANNAR = 0x02,
YUV440_SEMI_PLANNAR = 0x03,
YUV411_SEMI_PLANNAR = 0x04,
YUV420_PLANNAR = 0x10,
YUV422_PLANNAR = 0x11,
YUV444_PLANNAR = 0x12,
YUV440_PLANNAR = 0x13,
YUV411_PLANNAR = 0x14,
RGB888_PLANNAR = 0x20,
RGB888_PLANNAR_FP16 = 0x21,
RGB888_PLANNAR_FP32 = 0x22,
RGB888_PLANNAR_BF16 = 0x23,
RGB888_PLANNAR_INT16 = 0x24,
RGB888_PLANNAR_INT32 = 0x25,
RGB888_PLANNAR_INT64 = 0x26,
RGB888_PLANNAR_UINT16 = 0x27,
RGB888_PLANNAR_UINT32 = 0x28,
RGB888_PLANNAR_UINT64 = 0x29,
RGB888_PLANNAR_INT8 = 0x2A,
YUV422_PACKED = 0x30,
YUV444_PACKED = 0x31,
XYUV444_PACKED = 0x32,
YUV420_TILE_32x4 = 0x33,
RGB888_PACKED = 0x40,
XRGB8888_PACKED = 0x41,
RGB888_PACKED_FP16 = 0x42,
RGB888_PACKED_FP32 = 0x43,
RGB888_PACKED_BF16 = 0x44,
RGB888_PACKED_INT16 = 0x45,
RGB888_PACKED_INT32 = 0x46,
RGB888_PACKED_UINT16 = 0x48,
RGB888_PACKED_UINT32 = 0x49,
RGB888_PACKED_INT8 = 0x4B,
YUV400 = 0x50,
YUV400_FP16 = 0x51,
YUV400_FP32 = 0x52,
YUV400_FP64 = 0x53,
YUV400_BF16 = 0x54,
YUV400_INT16 = 0x55,
YUV400_INT32 = 0x56,
YUV400_INT64 = 0x57,
YUV400_UINT16 = 0x58,
YUV400_UINT32 = 0x59,
YUV400_UINT64 = 0x5A,
YUV400_INT8 = 0x5B,
RAW12_YYUV = 0x60,
RAW12_RGGB = 0x61,
VPC_PICTURE_FORMAT_BUTT
} vpc_pic_fmt_e;
typedef enum UvupMethod {
DUPLICATE,
INTERPOLATION,
UVUP_METHOD_BUTT,
} uvup_method_e;
typedef enum ChannelOutType {
AI_CHANNEL_OUT,
RAW12_CHANNEL_OUT = 1,
PYRAMID_CHANNEL_OUT = 1,
TRANSFORAM_CHANNEL_OUT = 2,
POINTNET_CHANNEL_OUT = 2,
WRAP_CHANNEL_OUT,
NORMAL_BLEND_CHANNEL_OUT,
MULTI_BLEND_CHANNEL_OUT,
AFFINE_CHANNEL_OUT,
CHANNEL_OUT_TYPE_BUTT
} channel_out_type_e;
typedef enum ReadType {
RDMA_CHANNEL,
CVDR_CHANNEL,
CACHE_CHANNEL,
ROTATE_CHANNEL
} read_type_e;
typedef enum BitWidth {
BIT_8,
BIT_10
} bitwidth_e;
typedef enum CacheRunMode {
PADDING_OR_BLKTRANS,
AFFINE_BILINEAR,
AFFINE_NEAREST,
AFFINE_BILINEAR_3D,
AFFINE_NEAREST_3D
} cache_run_mode_e;
typedef enum MultiLevelZoom {
SERIES_MODE = 1,
ONE_TO_THREE_MODE = 2,
DUAL_PYRAMID_MODE = 3
} multi_level_zoom_e;
typedef enum RndMode {
RND_NEAREST_EVEN,
RND_ZERO,
RND_POS_INF,
RND_NEG_INF,
RND_NEAREST_UP,
RND_AWAY_FROM_ZERO,
RND_NORMAL,
RND_BUTT
} run_mode_e;
typedef enum TransformMode {
TRANSFORM_MODE_NONE,
TRANSFORM_MODE_ROTATE,
TRANSFORM_MODE_CROP,
TRANSFORM_MODE_DMA,
} transform_mode_e;
#endif