Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>

  • DriveWorks SDK Reference
    5.6.215 Release
    For Test and Development only

    All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    Image Streamer

    This tutorial demonstrates how to stream an image from host (CPU) memory, to device (CUDA) memory.

    The ImageStreamer module is accessed through a handle:

    #define DW_NULL_HANDLE
    Definition: Types.h:96
    struct dwImageStreamerObject * dwImageStreamerHandle_t
    Definition: ImageStreamer.h:61

    Creating an Image

    To create an image for streaming:

    // the image is going to be format interleaved RGB and type UINT_8
    cpuProp.type = DW_IMAGE_CPU;
    cpuProp.width = imageWidth;
    cpuProp.height = imageHeight;
    cpuProp.format = DW_IMAGE_FORMAT_RGB_UINT8;
    cpuProp.memoryLayout = DW_IMAGE_MEMORY_TYPE_DEFAULT; // not necessary to specify if init with {}
    //Create an image with these properties
    dwImage_create(&rgbCPU, cpuProp, m_context);
    dwImageType type
    Specifies the type of image.
    Definition: Image.h:396
    struct dwImageObject * dwImageHandle_t
    Definition: Image.h:109
    DW_API_PUBLIC dwStatus dwImage_create(dwImageHandle_t *const image, dwImageProperties properties, dwContextHandle_t const ctx)
    Creates and allocates resources for a dwImageHandle_t based on the properties passed as input.
    @ DW_IMAGE_CPU
    Definition: Image.h:98
    @ DW_IMAGE_MEMORY_TYPE_DEFAULT
    the default memory layout for a given image type, can be either pitch or block
    Definition: Image.h:202
    @ DW_IMAGE_FORMAT_RGB_UINT8
    Not backed by NvSci.
    Definition: Image.h:143
    Defines the properties of the image.
    Definition: Image.h:394

    Initializing the ImageStreamer Module

    Once an image is creating for streaming, an ImageStreamer must be initialized to stream the CPU image to CUDA.
    In the following example, the dwImageStreamerHandle_t handle initializes the ImageCapture module to stream
    an image with cpuProp image properties to type dwImageCUDA:

    // streamer from CPU to CUDA
    dwImageStreamer_initialize(streamerCPU2CUDA, &cpuProp, DW_IMAGE_CUDA, dwContext);
    @ DW_IMAGE_CUDA
    Definition: Image.h:99
    DW_API_PUBLIC dwStatus dwImageStreamer_initialize(dwImageStreamerHandle_t *streamer, const dwImageProperties *from, dwImageType to, dwContextHandle_t ctx)
    Creates and initializes the image streamer capable of moving images between different API types.

    Streaming the Image

    To stream the image:

    dwImageStreamer_producerSend(rgbCPU,streamerCPU2CUDA);
    dwImageStreamer_consumerReceive(&rgbCUDA,streamerCPU2CUDA);
    DW_API_PUBLIC dwStatus dwImageStreamer_consumerReceive(dwImageHandle_t *image, dwTime_t const timeoutUs, dwImageStreamerHandle_t const streamer)
    Receive a pointer to a dwImageHandle_t from the streamer, acting as a consumer.
    DW_API_PUBLIC dwStatus dwImageStreamer_producerSend(dwImageHandle_t image, dwImageStreamerHandle_t const streamer)
    Sends an image through the streamer acting as the producer.

    Returning the Images

    An image must be returned once streaming to CUDA memory is complete:

    dwImageStreamer_consumerReturn(rgbCUDA,streamerCPU2CUDA);
    dwImageStreamer_producerReturn(rgbCPU,streamerCPU2CUDA);
    DW_API_PUBLIC dwStatus dwImageStreamer_consumerReturn(dwImageHandle_t *image, dwImageStreamerHandle_t const streamer)
    Return the received image back to the producer.
    DW_API_PUBLIC dwStatus dwImageStreamer_producerReturn(dwImageHandle_t *const image, dwTime_t const timeoutUs, dwImageStreamerHandle_t const streamer)
    The producer streamer waits for the image sent to be returned by the consumer.

    Releasing the Handle

    To release the handle:

    dwImageStreamer_release(streamerCPU2CUDA);
    DW_API_PUBLIC dwStatus dwImageStreamer_release(dwImageStreamerHandle_t streamer)
    Releases the image streamer.

    To see a full demonstration of this workflow, please refer to Simple Image Streamer Sample.

    人人超碰97caoporen国产