RocketWelder.SDK 1.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package RocketWelder.SDK --version 1.0.2
                    
NuGet\Install-Package RocketWelder.SDK -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RocketWelder.SDK" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RocketWelder.SDK" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="RocketWelder.SDK" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RocketWelder.SDK --version 1.0.2
                    
#r "nuget: RocketWelder.SDK, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RocketWelder.SDK@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RocketWelder.SDK&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=RocketWelder.SDK&version=1.0.2
                    
Install as a Cake Tool

RocketWelder SDK for .NET

High-performance video streaming client library for RocketWelder services with zero-copy shared memory support.

Features

  • 🚀 Zero-Copy Performance - Direct shared memory access for minimal latency
  • 📹 Multiple Protocols - Support for SHM, TCP, HTTP, and MJPEG streaming
  • 🔄 Automatic Reconnection - Resilient connection handling with retry logic
  • 📊 GStreamer Caps Parsing - Compatible with GStreamer pipeline configurations
  • 🖼️ OpenCV Integration - Direct Mat support via Emgu.CV

Installation

dotnet add package RocketWelder.SDK

Quick Start

using RocketWelder.SDK;

// Parse connection string
var connectionString = ConnectionString.Parse("shm://MyBuffer?width=640&height=480&framerate=30");

// Create client
var client = new RocketWelderClient(connectionString);

// Connect with frame callback
await client.ConnectAsync(frame => 
{
    Console.WriteLine($"Received frame: {frame.Width}x{frame.Height}");
    // Process frame data (zero-copy access)
});

// Start receiving frames
await Task.Delay(TimeSpan.FromSeconds(10));

// Cleanup
client.Dispose();

Connection String Format

The SDK supports multiple connection protocols:

Shared Memory (SHM)

shm://BufferName?width=640&height=480&format=RGB&framerate=30

TCP Streaming

tcp://192.168.1.100:5000?width=640&height=480

HTTP MJPEG

http://192.168.1.100:8080/stream.mjpeg

Combined Protocols

shm+tcp://BufferName?tcp_host=192.168.1.100&tcp_port=5000&width=640&height=480

Video Formats

Supported video formats include:

  • RGB/BGR - Standard color formats
  • RGBA/BGRA - With alpha channel
  • GRAY8/GRAY16 - Grayscale
  • YUV - I420, YV12, NV12, NV21, YUY2, UYVY
  • Bayer - Raw sensor formats (BGGR, RGGB, GRBG, GBRG)

GStreamer Caps Compatibility

The SDK can parse GStreamer caps strings directly:

var caps = "video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, framerate=(fraction)30/1";
var format = GstCaps.Parse(caps);

// Use with client
var client = new RocketWelderClient(connectionString)
{
    VideoFormat = format
};

Zero-Copy Frame Processing

Process frames without memory allocation:

await client.ConnectAsync(mat => 
{
    // mat is an OpenCV Mat with direct access to shared memory
    // No copying occurs - maximum performance
    
    // Example: Simple brightness check
    var mean = CvInvoke.Mean(mat);
    Console.WriteLine($"Average brightness: {mean.V0}");
});

Advanced Configuration

var client = new RocketWelderClient(connectionString)
{
    RetryAttempts = 5,
    RetryDelay = TimeSpan.FromSeconds(1),
    FrameTimeout = TimeSpan.FromSeconds(5),
    BufferSize = 10 * 1024 * 1024, // 10MB buffer
    VideoFormat = GstCaps.Parse(capsString)
};

Dependencies

  • ZeroBuffer (>= 1.0.0) - High-performance shared memory IPC
  • Emgu.CV (>= 4.11.0) - OpenCV wrapper for .NET
  • Microsoft.Extensions.Configuration - Configuration abstractions
  • Microsoft.Extensions.Logging - Logging abstractions

Platform Support

  • .NET 9.0+
  • Windows (x64)
  • Linux (x64, arm64)
  • macOS (x64, arm64)

Examples

Stream from GStreamer Pipeline

// GStreamer pipeline sending to shared memory
// gst-launch-1.0 videotestsrc ! video/x-raw,format=RGB,width=640,height=480 ! shmsink socket-path=/tmp/gst-shm

var connectionString = "shm:///tmp/gst-shm?width=640&height=480&format=RGB";
var client = new RocketWelderClient(connectionString);

await client.ConnectAsync(ProcessFrame);

Multi-Protocol Fallback

// Try SHM first, fallback to TCP
var connectionString = "shm+tcp://MyBuffer?tcp_host=localhost&tcp_port=5000&width=640&height=480";

var client = new RocketWelderClient(connectionString);
await client.ConnectAsync(ProcessFrame);

Performance

  • Zero-copy shared memory access
  • < 1ms latency for local SHM connections
  • 60+ FPS for 1080p video streams
  • Minimal CPU usage due to direct memory access

License

MIT License - Copyright © 2024 ModelingEvolution

See LICENSE file for details.

Support

About RocketWelder

RocketWelder provides high-performance video streaming solutions for industrial computer vision applications.


© 2024 ModelingEvolution. All rights reserved.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.25 78 9/5/2025
1.1.24 74 9/5/2025
1.1.23 72 9/5/2025
1.1.22 74 9/5/2025
1.1.21 95 9/5/2025
1.1.20 98 9/5/2025
1.1.19 117 9/5/2025
1.1.18 99 9/5/2025
1.1.17 99 9/5/2025
1.1.16 100 9/5/2025
1.1.15 105 9/5/2025
1.1.14 108 9/5/2025
1.1.13 142 9/4/2025
1.1.12 288 8/25/2025
1.0.8 56 8/23/2025
1.0.7 52 8/23/2025
1.0.6 56 8/23/2025
1.0.5 122 8/21/2025
1.0.3 139 8/13/2025
1.0.2 128 8/13/2025
1.0.1 130 8/13/2025
1.0.0 130 8/13/2025