Difference between revisions of "GstCUDA - GstCUDA Framework"

From RidgeRun Developer Connection
Jump to: navigation, search
Line 11: Line 11:
  
  
Those base classes are based on the libGstCUDA API. It consists in a library that expose special structures and functions that abstracts the complexity of handle NVMM memory type buffers, extracts the data buffer to be processed and pass it to the GPU, and recover back the processed data from the GPU to the GStreamer element. Also, the methods implemented in the libGstCUDA API ensures an optimal performance, due to direct handling of NVMM memory type buffers and zero memory copy interface between GStreamer and CUDA.     
+
Those base classes are based on the libGstCUDA API. It consists in a library that expose special structures and functions that abstracts the complexity of: handle NVMM memory type buffers, extracts the data buffer to be processed and pass it to the GPU, and recover back the processed data from the GPU to the GStreamer element. Also, the methods implemented in the libGstCUDA API ensures an optimal performance, due to direct handling of NVMM memory type buffers and zero memory copy interface between GStreamer and CUDA.     
  
  

Revision as of 18:01, 4 October 2017


Building and Installation Guide


Home

libGstCUDA API



This page offers a description of the GstCUDA framework.

Description

GstCUDA offers a framework that allows users to easily develop custom GStreamer elements that executes 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 developer to focus on the CUDA algorithm logic, and accelerating time to market.


Those base classes are based on the libGstCUDA API. It consists in a library that expose special structures and functions that abstracts the complexity of: handle NVMM memory type buffers, extracts the data buffer to be processed and pass it to the GPU, and recover back the processed data from the GPU to the GStreamer element. Also, the methods implemented in the libGstCUDA API ensures an optimal performance, due to direct handling of NVMM memory type 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. This base classes are intended to help users in the develop of custom GStreamer/CUDA elements, by providing structures and functions that abstracts difficulty, avoids to replicate code, simplify and speeds up the development process, and reduce product time to market. Below there is a list that briefly describes the purpose of each provided 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 an user wants to develop its custom GStreamer/CUDA element, first should review the provided base classes to determine which one matches with it's GStreamer element and CUDA algorithm requirements. Then, should use the structures and functions provided in the chosen base class in the development of the custom element. Using the base classes will be more easier than writing the element from scratch or using only the libGstCUDA API.


GstCUDA Framework Index

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




Building and Installation Guide


Home

libGstCUDA API