GstCUDA - GstCUDA Framework

From RidgeRun Developer Connection
Jump to: navigation, search


Previous: Project Structure Index Next: libGstCUDA API


Nvidia-preferred-partner-badge-rgb-for-screen.png



Description

GstCUDA offers a framework that allows users to easily develop custom GStreamer elements that execute any CUDA algorithm. The GstCUDA framework is a series of base classes abstracting the complexity of both CUDA and GStreamer. With GstCUDA, developers avoid writing elements from scratch, thanks to the provided framework, allowing the developers to focus on the CUDA algorithm logic, thus accelerating time to market.

The base classes utilize libGstCUDA API. The library exposes special structures and functions abstracting the complexity of: handling NVMM memory buffers, extracting the data buffer to be processed and passing it to the GPU, and receiving the processed data from the GPU to route the processed data to the GStreamer element. Also, the methods implemented in libGstCUDA ensure optimal performance, due to direct handling of NVMM memory buffers and zero memory copy interface between GStreamer and CUDA.

There is a specific base class for each different filter element topology according to the number of sink and source pads required. These base classes are intended to help users develop custom GStreamer/CUDA elements, by providing structures and functions that abstract complexity, avoids replicated code, and simplifies and speeds up the development process. Below there is the list of base class:

  • GstCUDABaseFilter: Base class for single input/single output filter topology elements.
  • GstCUDABaseMISO: Base class for multiple input/single output filter topology elements.
  • GstCUDABaseSIMO: Base class for single input/multiple output filter topology elements.
  • GstCUDABaseMIMO: Base class for multiple input/multiple output filter topology elements.

If a user wants to develop a custom GStreamer/CUDA element, the developer first should review the provided base classes to determine which one matches their GStreamer element and CUDA algorithm requirements. Then the developer should use the structures and functions provided in the chosen base class in the development of the custom element. Using the base classes will remove the drudgery and common mistakes often made when working in a complex framework like GStreamer.

GstCUDA Framework Index

The following index gives a detailed description of the libGstCUDA APIs and the base classes provided in the GstCUDA framework.


Previous: Project Structure Index Next: libGstCUDA API