GstCUDA - Features and Limitations: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
No edit summary
Line 25: Line 25:
* Provides the necessary APIs to directly handle NVMM buffers types to achieve the best possible performance on the Tegra platforms.
* Provides the necessary APIs to directly handle NVMM buffers types to achieve the best possible performance on the Tegra platforms.
* Supports heavy CUDA algorithms and big amounts of data to be processed on the GPU without performance being affected due to copies or memory conversions. Could handle 2x 4K 60fps streams simultaneously.
* Supports heavy CUDA algorithms and big amounts of data to be processed on the GPU without performance being affected due to copies or memory conversions. Could handle 2x 4K 60fps streams simultaneously.
* Provides a one input/output pad video filter GStreamer element ('''''cudafilter'''''), that allows video frames to be processed by the GPU using a custom CUDA library algorithm. This element executes the CUDA algorithm from a custom CUDA library (XXX.so file) loaded dynamically during run-time, passed trough an element's property. It is ideal for quick prototyping, because the CUDA algorithm is completely separate from the GStreamer element, so the user could make modifications to the CUDA algorithm, recompile the custom CUDA library and run the GStreamer pipeline again to test it.
* Provides a one input/output pad video filter GStreamer element ('''''cudafilter'''''), that allows video frames to be processed by the GPU using a custom CUDA library algorithm. This element executes the CUDA algorithm from a custom CUDA library (XXX.so file) loaded dynamically during run-time, passed trough an element's property. It is ideal for quick prototyping, because the CUDA algorithm is separated from the GStreamer element, so the user could make modifications to the CUDA algorithm, recompile the custom CUDA library and run the GStreamer pipeline again to test it.
* Provides a one input/output pad video filter GStreamer element ('''''cudadebayer''''') that executes a CUDA based bayer to RGB conversion algorithm. This element has the CUDA algorithm integrated on it.
* Provides a one input/output pad video filter GStreamer element ('''''cudadebayer''''') that executes a CUDA based bayer to RGB conversion algorithm. This element has the CUDA algorithm integrated on it.



Revision as of 17:37, 22 September 2017


Supported Platforms


Home

Building and Installation Guide



This page describes the GstCUDA features and limitations.

GstCUDA project general characteristics

The GstCUDA project exposes the following general characteristics:

  • CUDA algorithm easy integration into GStreamer pipelines.
  • Complexity abstraction of both CUDA and GStreamer.
  • Best performance assurance for GStreamer/CUDA applications on Tegra platforms.


Key Features

The GstCUDA project exposes the following general key features:

  • Offers a framework allowing users to develop custom GStreamer elements that could execute any CUDA algorithm. The framework consists in a series of base classes that abstracts the complexity of GStreamer and CUDA integration.
  • Guarantees zero memory copy interface between CUDA and GStreamer on Tegra X1/X2 platforms.
  • Provides the necessary APIs to directly handle NVMM buffers types to achieve the best possible performance on the Tegra platforms.
  • Supports heavy CUDA algorithms and big amounts of data to be processed on the GPU without performance being affected due to copies or memory conversions. Could handle 2x 4K 60fps streams simultaneously.
  • Provides a one input/output pad video filter GStreamer element (cudafilter), that allows video frames to be processed by the GPU using a custom CUDA library algorithm. This element executes the CUDA algorithm from a custom CUDA library (XXX.so file) loaded dynamically during run-time, passed trough an element's property. It is ideal for quick prototyping, because the CUDA algorithm is separated from the GStreamer element, so the user could make modifications to the CUDA algorithm, recompile the custom CUDA library and run the GStreamer pipeline again to test it.
  • Provides a one input/output pad video filter GStreamer element (cudadebayer) that executes a CUDA based bayer to RGB conversion algorithm. This element has the CUDA algorithm integrated on it.


Limitations

The current release exposes the following limitations and known bugs:

  • It only supports Tegra X1/X2 platforms. There are plans in the future to extend support for PC systems that has Nvidia's GPUs.
  • It only supports NVMM memory type buffers as input. There are plans in the future to extend support for EGL memory type buffers and V4L2 buffers being directly accepted as inputs.




Supported Platforms


Home

Building and Installation Guide