/* * stereo.h * * History: * 2018/09/17 - [Xu Liang] created file * * Copyright (c) 2018 Ambarella, Inc. * * This file and its contents ("Software") are protected by intellectual * property rights including, without limitation, U.S. and/or foreign * copyrights. This Software is also the confidential and proprietary * information of Ambarella, Inc. and its licensors. You may not use, reproduce, * disclose, distribute, modify, or otherwise prepare derivative works of this * Software or any portion thereof except pursuant to a signed license agreement * or nondisclosure agreement with Ambarella, Inc. or its authorized affiliates. * In the absence of such an agreement, you agree to promptly notify and return * this Software to Ambarella, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, * MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL AMBARELLA, INC. OR ITS AFFILIATES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; COMPUTER FAILURE OR MALFUNCTION; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #ifndef __STEREO_H__ #define __STEREO_H__ /*! @file stereo.h * @brief This file defines stereo message type. */ #ifdef __cplusplus extern "C" { #endif #include /*! @addtogroup stereo-helper * @{ */ /*! @macros MAX_OBJECT_NUMBER * @brief define max object detection number. */ #define MAX_OBJECT_NUMBER (32) /*! @macros BBOX_POINT_NUMBER * @brief define 3d BBOX point number. */ #define BBOX_POINT_NUMBER (8) /*! @macros SPU_OUTPUT_SERVER * @brief define spu socket server. */ #define SPU_OUTPUT_SERVER "/tmp/spu_output.server" /*! @} */ /* End of stereo-helper */ /*! @addtogroup stereo-struct * @{ */ typedef struct pinhole_camera_t { uint32_t id; /*!< input number into arm vo task. */ uint32_t width; /*!< image width */ uint32_t height; /*!< image height */ float ku; /*!< horizontal scale factor [px] */ float kv; /*!< vertical scale factor [px] */ float u0; /*!< x coord of principal point [px] */ float v0; /*!< y coord of principal point [px] */ float baseline; /*!< baseline for stereo views, 0.0f for monocular [m] */ float camera_to_body_orientation[4]; /*!< a quaternion representing the camera orientation expressed in the body reference system */ float camera_to_body_position[3]; /*!< a vector representing the camera position expressed in the body reference system [m] */ } pinhole_camera_t; typedef struct visual_point2d_s { uint16_t u; /*!< x coordinate */ uint16_t v; /*!< y coordinate */ } visual_point2d_t; typedef struct visual_object_s { uint32_t object_id; /*!< object id */ visual_point2d_t bbox[BBOX_POINT_NUMBER]; /*!< coordinate[pixel] */ uint16_t width; /*!< object width[cm] */ uint16_t height; /*!< object height[cm] */ uint16_t depth; /*!< object depth[cm] */ uint16_t distance; /*!< object distance[cm] */ uint16_t distance_from_gnd; /*!< object distance from ground[cm] */ uint16_t is_positive; /*!< 1-true, 0-false */ } visual_object_t; typedef struct visual_format_s { uint32_t object_cnt; /*!< object number */ pinhole_camera_t pinhole_camera; /*!< pinhole camera information*/ visual_object_t visual_object[MAX_OBJECT_NUMBER]; /*!< object information */ } visual_format_t; typedef struct dsi_info_s { uint32_t img_width; /*!< dsi width */ uint32_t img_pitch; /*!< dsi pitch */ uint32_t img_height; /*!< dsi height */ uint32_t dsi_offset; /*!< dsi offset */ } dsi_info_t; typedef struct spu_output_msg_s { dsi_info_t dsi_info; /*!< dsi information */ visual_format_t visual_format; /*!< visual format */ dsi_info_t msb_stream_info; /*!< MSB5p3 stream info */ dsi_info_t lsb_stream_info; /*!< LSB5p3 stream info */ dsi_info_t stream_me1_info; /*!< me1 info for above two streams */ dsi_info_t stream_me0_info; /*!< me0 info for above two streams */ } spu_output_msg_t; /*! @} */ /* End of stereo-struct */ #ifdef __cplusplus } #endif #endif