2026-04-12 17:47:54 +08:00

109 lines
4.3 KiB
C

/*
*******************************************************************************
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
*
* +-----------------------------------------------------------------+
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
* | |
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
* | VATICS(KNERON) INC. |
* +-----------------------------------------------------------------+
*
*******************************************************************************
*/
#ifndef MSG_VIDEO_H
#define MSG_VIDEO_H
#ifdef __cplusplus
extern "C" {
#endif
#define OSD_STR_SIZE 64
/*========== Video Encoder =========*/
typedef struct
{
/* Common */
unsigned int type; // 0: H.264, 1: H.265, 2: MJPEG
unsigned int w; // encoding width
unsigned int h; // encoding height
unsigned int fps; // encoding fps
unsigned int qp; // qp
unsigned int gop; // gop
unsigned int bitrate; // bitrate
unsigned int advanced_mode; /**< consider 0 -> fps priority, 1 - > quality priority, 2 -> customized */
unsigned int min_qp; // for customized mode only
unsigned int max_qp; // for customized mode only
/* H.264 only */
unsigned int min_fps; // for customized mode only
} msg_video_t;
typedef struct
{
int output_index;
char str[OSD_STR_SIZE];
} msg_osd_t;
typedef struct
{
/* ROI window mode */
unsigned int enable; //! Enable ROI or not
unsigned int window_idx; //! H.264: 0~7, H.265: 0~63
//! Window index 7 in H.264 is background window.
//! Background window can not set position and it will cover all picture.
/* H264: one macroblock is 16x16 pixels, H265: one macroblock is 64x64 pixels */
unsigned int start_x; //! The x start position of the macroblock
unsigned int start_y; //! The y start position of the macroblock
unsigned int end_x; //! The x end position of the macroblock
unsigned int end_y; //! The y end position of the macroblock
int qp; //! Delta QP
unsigned int enc_interval; //! Encoding Interval: ROI window in H.265 do not support interval parameter.
} msg_roi_t;
/**
* @struct msg_fec_t
* @brief The structure for the fisheye correction.
*/
typedef struct
{
/* fisheye correction */
int output_index; /*!< The output index */
int mode; /*!< 0:ori, 1:p360, 2:p180_a, 3:p180_s, 4:p180_t, 5:6r, 6:4r, 7:1p2r, 8:1o3r, 9: sphere, 10:1r, 11:p360_s */
float pan; /*!< Pan (reserved): value range depends on de-warping mode, please refer to coeff_gen.h */
float tilt; /*!< Tilt (reserved): value range depends on de-warping mode, please refer to coeff_gen.h */
float zoom; /*!< Zoom (reserved) value range depends on de-warping mode, please refer to coeff_gen.h */
float focal; /*!< Focal: value range depends on de-warping mode, please refer to coeff_gen.h */
int cell_idx; /*!< Index of a certain partition of the layout, range: depends on layout */
int step; /*!< The step count. -1 means infinite or positive integer */
float pan_step; /*!< The step unit of pan */
float tilt_step; /*!< The step unit of tilt */
float zoom_step; /*!< The step unit of zoom */
float curvature; /*!< The curvature */
float slope; /*!< The slope */
float spin; /*!< The spin */
int app_type; /*!< The applied type: 0: ceiling, 1: table, 2: wall */
int lens; /*!< 0: LENS_STEREOGRAPHIC, 1: LENS_EQUISOLIDANGLE, 2: LENS_EQUIDISTANT, 3: LENS_ORTHOGRAPHIC, 5: LENS_NODISTORT */
float dst_offset_x; /*!< The destination offset in the x direction. */
float dst_offset_y; /*!< The destination offset in the y direction. */
float dst_xy_ratio; /*!< The destination x/y ratio. Range: 0.1 ~ 2 */
//int enable_object_tracking;
} msg_fec_t;
#ifdef __cplusplus
}
#endif
#endif