• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>

  • DriveWorks SDK Reference
    5.10.90 Release
    For Test and Development only

    All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    Camera Workflow

    Initialize the Sensor Abstraction Layer

    dwSAL_initialize(&sal, sdk);
    DW_API_PUBLIC dwStatus dwSAL_initialize(dwSALHandle_t *const sal, dwContextHandle_t const context)
    Creates and initializes a SAL (sensor abstraction layer) module.

    Initialize the parameter string for a camera sensor, in this case we request a processed image (yuv), a camera ar0231-rccb with sf3324 module and BAE exposure type at group C. We specify a gmsl protocol and create the sensor

    dwSensor cameraSensor = DW_NULL_HANDLE;
    params.parameters = "output-format=yuv,camera-type=ar0231-rccb-bae-sf3324,camera-group=c";
    params.protocol = "camera.gmsl";
    dwSAL_createSensor(&cameraSensor, params, sal);
    #define DW_NULL_HANDLE
    Definition: Types.h:83
    const char8_t * parameters
    Array of additional parameters provided to sensor creation.
    Definition: Sensors.h:106
    const char8_t * protocol
    Name of the protocol.
    Definition: Sensors.h:99
    DW_API_PUBLIC dwStatus dwSAL_createSensor(dwSensorHandle_t *const sensor, dwSensorParams const params, dwSALHandle_t const sal)
    Creates a new sensor managed by the SAL module with the given parameters.
    Holds sets of parameters for sensor creation.
    Definition: Sensors.h:95

    after starting the sensor, the camera will start acquiring frames

    while(loop) {
    DW_API_PUBLIC dwStatus dwSensor_start(dwSensorHandle_t const sensor)
    Starts the sensor previously successfully created with 'dwSAL_createSensor()'.

    We read a frame, which is stored as a dwCameraFrameHandle_t and specify a timeout value in microseconds

    ...
    dwTime_t timeout = 33000;
    dwSensorCamera_readFrame(&frameHandle, timeout, cameraSensor);
    ...
    DW_API_PUBLIC dwStatus dwSensorCamera_readFrame(dwCameraFrameHandle_t *const frameHandle, dwTime_t const timeoutUs, dwSensorHandle_t const sensor)
    Reads a frame handle from the camera sensor.
    struct dwCameraFrame * dwCameraFrameHandle_t
    Handle to captured frame.
    Definition: Camera.h:73
    int64_t dwTime_t
    Specifies a timestamp unit, in microseconds.
    Definition: BasicTypes.h:63

    many outputs can be return after reading, the only extra cost are eventual streaming and conversion, depending on the output chosen. Also the output type is influenced by how we created the camera. Since we specified processed image (yuv), we can request a processed image as output. In order to know what properties such an image has, it is possible to call dwSensorCamera_getImageProperties() with dwCameraOutputType equal to DW_CAMERA_OUTPUT_NATIVE_PROCESSED.

    ...
    dwImageHandle_t imageNative;
    dwSensorCamera_getImage(&imageNative, DW_CAMERA_IMAGE_OUTPUT_NATIVE_PROCESSED,...);
    dwImageHandle_t imageCUDA_RGBA;
    dwSensorCamera_getImage(&imageCUDA_RGBA, DW_CAMERA_IMAGE_OUTPUT_CUDA_RGBA,...);
    // CODE: use imageNative (maybe send to serializer)
    // CODE: use imageCUDA_RGBA
    ...
    DW_API_PUBLIC dwStatus dwSensorCamera_getImage(dwImageHandle_t *const image, dwCameraOutputType const type, dwCameraFrameHandle_t const frame)
    Gets the output image/s image in a format specified by the output type.
    struct dwImageObject * dwImageHandle_t
    Definition: Image.h:102

    return frames to the fifo

    ...
    }
    DW_API_PUBLIC dwStatus dwSensorCamera_returnFrame(dwCameraFrameHandle_t *const frameHandle)
    Returns a frame to the camera after it has been consumed.

    stop the sensor and release

    dwSAL_releaseSensor(&cameraSensor);
    DW_API_PUBLIC dwStatus dwSensor_stop(dwSensorHandle_t const sensor)
    Stops the sensor.
    DW_API_PUBLIC dwStatus dwSAL_releaseSensor(dwSensorHandle_t const sensor)
    Releases a sensor managed by the SAL module.

    For more details see:

    人人超碰97caoporen国产