Program Listing for File SimOneStreamingAPI.h

Return to documentation for file ( api\Cpp_API_Reference\SimOneStreamingAPI.h )

// ==========================================================================
// Copyright (C) 2018 - 2021 Beijing 51WORLD Digital Twin Technology Co., Ltd.
// , and/or its licensors.  All rights reserved.
//
// The coded instructions, statements, computer programs, and/or related
// material (collectively the "Data") in these files contain unpublished
// information proprietary to Beijing 51WORLD Digital Twin Technology Co., Ltd.
// ("51WORLD") and/or its licensors,  which is protected by the People's
// Republic of China and/or other countries copyright law and by
// international treaties.
//
// The Data may not be disclosed or distributed to third parties or be
// copied or duplicated, in whole or in part, without the prior written
// consent of 51WORLD.
//
// The copyright notices in the Software and this entire statement,
// including the above license grant, this restriction and the following
// disclaimer, must be included in all copies of the Software, in whole
// or in part, and all derivative works of the Software, unless such copies
// or derivative works are solely in the form of machine-executable object
// code generated by a source language processor.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
// 51WORLD DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
// WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF
// NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
// OR ARISING FROM A COURSE OF DEALING, USAGE, OR TRADE PRACTICE. IN NO
// EVENT WILL 51WORLD AND/OR ITS LICENSORS BE LIABLE FOR ANY LOST
// REVENUES, DATA, OR PROFITS, OR SPECIAL, DIRECT, INDIRECT, OR
// CONSEQUENTIAL DAMAGES, EVEN IF 51WORLD AND/OR ITS LICENSORS HAS
// BEEN ADVISED OF THE POSSIBILITY OR PROBABILITY OF SUCH DAMAGES.
// ==========================================================================
#pragma once

#if defined(WIN32) || defined(_WIN32)
#define SIMONE_NET_API __declspec(dllexport)
#elif defined(__linux__) || defined(__linux)
#define SIMONE_NET_API __attribute__((visibility("default")))
#endif

#pragma pack(push)
#pragma pack(1)
struct SimOne_Streaming_Data
{
    long long timestamp = 0; // timestamp millisecond
    int frame; // frame with 1000hz
    int version = 0; // API version
};
// ----------------------------
// Image data (SimOne Output)
// ----------------------------
#define SOSM_IMAGE_WIDTH_MAX 3840
#define SOSM_IMAGE_HEIGHT_MAX 2160
#define SOSM_IMAGE_DATA_SIZE_MAX SOSM_IMAGE_WIDTH_MAX*SOSM_IMAGE_HEIGHT_MAX*3
enum ESimOne_Streaming_Image_Format
{
    ESimOne_Streaming_Image_Format_RGB = 0,
    ESimOne_Streaming_Image_Format_RLESegmentation,
    ESimOne_Streaming_Image_Format_JPEG,
    ESimOne_Streaming_Image_Format_H265
};

struct SimOne_Streaming_Image : public SimOne_Streaming_Data
{
    int width; // Image resolution width 1920 max
    int height; // Image resolution height 1200 max
    ESimOne_Streaming_Image_Format format; // Image format, RGB only for now
    int imageDataSize; // image data size
    char imageData[SOSM_IMAGE_DATA_SIZE_MAX]; // 1920 x 1200 x 3 max
};
// ----------------------------
// Point cloud data (SimOne Output)
// ----------------------------
struct SimOne_Streaming_Point_XYZI
{
    float x;
    float y;
    float z;
    float intensity;
};

#define RADAR4D_POINTS_SIZE_MAX 1050
struct SimOne_Streaming_Radar4D_Point
{
    float azimuth;      // azimuth unit: deg
    float elevation;    // elevation unit : deg
    float range;        // range unit : m
    float doppler;      // doppler unit : m/s
    float rcs;          // rcs unit : dBsm
};

#define SOSM_POINT_DATA_SIZE_MAX 6429600 // PointCloud Max Memory Size
struct SimOne_Streaming_Point_Cloud : public SimOne_Streaming_Data
{
    int width;
    int height;
    int pointStep;
    int pointCloudDataSize;
    char pointCloudData[SOSM_POINT_DATA_SIZE_MAX];
};
#pragma pack(pop)

#ifdef __cplusplus
extern "C"
{
#endif
    namespace SimOneAPI {

        SIMONE_NET_API bool GetStreamingImage(const char *ip, unsigned short port, SimOne_Streaming_Image *pImage);

        SIMONE_NET_API bool SetStreamingImageUpdateCB(const  char* ip, unsigned short port, void(*cb)(SimOne_Streaming_Image *pImage));

        SIMONE_NET_API bool GetStreamingPointCloud(const  char* ip, unsigned short port, unsigned short infoPort, SimOne_Streaming_Point_Cloud *pPointCloud);

        SIMONE_NET_API bool SetStreamingPointCloudUpdateCB(const  char* ip, unsigned short port, unsigned short infoPort, void(*cb)(SimOne_Streaming_Point_Cloud *pPointCloud));

        SIMONE_NET_API bool GetStreamingRadar4DPointCloud(const  char* ip, unsigned short port, SimOne_Streaming_Point_Cloud *pPointCloud);

        SIMONE_NET_API bool SetStreamingRadar4DPointCloudUpdateCB(const  char* ip, unsigned short port, void(*cb)(SimOne_Streaming_Point_Cloud *pPointCloud));
    }
#ifdef __cplusplus
}
#endif