GstCUDA: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
No edit summary
 
(64 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<seo title="GstCUDA | CUDA | GStreamer CUDA" titlemode="replace" keywords=" GStreamer, CUDA, cuda, CUDA algorithm, TX1, TX2, Tegra, TEGRA, GstCuda, gstcuda, gst-cuda, GStreamer Multimedia Framework, GStreamer applications, GStreamer pipelines, CUDA zero memory copies, CUDA non-memcpy, NVMM, Embedded Linux, Nvidia, NVIDIA, video processing on GPU, GPU, GPU video processing, multimedia hardware acceleration, parallel video process, Linux Software development, Embedded Linux SDK, Embedded Linux Application development"  description="GstCUDA is a RidgeRun developed GStreamer plug-in enabling CUDA algorithm easy integration into GStreamer pipelines."></seo>
{{GstCUDA/Head|previous=|next=Features and Limitations|metakeywords=gstcuda framework, gstcuda overview, gstcuda features, gstcuda overview, cuda algorithm}}


=Overview=
<center>
GstCUDA is a RidgeRun developed, GStreamer plug-in and framework enabling CUDA algorithm easy integration into GStreamer pipelines. 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, allowing the developer to focus on the algorithm logic, and accelerating time to market.
<table>
<tr>
<td>
<html>
<div id='product-component-11074b13486'></div>
    <script type="text/javascript">
    /*<![CDATA[*/


    (function () {
      var scriptURL = 'https://sdks.shopifycdn.com/buy-button/latest/buy-button-storefront.min.js';
      if (window.ShopifyBuy) {
        if (window.ShopifyBuy.UI) {
          ShopifyBuyInit();
        } else {
          loadScript();
        }
      } else {
        loadScript();
      }


GstCUDA offers a GStreamer plugin that contains a set of elements, that are ideal for GStreamer/CUDA quick prototyping. Those elements consists in a set of filters with different input/output pads combinations, that are capable to load on run-time an external custom CUDA library that contains the algorithm to be executed on the GPU on each frame that passes through them. GstCUDA plugin, allows users to develop their own CUDA processing library, pass the library into the
      function loadScript() {
GstCUDA filter element that best adapts to the algorithm requirements, which executes the library on the GPU, passing upstream frames from the GStreamer pipeline to the GPU and passing the modified frames downstream to the next element in the GStreamer pipeline. Those elements were conceived thinking in the customers needs of quick prototyping and reducing product time to market. So, it makes those elements fully adaptable to different project needs, what converts GstCUDA in a powerful tool, that can't be missing in a CUDA/GStreamer project development.
        var script = document.createElement('script');
        script.async = true;
        script.src = scriptURL;
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
        script.onload = ShopifyBuyInit;
      }


      function ShopifyBuyInit() {
        var client = ShopifyBuy.buildClient({
          domain: 'ridgerun1.myshopify.com',
          storefrontAccessToken: 'b0ca98633a82de5d2f63cd51f5af30ac',
        });


One remarkable feature of GstCUDA is that it provides a zero memory copy interface between CUDA and GStreamer on TEGRA X1/X2 platforms. This enables heavy algorithms and large amounts of data (up to 2x 4K 60fps streams) to be processed on CUDA without affecting the performance due to copies or memory conversions. GstCUDA provides the necessary APIs to directly handle NVMM buffers type to achieve the best possible performance on TEGRA X1/X2 platforms. It provides a series of base classes and utilities that abstract the complexity of handle memory interface between GStreamer and CUDA, so the developer can focus on what actually gives value to the end product. GstCuda ensures an optimal performance for GStreamer/CUDA applications on TEGRA platforms.
        ShopifyBuy.UI.onReady(client).then(function (ui) {
          ui.createComponent('product', {
            id: [1684585742407],
            node: document.getElementById('product-component-11074b13486'),
            moneyFormat: '%24%7B%7Bamount%7D%7D',
            options: {
  "product": {
    "variantId": "all",
    "width": "240px",
    "contents": {
      "imgWithCarousel": false,
      "variantTitle": false,
      "description": false,
      "buttonWithQuantity": false,
      "quantity": false
    },
    "text": {
      "button": "BUY NOW"
    },
    "styles": {
      "product": {
        "@media (min-width: 601px)": {
          "max-width": "100%",
          "margin-left": "0",
          "margin-bottom": "50px"
        }
      },
      "button": {
        "background-color": "#007493",
        "font-size": "18px",
        "padding-top": "17px",
        "padding-bottom": "17px",
        ":hover": {
          "background-color": "#006884"
        },
        ":focus": {
          "background-color": "#006884"
        }
      },
      "quantityInput": {
        "font-size": "18px",
        "padding-top": "17px",
        "padding-bottom": "17px"
      },
      "compareAt": {
        "font-size": "12px"
      }
    }
  },
  "cart": {
    "contents": {
      "button": true
    },
    "styles": {
      "button": {
        "background-color": "#007493",
        "font-size": "18px",
        "padding-top": "17px",
        "padding-bottom": "17px",
        ":hover": {
          "background-color": "#006884"
        },
        ":focus": {
          "background-color": "#006884"
        }
      },
      "footer": {
        "background-color": "#ffffff"
      }
    }
  },
  "modalProduct": {
    "contents": {
      "img": false,
      "imgWithCarousel": true,
      "variantTitle": false,
      "buttonWithQuantity": true,
      "button": false,
      "quantity": false
    },
    "styles": {
      "product": {
        "@media (min-width: 601px)": {
          "max-width": "100%",
          "margin-left": "0px",
          "margin-bottom": "0px"
        }
      },
      "button": {
        "background-color": "#007493",
        "font-size": "18px",
        "padding-top": "17px",
        "padding-bottom": "17px",
        ":hover": {
          "background-color": "#006884"
        },
        ":focus": {
          "background-color": "#006884"
        }
      },
      "quantityInput": {
        "font-size": "18px",
        "padding-top": "17px",
        "padding-bottom": "17px"
      }
    }
  },
  "toggle": {
    "styles": {
      "toggle": {
        "background-color": "#007493",
        ":hover": {
          "background-color": "#006884"
        },
        ":focus": {
          "background-color": "#006884"
        }
      },
      "count": {
        "font-size": "18px"
      }
    }
  },
  "productSet": {
    "styles": {
      "products": {
        "@media (min-width: 601px)": {
          "margin-left": "-20px"
        }
      }
    }
  }
}
          });
        });
      }
    })();
    /*]]>*/
    </script>
</html>
<td>
{{spaces|75}}<div align="right">{{ContactUs Button}}</div>
<td>
</td>
</tr></table>
</center>


__NOTOC__
<pre style=background-color:yellow>
x86 with discrete GPU support is now available!
</pre>
==GStreamer CUDA Overview==


Also, RidgeRun offers GstCUDA ad-ons. Those consists in full complete and ready to use elements that executes a specific CUDA algorithm that is integrated into the element code. Those ad-ons elements are based on the GstCUDA framework, and clearly shows the potential of this framework being used to generate a final product.  
GstCUDA is a RidgeRun developed [https://www.ridgerun.com/gstreamer GStreamer] plug-in enabling easy CUDA algorithm integration into GStreamer pipelines. GstCUDA offers a framework that allows users to 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, allowing the developer to focus on the algorithm logic, thus accelerating time to market.


GstCUDA offers a GStreamer plugin that contains a set of elements, that are ideal for GStreamer/CUDA quick prototyping. Those elements consist in a set of filters with different input/output pads combinations, that are run-time loadable with an external custom CUDA library that contains the algorithm to be executed on the GPU on each video frame that passes through the pipeline. GstCUDA plugin allows users to develop their own CUDA processing library, pass the library into the GstCUDA filter element that best adapts to the algorithm requirements, executes the library on the GPU, passing upstream frames from the GStreamer pipeline to the GPU to be processed and passing the modified frames downstream to the next element in the GStreamer pipeline. Those elements were created with the CUDA algorithm developer in mind - supporting quick prototyping and abstracting all GStreamer concepts.  The elements are fully adaptable to different project needs, making GstCUDA a powerful tool that is essential for CUDA/GStreamer project development.


If you are interested in a new different ad-on or want help to develop the custom algorithm CUDA library for the quick prototyping GstCUDA elements, please don't hesitate in [http://www.ridgerun.com/contact/ contact us].    
One remarkable feature of GstCUDA is that it '''provides a zero memory copy interface''' between CUDA and GStreamer on NVIDIA Jetson TX2/Nano/Xavier/Orin platforms. This enables heavy algorithms and large amounts of data (up to 2x 4K 60fps streams) to be processed on CUDA without the extra load performance caused by copies or memory conversions. GstCUDA provides the necessary APIs to '''directly handle NVMM buffers''' to achieve the best possible performance on Jetson TX2/Nano/Xavier/Orin platforms. It provides a series of base classes and utilities that abstract the complexity of handling memory interface between GStreamer and CUDA, so the developer can focus on what actually gives value to the end product. GstCUDA maximizes performance on GStreamer/CUDA applications on Jetson platforms.


GStreamer GstCUDA solves the developer's need to focus on the development of CUDA algorithms without having to worry about how to interface the algorithm with the application, how to inject and extract the data from the GPU, and how to ensure a good performance; because GstCUDA framework takes care of those important details.


The following table of contents offers all you need to know about GstCUDA project.
==GstCUDA Features for Image Stitching and Image Enhancement==


<table cellspacing="20">
The GstCUDA features make it the '''ideal framework for developing video/image processing applications, that requires to implement complex algorithms and actions such as image stitching, stereoscopic (3D) vision, image filtering/tracking/identification, 360° image/video, image blending, motion detection/estimation, depth calculation, etc'''. GstCUDA can be a very useful tool for a wide range of industry segments that require image processing, to mention some: Medical imaging, media/entertainment, security, automation, etc.
<tr>
<td><div class="clear; float:right">{{GstCUDA TOC}}</div></td>
<td>
<html>
<div class="ecwid ecwid-SingleProduct-v2 ecwid-SingleProduct-v2-bordered ecwid-SingleProduct-v2-centered ecwid-Product ecwid-Product-88257022" itemscope itemtype="http://schema.org/Product" data-single-product-id="88257022"><div itemprop="image"></div><div class="ecwid-title" itemprop="name"></div><div itemtype="http://schema.org/Offer" itemscope itemprop="offers"><div class="ecwid-productBrowser-price ecwid-price" itemprop="price" data-spw-price-location="button"><div itemprop="priceCurrency" content="USD"></div></div></div><div customprop="options"></div><div customprop="addtobag"></div></div><script type="text/javascript" src="https://app.ecwid.com/script.js?7804024&data_platform=singleproduct_v2" charset="utf-8"></script><script type="text/javascript">xProduct()</script>
</html>
</td>
<td><center>
{{Template:Eval SDK Download, Demo Image download and Contact Us buttons}}
</center>
</td>
<td valign=center halign=center>
{{Sponsor Button}}
</td>
</tr>
</table>


=Promo/Demo Video=
RidgeRun offers GstCUDA add-ons. Those consists of complete and ready to use elements that executes a specific CUDA algorithm that is integrated into the element code. Those add-on elements are based on the GstCUDA framework, and clearly show the potential of this framework being used to generate a  world class performance product.
'''''Under Construction!'''''
 
For technical questions or want help to develop the custom CUDA algorithm library please send an email to '''support@ridgerun.com''' or if you are interested in purchasing our software product, please post your inquiry at our [http://www.ridgerun.com/contact/ '''Contact Us'''] link.


= Getting Started =
==GstCUDA Promotional Videos==
Start navigating this wiki by going to the [[GstCUDA - Features and Limitations|Features and Limitations]] page in the table of contents.
===GstCUDA: Product Overview===
<br>
<!-------
<center>
<embedvideo service="vimeo">https://vimeo.com/238095337</embedvideo>
</center>
------->
<center>
<div style="border: 1px solid #ccc; padding: 10px; max-width: 640px;">
    <embedvideo service="vimeo" itemprop="video" itemscope itemtype="https://schema.org/VideoObject">
      <link itemprop="url" href="https://vimeo.com/238095337">
      <meta itemprop="thumbnailUrl" content="GstCUDA.png">
      <meta itemprop="description" content="GstCUDA">
      <meta itemprop="name" content="GstCUDA">
    </embedvideo>
</div>
</center>
<br>
===GstCUDA: Features Overview===
<br>
<!--------------
<center>
<embedvideo service="vimeo">https://vimeo.com/238095209</embedvideo>
</center>
--------->
<center>
<div style="border: 1px solid #ccc; padding: 10px; max-width: 640px;">
    <embedvideo service="vimeo" itemprop="video" itemscope itemtype="https://schema.org/VideoObject">
      <link itemprop="url" href="https://vimeo.com/238095209">
      <meta itemprop="thumbnailUrl" content="GstCUDA-Features.png">
      <meta itemprop="description" content="GstCUDA-Features">
      <meta itemprop="name" content="GstCUDA-Features">
    </embedvideo>
</div>
</center>
<br>


 
==RidgeRun's GstCUDA presentation at NVIDIA GTC 2019==
[[Category:SdkAddOn]]
<br>
[[Category:GStreamer]]
<!----------
[[Category:GstCUDA]]
<center>
<embedvideo service="youtube">https://youtu.be/PcwlnIoM_cI</embedvideo>
</center>
---------->
<center>
<div style="border: 1px solid #ccc; padding: 10px; max-width: 640px;">
    <embedvideo service="youtube" itemprop="video" itemscope itemtype="https://schema.org/VideoObject">
      <link itemprop="url" href="https://youtu.be/PcwlnIoM_cI">
      <meta itemprop="thumbnailUrl" content="GstCUDA-GTC2019.png">
      <meta itemprop="description" content="GstCUDA-GTC2019">
      <meta itemprop="name" content="GstCUDA-GTC2019">
    </embedvideo>
</div>
</center>
<br>
<br>
{{ContactUs}}
{{GstCUDA/Foot|previous=|next=Features and Limitations}}

Latest revision as of 19:50, 7 February 2024



  Index Next: Features and Limitations




                                                                           


x86 with discrete GPU support is now available!

GStreamer CUDA Overview

GstCUDA is a RidgeRun developed GStreamer plug-in enabling easy CUDA algorithm integration into GStreamer pipelines. GstCUDA offers a framework that allows users to 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, allowing the developer to focus on the algorithm logic, thus accelerating time to market.

GstCUDA offers a GStreamer plugin that contains a set of elements, that are ideal for GStreamer/CUDA quick prototyping. Those elements consist in a set of filters with different input/output pads combinations, that are run-time loadable with an external custom CUDA library that contains the algorithm to be executed on the GPU on each video frame that passes through the pipeline. GstCUDA plugin allows users to develop their own CUDA processing library, pass the library into the GstCUDA filter element that best adapts to the algorithm requirements, executes the library on the GPU, passing upstream frames from the GStreamer pipeline to the GPU to be processed and passing the modified frames downstream to the next element in the GStreamer pipeline. Those elements were created with the CUDA algorithm developer in mind - supporting quick prototyping and abstracting all GStreamer concepts. The elements are fully adaptable to different project needs, making GstCUDA a powerful tool that is essential for CUDA/GStreamer project development.

One remarkable feature of GstCUDA is that it provides a zero memory copy interface between CUDA and GStreamer on NVIDIA Jetson TX2/Nano/Xavier/Orin platforms. This enables heavy algorithms and large amounts of data (up to 2x 4K 60fps streams) to be processed on CUDA without the extra load performance caused by copies or memory conversions. GstCUDA provides the necessary APIs to directly handle NVMM buffers to achieve the best possible performance on Jetson TX2/Nano/Xavier/Orin platforms. It provides a series of base classes and utilities that abstract the complexity of handling memory interface between GStreamer and CUDA, so the developer can focus on what actually gives value to the end product. GstCUDA maximizes performance on GStreamer/CUDA applications on Jetson platforms.

GStreamer GstCUDA solves the developer's need to focus on the development of CUDA algorithms without having to worry about how to interface the algorithm with the application, how to inject and extract the data from the GPU, and how to ensure a good performance; because GstCUDA framework takes care of those important details.

GstCUDA Features for Image Stitching and Image Enhancement

The GstCUDA features make it the ideal framework for developing video/image processing applications, that requires to implement complex algorithms and actions such as image stitching, stereoscopic (3D) vision, image filtering/tracking/identification, 360° image/video, image blending, motion detection/estimation, depth calculation, etc. GstCUDA can be a very useful tool for a wide range of industry segments that require image processing, to mention some: Medical imaging, media/entertainment, security, automation, etc.

RidgeRun offers GstCUDA add-ons. Those consists of complete and ready to use elements that executes a specific CUDA algorithm that is integrated into the element code. Those add-on elements are based on the GstCUDA framework, and clearly show the potential of this framework being used to generate a world class performance product.

For technical questions or want help to develop the custom CUDA algorithm library please send an email to support@ridgerun.com or if you are interested in purchasing our software product, please post your inquiry at our Contact Us link.

GstCUDA Promotional Videos

GstCUDA: Product Overview



GstCUDA: Features Overview



RidgeRun's GstCUDA presentation at NVIDIA GTC 2019





RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us
RidgeRun.ai: Artificial Intelligence | Generative AI | Machine Learning

Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page.


  Index Next: Features and Limitations