Program Listing for File xf_params.hpp

Return to documentation for file (/tmp/ws/src/vitis_common/include/common/xf_params.hpp)

/*
 * Copyright 2019 Xilinx, Inc.
 *
 * 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 _XF_PARAMS_H_
#define _XF_PARAMS_H_

#ifndef __cplusplus
#error C++ is needed to use this file!
#endif

#include "ap_int.h"

#define __ABS(X) ((X) < 0 ? (-(X)) : (X))

// Channels of an image
enum _channel_extract {
    XF_EXTRACT_CH_0, // Used by formats with unknown channel types
    XF_EXTRACT_CH_1, // Used by formats with unknown channel types
    XF_EXTRACT_CH_2, // Used by formats with unknown channel types
    XF_EXTRACT_CH_3, // Used by formats with unknown channel types
    XF_EXTRACT_CH_R, // Used to extract the RED channel
    XF_EXTRACT_CH_G, // Used to extract the GREEN channel
    XF_EXTRACT_CH_B, // Used to extract the BLUE channel
    XF_EXTRACT_CH_A, // Used to extract the ALPHA channel
    XF_EXTRACT_CH_Y, // Used to extract the LUMA channel
    XF_EXTRACT_CH_U, // Used to extract the Cb/U channel
    XF_EXTRACT_CH_V  // Used to extract the Cr/V/Value channel
};
typedef _channel_extract XF_channel_extract_e;

// Conversion Policy for fixed point arithmetic
enum _convert_policy { XF_CONVERT_POLICY_SATURATE, XF_CONVERT_POLICY_TRUNCATE };
typedef _convert_policy XF_convert_policy_e;

// Bit-depth conversion types
enum _convert_bit_depth {
    // Down-convert
    XF_CONVERT_16U_TO_8U,
    XF_CONVERT_16S_TO_8U,
    XF_CONVERT_32S_TO_8U,
    XF_CONVERT_32S_TO_16U,
    XF_CONVERT_32S_TO_16S,
    // Up-convert
    XF_CONVERT_8U_TO_16U,
    XF_CONVERT_8U_TO_16S,
    XF_CONVERT_8U_TO_32S,
    XF_CONVERT_16U_TO_32S,
    XF_CONVERT_16S_TO_32S
};
typedef _convert_bit_depth XF_convert_bit_depth_e;

// Thresholding types
enum _threshold_type {
    XF_THRESHOLD_TYPE_BINARY = 0,
    XF_THRESHOLD_TYPE_BINARY_INV = 1,
    XF_THRESHOLD_TYPE_TRUNC = 2,
    XF_THRESHOLD_TYPE_TOZERO = 3,
    XF_THRESHOLD_TYPE_TOZERO_INV = 4,
};
typedef _threshold_type XF_threshold_type_e;

// Thresholding types
enum _ccm_type {
    XF_CCM_bt2020_bt709 = 0,
    XF_CCM_bt709_bt2020 = 1,
    XF_CCM_rgb_yuv_601 = 2,
    XF_CCM_rgb_yuv_709 = 3,
    XF_CCM_rgb_yuv_2020 = 4,
    XF_CCM_yuv_rgb_601 = 5,
    XF_CCM_yuv_rgb_709 = 6,
    XF_CCM_yuv_rgb_2020 = 7,
    XF_CCM_full_from_16_235 = 8,
    XF_CCM_full_to_16_235 = 9,

};
typedef _ccm_type XF_ccm_type_e;

// Comparision types
enum _comparison_op { XF_CMP_EQ = 0, XF_CMP_GT = 1, XF_CMP_GE = 2, XF_CMP_LT = 3, XF_CMP_LE = 4, XF_CMP_NE = 5 };
typedef _comparison_op _comparison_op_e;

// Comparision types
enum _reduction_op { REDUCE_SUM = 0, REDUCE_AVG = 1, REDUCE_MAX = 2, REDUCE_MIN = 3 };
typedef _reduction_op _reduction_op_e;

// Pixel Per Cycle
enum _pixel_per_cycle {
    XF_NPPC1 = 1,
    XF_NPPC2 = 2,
    XF_NPPC4 = 4,
    XF_NPPC8 = 8,
    XF_NPPC16 = 16,
    XF_NPPC32 = 32,
    XF_NPPC64 = 64
};
typedef _pixel_per_cycle XF_nppc_e;

// Pixel types
enum _pixel_type {
    XF_8UP = 0,
    XF_8SP = 1,
    XF_16UP = 2,
    XF_16SP = 3,
    XF_32UP = 4,
    XF_32SP = 5,
    XF_19SP = 6,
    XF_32FP = 7,
    XF_35SP = 8,
    XF_24SP = 9,
    XF_20SP = 10,
    XF_48SP = 11,
    XF_2UP = 12,
    XF_9SP = 13,
    XF_9UP = 14,
    XF_24UP = 15,
    XF_64UP = 16,
    XF_10UP = 17,
    XF_12UP = 18,
    XF_40UP = 19,
    XF_48UP = 20,
    XF_30UP = 21,
    XF_36UP = 22,
    XF_96FP = 23
};
typedef _pixel_type XF_pixel_type_e;

// Word width
enum _word_width {
    XF_2UW = 0,
    XF_8UW = 1,
    XF_9UW = 2,
    XF_10UW = 3,
    XF_12UW = 4,
    XF_16UW = 5,
    XF_19SW = 6,
    XF_20UW = 7,
    XF_22UW = 8,
    XF_24UW = 9,
    XF_24SW = 10,
    XF_30UW = 11,
    XF_32UW = 12,
    XF_32FW = 13,
    XF_35SW = 14,
    XF_36UW = 15,
    XF_40UW = 16,
    XF_48UW = 17,
    XF_48SW = 18,
    XF_60UW = 19,
    XF_64UW = 20,
    XF_72UW = 21,
    XF_80UW = 22,
    XF_96UW = 23,
    XF_96SW = 24,
    XF_120UW = 25,
    XF_128UW = 26,
    XF_144UW = 27,
    XF_152SW = 28,
    XF_160UW = 29,
    XF_160SW = 30,
    XF_176UW = 31,
    XF_192UW = 32,
    XF_192SW = 33,
    XF_240UW = 34,
    XF_256UW = 35,
    XF_280SW = 36,
    XF_288UW = 37,
    XF_304SW = 38,
    XF_320UW = 39,
    XF_352UW = 40,
    XF_384UW = 41,
    XF_384SW = 42,
    XF_512UW = 43,
    XF_560SW = 44,
    XF_576UW = 45,
    XF_96FW = 46,
    XF_192FW = 47,
    XF_384FW = 48,
    XF_768FW = 49,
    XF_1536FW = 50
};
typedef _word_width XF_word_width_e;

// Filter size
enum _filter_size { XF_FILTER_3X3 = 3, XF_FILTER_5X5 = 5, XF_FILTER_7X7 = 7 };
typedef _filter_size XF_filter_size_e;

// Radius size for Non Maximum Suppression
enum _nms_radius { XF_NMS_RADIUS_1 = 1, XF_NMS_RADIUS_2 = 2, XF_NMS_RADIUS_3 = 3 };
typedef _nms_radius XF_nms_radius_e;

// Image Pyramid Parameters
enum _image_pyramid_params {
    XF_PYRAMID_TYPE_GXFSSIAN = 0,
    XF_PYRAMID_TYPE_LAPLACIAN = 1,
    XF_PYRAMID_SCALE_HALF = 2,
    XF_PYRAMID_SCALE_ORB = 3,
    XF_PYRAMID_SCALE_DOUBLE = 4
};
typedef _image_pyramid_params XF_image_pyramid_params_e;

// Magnitude computation
enum _normalisation_params { XF_L1NORM = 0, XF_L2NORM = 1 };
typedef _normalisation_params XF_normalisation_params_e;

enum _border_type {
    XF_BORDER_CONSTANT = 0,
    XF_BORDER_REPLICATE = 1,
    XF_BORDER_REFLECT = 2,
    XF_BORDER_WRAP = 3,
    XF_BORDER_REFLECT_101 = 4,
    XF_BORDER_TRANSPARENT = 5,
    XF_BORDER_REFLECT101 = XF_BORDER_REFLECT_101,
    XF_BORDER_DEFAULT = XF_BORDER_REFLECT_101,
    XF_BORDER_ISOLATED = 16,
};
typedef _border_type XF_border_type_e;

enum _structuring_element_shape {
    XF_SHAPE_RECT = 0,
    XF_SHAPE_ELLIPSE = 1,
    XF_SHAPE_CROSS = 2,

};
enum _wb_type {
    XF_WB_GRAY = 0,
    XF_WB_SIMPLE = 1,
};

// Phase computation
enum _phase_params { XF_RADIANS = 0, XF_DEGREES = 1 };
typedef _phase_params XF_phase_params_e;

// Types of Interpolaton techniques used in resize, affine and perspective
enum _interpolation_types { XF_INTERPOLATION_NN = 0, XF_INTERPOLATION_BILINEAR = 1, XF_INTERPOLATION_AREA = 2 };
typedef _interpolation_types _interpolation_types_e;

// loop dependent variables used in image pyramid
enum _loop_dependent_vars { XF_GXFSSIANLOOP = 8, XF_BUFSIZE = 12 };
typedef _loop_dependent_vars loop_dependent_vars_e;

// loop dependent variables used in image pyramid
enum _image_size { XF_SDIMAGE = 0, XF_HDIMAGE = 1 };
typedef _image_size image_size_e;

// enumerations for HOG feature descriptor
enum _input_image_type { XF_GRAY = 1, XF_RGB = 3 };
typedef _input_image_type input_image_type_e;

// enumerations for HOG feature descriptor
enum _HOG_output_type { XF_HOG_RB = 0, XF_HOG_NRB = 1 };
typedef _HOG_output_type HOG_output_type_e;

enum use_model { XF_STANDALONE = 0, XF_PIPELINE = 1 };
typedef use_model use_model_e;

// enumerations for HOG feature descriptor
enum _HOG_type { XF_DHOG = 0, XF_SHOG = 1 };
typedef _HOG_type HOG_type_e;

// enumerations for Stereo BM
enum XF_stereo_prefilter_type { XF_STEREO_PREFILTER_SOBEL_TYPE, XF_STEREO_PREFILTER_NORM_TYPE };
/****************************new************************/
// enumerations for Demosaicing
enum XF_demosaicing {
    XF_BAYER_BG,
    XF_BAYER_GB,
    XF_BAYER_GR,
    XF_BAYER_RG,
};
// typedef XF_stereo_prefilter_type XF_stereo_pre_filter_type_e;
// enum _pixel_percycle
//{
//  XF_NPPC1  = 0,
//  XF_NPPC8  = 3,
//  XF_NPPC16 = 4
//};
// typedef _pixel_percycle XF_nppc_e;

// enumerations for Architecture
enum _ARCH_type {
    XF_STREAM = 0,
    XF_MEMORYMAPPED = 1

};
typedef _ARCH_type _ARCH_type_e;

enum _pixeltype {
    XF_8UC1 = 0,
    XF_16UC1 = 1,
    XF_16SC1 = 2,
    XF_32UC1 = 3,
    XF_32FC1 = 4,
    XF_32SC1 = 5,
    XF_8UC2 = 6,
    XF_8UC4 = 7,
    XF_2UC1 = 8,
    XF_8UC3 = 9,
    XF_16UC3 = 10,
    XF_16SC3 = 11,
    XF_16UC4 = 12,
    XF_10UC1 = 13,
    XF_10UC4 = 14,
    XF_12UC1 = 15,
    XF_12UC4 = 16,
    XF_10UC3 = 17,
    XF_12UC3 = 18,
    XF_32FC3 = 19
};
typedef _pixeltype XF_npt_e;

enum _ramtype {
    RAM_1P_BRAM = 0,
    RAM_1P_LUTRAM = 1,
    RAM_1P_URAM = 2,
    RAM_2P_BRAM = 3,
    RAM_2P_LUTRAM = 4,
    RAM_2P_URAM = 5,
    RAM_S2P_BRAM = 6,
    RAM_S2P_LUTRAM = 7,
    RAM_S2P_URAM = 8,
    RAM_T2P_BRAM = 9,
    RAM_T2P_URAM = 10
};
typedef _ramtype XF_ramtype_e;

#endif //_XF_PARAMS_H_