# Rocket Welder SDK
[](https://www.nuget.org/packages/RocketWelder.SDK/)
[](https://pypi.org/project/rocket-welder-sdk/)
[](https://github.com/modelingevolution/rocket-welder-sdk-vcpkg-registry)
[](https://opensource.org/licenses/MIT)
Multi-language client libraries for interacting with RocketWelder video streaming services.
## Overview
The Rocket Welder SDK provides high-performance video streaming capabilities for containerized applications. It offers native client libraries in C++, C#, and Python, enabling seamless integration with RocketWelder video streaming pipelines.
## Features
- **High Performance**: Optimized for minimal latency and maximum throughput
- **Multi-Language Support**: Native libraries for C++, C#, and Python
- **Protocol Flexibility**: Support for multiple streaming protocols via connection strings
- **Container-Ready**: Designed for Docker/Kubernetes deployments
- **Simple Integration**: Easy-to-use API with minimal configuration
## Client Libraries
| Language | Package Manager | Package Name |
|----------|----------------|--------------|
| C++ | vcpkg | rocket-welder-sdk |
| C# | NuGet | RocketWelder.SDK |
| Python | pip | rocket-welder-sdk |
## Connection String Format
The SDK uses URI-style connection strings to specify data sources and protocols:
```
protocol://[host[:port]]/[path][?param1=value1¶m2=value2]
```
### Supported Protocols
#### Shared Memory (High-Performance Local)
```
shm://<buffer_name>
shm://<buffer_name>?buffer_size=10MB&metadata_size=1024KB
shm://<buffer_name>?mode=duplex&buffer_size=10MB
```
**Optional Parameters:**
- `mode`: Communication mode (`duplex` for bidirectional/mutable, `oneway` for one-way communication; default: `duplex`)
- `buffer_size`: Size of the data buffer (default: 20MB, supports units: B, KB, MB, GB)
- `metadata_size`: Size of the metadata buffer (default: 4KB, supports units: B, KB, MB)
#### MJPEG over HTTP
```
mjpeg+http://192.168.1.100:8080
mjpeg+http://camera.local:8080
```
#### MJPEG over TCP
```
mjpeg+tcp://192.168.1.100:5000
mjpeg+tcp://camera.local:5000
```
### Environment Variable
When deployed in a Rocket Welder container, the connection string is provided via:
```bash
CONNECTION_STRING=shm://camera_feed?buffer_size=20MB&metadata_size=4KB
```
## Installation
### C++ with vcpkg
Configure the custom registry in your `vcpkg-configuration.json`:
```json
{
"registries": [
{
"kind": "git",
"repository": "https://github.com/modelingevolution/rocket-welder-sdk-vcpkg-registry",
"baseline": "YOUR_BASELINE_HERE",
"packages": ["rocket-welder-sdk"]
}
]
}
```
Then install:
```bash
# Install via vcpkg
vcpkg install rocket-welder-sdk
# Or integrate with CMake
find_package(rocket-welder-sdk CONFIG REQUIRED)
target_link_libraries(your_app PRIVATE rocket-welder-sdk::rocket-welder-sdk)
```
### C# with NuGet
[](https://www.nuget.org/packages/RocketWelder.SDK/)
```bash
# Package Manager Console
Install-Package RocketWelder.SDK
# .NET CLI
dotnet add package RocketWelder.SDK
# PackageReference in .csproj
<PackageReference Include="RocketWelder.SDK" Version="1.0.*" />
```
### Python with pip
[](https://pypi.org/project/rocket-welder-sdk/)
```bash
# Install from PyPI
pip install rocket-welder-sdk
# Install with optional dependencies
pip install rocket-welder-sdk[opencv] # Includes OpenCV
pip install rocket-welder-sdk[all] # All optional dependencies
# Install specific version
pip install rocket-welder-sdk==1.0.0
```
## Quick Start
### C++ Quick Start
```cpp
#include <rocket_welder/client.hpp>
auto client = rocket_welder::Client::from_connection_string("shm://my-buffer");
client.on_frame([](cv::Mat& frame) {
// Process frame
});
client.start();
```
### C# Quick Start
```csharp
using RocketWelder.SDK;
var client = RocketWelderClient.FromConnectionString("shm://my-buffer");
client.Start(frame => {
// Process frame
});
```
### Python Quick Start
```python
import rocket_welder_sdk as rw
client = rw.Client.from_connection_string("shm://my-buffer")
@client.on_frame
def process(frame):
# Process frame
pass
client.start()
```
## Usage Examples
### C++
```cpp
#include <rocket_welder/client.hpp>
#include <opencv2/opencv.hpp>
int main(int argc, char* argv[]) {
// Best practice: use from() which:
// 1. Checks environment variable (CONNECTION_STRING)
// 2. Overrides with command line args if provided
auto client = rocket_welder::Client::from(argc, argv);
// Or specify connection string directly
auto client = rocket_welder::Client::from_connection_string(
"shm://camera_feed?buffer_size=20MB&metadata_size=4KB"
);
// Process frames as OpenCV Mat (mutable by default)
client.on_frame([](cv::Mat& frame) {
// Add overlay text - zero copy!
cv::putText(frame, "Processing", cv::Point(10, 30),
cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 255, 0), 2);
// Add timestamp overlay
auto now = std::chrono::system_clock::now();
auto time_t = std::chrono::system_clock::to_time_t(now);
cv::putText(frame, std::ctime(&time_t), cv::Point(10, 60),
cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(255, 255, 255), 1);
});
client.start();
return 0;
}
```
### C#
```csharp
using RocketWelder.SDK;
using OpenCvSharp;
class Program
{
static void Main(string[] args)
{
// Best practice: use From() which:
// 1. Checks environment variable (CONNECTION_STRING)
// 2. Overrides with command line args if provided
var client = RocketWelderClient.From(args);
// Or specify connection string directly
var client = RocketWelderClient.FromConnectionString(
"shm://camera_feed?buffer_size=20MB&metadata_size=4KB"
);
int frameCount = 0;
// Process frames as OpenCV Mat
client.Start((Mat frame) =>
{
// Add overlay text
Cv2.PutText(frame, "Processing", new Point(10, 30),
HersheyFonts.HersheySimplex, 1.0, new Scalar(0, 255, 0), 2);
// Add frame counter overlay
Cv2.PutText(frame, $"Frame: {frameCount++}", new Point(10, 60),
HersheyFonts.HersheySimplex, 0.5, new Scalar(255, 255, 255), 1);
});
}
}
```
### Python
```python
import rocket_welder_sdk as rw
import cv2
import sys
# Best practice: use from_args() which:
# 1. Checks environment variable (CONNECTION_STRING)
# 2. Overrides with command line args if provided
client = rw.Client.from_args(sys.argv)
# Or specify connection string directly
client = rw.Client.from_connection_string("shm://camera_feed?buffer_size=20MB&metadata_size=4KB")
# Process frames as numpy arrays (OpenCV compatible)
@client.on_frame
def process_frame(frame: np.ndarray):
# Add overlay text - zero copy!
cv2.putText(frame, "Processing", (10, 30),
cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 0), 2)
# Add timestamp overlay
from datetime import datetime
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cv2.putText(frame, timestamp, (10, 60),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
client.start()
# Or use iterator pattern
for frame in client.frames():
# Each frame is a numpy array
print(f"Received frame: {frame.shape}")
```
## Docker Integration
### C++ Dockerfile
```dockerfile
FROM ubuntu:22.04 AS builder
# Install build tools and OpenCV
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
libopencv-dev
# Install Rocket Welder SDK via vcpkg
RUN vcpkg install rocket-welder-sdk
# Build your application
WORKDIR /app
COPY . .
RUN cmake . && make
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y libopencv-dev
COPY --from=builder /app/my_app /usr/local/bin/
CMD ["my_app"]
```
### C# Dockerfile
```dockerfile
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS builder
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/runtime:8.0
WORKDIR /app
COPY --from=builder /app/out .
CMD ["dotnet", "MyApp.dll"]
```
### Python Dockerfile
```dockerfile
FROM python:3.11-slim
# Install OpenCV and other dependencies
RUN apt-get update && apt-get install -y \
python3-opencv \
&& rm -rf /var/lib/apt/lists/*
# Install Rocket Welder SDK and ML frameworks
RUN pip install --no-cache-dir \
rocket-welder-sdk \
numpy \
ultralytics # Example: YOLO
WORKDIR /app
COPY . .
CMD ["python", "app.py"]
```
## Protocol Details
### Shared Memory Protocol (shm://)
High-performance local data transfer between processes:
- **Performance**: Minimal latency, maximum throughput
- **Use Cases**: Local processing, multi-container applications on same host
### MJPEG over HTTP (mjpeg+http://)
Motion JPEG streaming over HTTP:
- **Performance**: Good balance of quality and bandwidth
- **Advantages**: Wide compatibility, firewall-friendly, browser support
- **Use Cases**: Network streaming, web applications, remote monitoring
### MJPEG over TCP (mjpeg+tcp://)
Motion JPEG streaming over raw TCP socket:
- **Performance**: Lower latency than HTTP, less protocol overhead
- **Advantages**: Direct socket connection, minimal overhead, suitable for local networks
- **Use Cases**: Low-latency streaming, embedded systems, industrial applications
## Building from Source
### Prerequisites
- CMake 3.20+
- C++20 compiler
- Python 3.8+ (for Python bindings)
- .NET 6.0+ SDK (for C# bindings)
- OpenCV 4.0+ (optional, for image processing)
### Build Instructions
```bash
git clone https://github.com/modelingevolution/rocket-welder-sdk.git
cd rocket-welder-sdk
# Build all libraries
mkdir build && cd build
cmake ..
make -j$(nproc)
# Run tests
ctest
# Install
sudo make install
```
## API Reference
Detailed API documentation for each language:
- [C++ API Reference](docs/cpp-api.md)
- [C# API Reference](docs/csharp-api.md)
- [Python API Reference](docs/python-api.md)
## Examples
See the [examples](examples/) directory for complete working examples:
- [Simple Frame Reader](examples/simple-reader/)
- [Frame Processor](examples/frame-processor/)
- [Multi-Stream Handler](examples/multi-stream/)
- [Performance Benchmark](examples/benchmark/)
## Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
- **Issues**: [GitHub Issues](https://github.com/modelingevolution/rocket-welder-sdk/issues)
- **Discussions**: [GitHub Discussions](https://github.com/modelingevolution/rocket-welder-sdk/discussions)
- **Documentation**: [https://docs.rocket-welder.io](https://docs.rocket-welder.io)
## Technical Details
### GStreamer Integration
The SDK integrates with GStreamer pipelines through specialized elements:
- **zerosink**: Simple sink element for writing video frames
- **zerobuffer**: Processing element with bidirectional communication using DuplexChannel
### Zero-Copy Buffer Technology
For shared memory protocol, the SDK uses:
- **C++**: Zero-Copy-Buffer (via vcpkg) - Returns cv::Mat with zero-copy access
- **C#**: ZeroBuffer (via NuGet) - Returns OpenCvSharp.Mat with zero-copy access
- **Python**: zero-buffer (via pip) - Returns numpy arrays compatible with OpenCV
The SDK leverages DuplexChannel for bidirectional communication, enabling:
- Zero-copy frame access as OpenCV Mat objects
- In-place frame processing without memory allocation
- Direct memory mapping between producer and consumer
- Efficient metadata passing alongside frame data
This technology enables direct memory access without data duplication, providing maximum performance for local processing scenarios.
## Acknowledgments
- GStreamer Project for the multimedia framework
- ZeroBuffer contributors for the zero-copy buffer implementation
Raw data
{
"_id": null,
"home_page": "https://github.com/modelingevolution/rocket-welder-sdk",
"name": "rocket-welder-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "ModelingEvolution <info@modelingevolution.com>",
"keywords": "video, streaming, gstreamer, ipc, shared-memory, zerobuffer, computer-vision",
"author": "ModelingEvolution",
"author_email": "ModelingEvolution <info@modelingevolution.com>",
"download_url": "https://files.pythonhosted.org/packages/fd/92/4186d6fb9052b0adf90af369041445f43113738dc10b279cdbcee54a9684/rocket_welder_sdk-1.1.25.tar.gz",
"platform": null,
"description": "# Rocket Welder SDK\n\n[](https://www.nuget.org/packages/RocketWelder.SDK/)\n[](https://pypi.org/project/rocket-welder-sdk/)\n[](https://github.com/modelingevolution/rocket-welder-sdk-vcpkg-registry)\n[](https://opensource.org/licenses/MIT)\n\nMulti-language client libraries for interacting with RocketWelder video streaming services.\n\n## Overview\n\nThe Rocket Welder SDK provides high-performance video streaming capabilities for containerized applications. It offers native client libraries in C++, C#, and Python, enabling seamless integration with RocketWelder video streaming pipelines.\n\n## Features\n\n- **High Performance**: Optimized for minimal latency and maximum throughput\n- **Multi-Language Support**: Native libraries for C++, C#, and Python \n- **Protocol Flexibility**: Support for multiple streaming protocols via connection strings\n- **Container-Ready**: Designed for Docker/Kubernetes deployments\n- **Simple Integration**: Easy-to-use API with minimal configuration\n\n## Client Libraries\n\n| Language | Package Manager | Package Name |\n|----------|----------------|--------------|\n| C++ | vcpkg | rocket-welder-sdk |\n| C# | NuGet | RocketWelder.SDK |\n| Python | pip | rocket-welder-sdk |\n\n## Connection String Format\n\nThe SDK uses URI-style connection strings to specify data sources and protocols:\n\n```\nprotocol://[host[:port]]/[path][?param1=value1¶m2=value2]\n```\n\n### Supported Protocols\n\n#### Shared Memory (High-Performance Local)\n```\nshm://<buffer_name>\nshm://<buffer_name>?buffer_size=10MB&metadata_size=1024KB\nshm://<buffer_name>?mode=duplex&buffer_size=10MB\n```\n\n**Optional Parameters:**\n- `mode`: Communication mode (`duplex` for bidirectional/mutable, `oneway` for one-way communication; default: `duplex`)\n- `buffer_size`: Size of the data buffer (default: 20MB, supports units: B, KB, MB, GB)\n- `metadata_size`: Size of the metadata buffer (default: 4KB, supports units: B, KB, MB)\n\n#### MJPEG over HTTP\n```\nmjpeg+http://192.168.1.100:8080\nmjpeg+http://camera.local:8080\n```\n\n#### MJPEG over TCP\n```\nmjpeg+tcp://192.168.1.100:5000\nmjpeg+tcp://camera.local:5000\n```\n\n### Environment Variable\n\nWhen deployed in a Rocket Welder container, the connection string is provided via:\n```bash\nCONNECTION_STRING=shm://camera_feed?buffer_size=20MB&metadata_size=4KB\n```\n\n## Installation\n\n### C++ with vcpkg\n\nConfigure the custom registry in your `vcpkg-configuration.json`:\n```json\n{\n \"registries\": [\n {\n \"kind\": \"git\",\n \"repository\": \"https://github.com/modelingevolution/rocket-welder-sdk-vcpkg-registry\",\n \"baseline\": \"YOUR_BASELINE_HERE\",\n \"packages\": [\"rocket-welder-sdk\"]\n }\n ]\n}\n```\n\nThen install:\n```bash\n# Install via vcpkg\nvcpkg install rocket-welder-sdk\n\n# Or integrate with CMake\nfind_package(rocket-welder-sdk CONFIG REQUIRED)\ntarget_link_libraries(your_app PRIVATE rocket-welder-sdk::rocket-welder-sdk)\n```\n\n### C# with NuGet\n\n[](https://www.nuget.org/packages/RocketWelder.SDK/)\n\n```bash\n# Package Manager Console\nInstall-Package RocketWelder.SDK\n\n# .NET CLI\ndotnet add package RocketWelder.SDK\n\n# PackageReference in .csproj\n<PackageReference Include=\"RocketWelder.SDK\" Version=\"1.0.*\" />\n```\n\n### Python with pip\n\n[](https://pypi.org/project/rocket-welder-sdk/)\n\n```bash\n# Install from PyPI\npip install rocket-welder-sdk\n\n# Install with optional dependencies\npip install rocket-welder-sdk[opencv] # Includes OpenCV\npip install rocket-welder-sdk[all] # All optional dependencies\n\n# Install specific version\npip install rocket-welder-sdk==1.0.0\n```\n\n## Quick Start\n\n### C++ Quick Start\n```cpp\n#include <rocket_welder/client.hpp>\n\nauto client = rocket_welder::Client::from_connection_string(\"shm://my-buffer\");\nclient.on_frame([](cv::Mat& frame) {\n // Process frame\n});\nclient.start();\n```\n\n### C# Quick Start \n```csharp\nusing RocketWelder.SDK;\n\nvar client = RocketWelderClient.FromConnectionString(\"shm://my-buffer\");\nclient.Start(frame => {\n // Process frame\n});\n```\n\n### Python Quick Start\n```python\nimport rocket_welder_sdk as rw\n\nclient = rw.Client.from_connection_string(\"shm://my-buffer\")\n\n@client.on_frame\ndef process(frame):\n # Process frame\n pass\n\nclient.start()\n```\n\n## Usage Examples\n\n### C++\n\n```cpp\n#include <rocket_welder/client.hpp>\n#include <opencv2/opencv.hpp>\n\nint main(int argc, char* argv[]) {\n // Best practice: use from() which:\n // 1. Checks environment variable (CONNECTION_STRING)\n // 2. Overrides with command line args if provided\n auto client = rocket_welder::Client::from(argc, argv);\n \n // Or specify connection string directly\n auto client = rocket_welder::Client::from_connection_string(\n \"shm://camera_feed?buffer_size=20MB&metadata_size=4KB\"\n );\n \n // Process frames as OpenCV Mat (mutable by default)\n client.on_frame([](cv::Mat& frame) {\n // Add overlay text - zero copy!\n cv::putText(frame, \"Processing\", cv::Point(10, 30),\n cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 255, 0), 2);\n \n // Add timestamp overlay\n auto now = std::chrono::system_clock::now();\n auto time_t = std::chrono::system_clock::to_time_t(now);\n cv::putText(frame, std::ctime(&time_t), cv::Point(10, 60),\n cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(255, 255, 255), 1);\n });\n \n client.start();\n return 0;\n}\n```\n\n### C#\n\n```csharp\nusing RocketWelder.SDK;\nusing OpenCvSharp;\n\nclass Program\n{\n static void Main(string[] args)\n {\n // Best practice: use From() which:\n // 1. Checks environment variable (CONNECTION_STRING)\n // 2. Overrides with command line args if provided\n var client = RocketWelderClient.From(args);\n \n // Or specify connection string directly\n var client = RocketWelderClient.FromConnectionString(\n \"shm://camera_feed?buffer_size=20MB&metadata_size=4KB\"\n );\n \n int frameCount = 0;\n \n // Process frames as OpenCV Mat\n client.Start((Mat frame) => \n {\n // Add overlay text\n Cv2.PutText(frame, \"Processing\", new Point(10, 30),\n HersheyFonts.HersheySimplex, 1.0, new Scalar(0, 255, 0), 2);\n \n // Add frame counter overlay\n Cv2.PutText(frame, $\"Frame: {frameCount++}\", new Point(10, 60),\n HersheyFonts.HersheySimplex, 0.5, new Scalar(255, 255, 255), 1);\n });\n }\n}\n```\n\n### Python\n\n```python\nimport rocket_welder_sdk as rw\nimport cv2\nimport sys\n\n# Best practice: use from_args() which:\n# 1. Checks environment variable (CONNECTION_STRING)\n# 2. Overrides with command line args if provided\nclient = rw.Client.from_args(sys.argv)\n\n# Or specify connection string directly\nclient = rw.Client.from_connection_string(\"shm://camera_feed?buffer_size=20MB&metadata_size=4KB\")\n\n# Process frames as numpy arrays (OpenCV compatible)\n@client.on_frame\ndef process_frame(frame: np.ndarray):\n # Add overlay text - zero copy!\n cv2.putText(frame, \"Processing\", (10, 30),\n cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 255, 0), 2)\n \n # Add timestamp overlay\n from datetime import datetime\n timestamp = datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n cv2.putText(frame, timestamp, (10, 60),\n cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)\n\nclient.start()\n\n# Or use iterator pattern\nfor frame in client.frames():\n # Each frame is a numpy array\n print(f\"Received frame: {frame.shape}\")\n```\n\n## Docker Integration\n\n### C++ Dockerfile\n\n```dockerfile\nFROM ubuntu:22.04 AS builder\n\n# Install build tools and OpenCV\nRUN apt-get update && apt-get install -y \\\n build-essential \\\n cmake \\\n libopencv-dev\n\n# Install Rocket Welder SDK via vcpkg\nRUN vcpkg install rocket-welder-sdk\n\n# Build your application\nWORKDIR /app\nCOPY . .\nRUN cmake . && make\n\nFROM ubuntu:22.04\nRUN apt-get update && apt-get install -y libopencv-dev\nCOPY --from=builder /app/my_app /usr/local/bin/\nCMD [\"my_app\"]\n```\n\n### C# Dockerfile\n\n```dockerfile\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS builder\n\nWORKDIR /app\nCOPY *.csproj ./\nRUN dotnet restore\n\nCOPY . ./\nRUN dotnet publish -c Release -o out\n\nFROM mcr.microsoft.com/dotnet/runtime:8.0\nWORKDIR /app\nCOPY --from=builder /app/out .\nCMD [\"dotnet\", \"MyApp.dll\"]\n```\n\n### Python Dockerfile\n\n```dockerfile\nFROM python:3.11-slim\n\n# Install OpenCV and other dependencies\nRUN apt-get update && apt-get install -y \\\n python3-opencv \\\n && rm -rf /var/lib/apt/lists/*\n\n# Install Rocket Welder SDK and ML frameworks\nRUN pip install --no-cache-dir \\\n rocket-welder-sdk \\\n numpy \\\n ultralytics # Example: YOLO\n\nWORKDIR /app\nCOPY . .\n\nCMD [\"python\", \"app.py\"]\n```\n\n## Protocol Details\n\n### Shared Memory Protocol (shm://)\n\nHigh-performance local data transfer between processes:\n\n- **Performance**: Minimal latency, maximum throughput\n- **Use Cases**: Local processing, multi-container applications on same host\n\n### MJPEG over HTTP (mjpeg+http://)\n\nMotion JPEG streaming over HTTP:\n\n- **Performance**: Good balance of quality and bandwidth\n- **Advantages**: Wide compatibility, firewall-friendly, browser support\n- **Use Cases**: Network streaming, web applications, remote monitoring\n\n### MJPEG over TCP (mjpeg+tcp://)\n\nMotion JPEG streaming over raw TCP socket:\n\n- **Performance**: Lower latency than HTTP, less protocol overhead\n- **Advantages**: Direct socket connection, minimal overhead, suitable for local networks\n- **Use Cases**: Low-latency streaming, embedded systems, industrial applications\n\n## Building from Source\n\n### Prerequisites\n\n- CMake 3.20+\n- C++20 compiler\n- Python 3.8+ (for Python bindings)\n- .NET 6.0+ SDK (for C# bindings)\n- OpenCV 4.0+ (optional, for image processing)\n\n### Build Instructions\n\n```bash\ngit clone https://github.com/modelingevolution/rocket-welder-sdk.git\ncd rocket-welder-sdk\n\n# Build all libraries\nmkdir build && cd build\ncmake ..\nmake -j$(nproc)\n\n# Run tests\nctest\n\n# Install\nsudo make install\n```\n\n## API Reference\n\nDetailed API documentation for each language:\n\n- [C++ API Reference](docs/cpp-api.md)\n- [C# API Reference](docs/csharp-api.md)\n- [Python API Reference](docs/python-api.md)\n\n## Examples\n\nSee the [examples](examples/) directory for complete working examples:\n\n- [Simple Frame Reader](examples/simple-reader/)\n- [Frame Processor](examples/frame-processor/)\n- [Multi-Stream Handler](examples/multi-stream/)\n- [Performance Benchmark](examples/benchmark/)\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/modelingevolution/rocket-welder-sdk/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/modelingevolution/rocket-welder-sdk/discussions)\n- **Documentation**: [https://docs.rocket-welder.io](https://docs.rocket-welder.io)\n\n## Technical Details\n\n### GStreamer Integration\n\nThe SDK integrates with GStreamer pipelines through specialized elements:\n- **zerosink**: Simple sink element for writing video frames\n- **zerobuffer**: Processing element with bidirectional communication using DuplexChannel\n\n### Zero-Copy Buffer Technology\n\nFor shared memory protocol, the SDK uses:\n- **C++**: Zero-Copy-Buffer (via vcpkg) - Returns cv::Mat with zero-copy access\n- **C#**: ZeroBuffer (via NuGet) - Returns OpenCvSharp.Mat with zero-copy access\n- **Python**: zero-buffer (via pip) - Returns numpy arrays compatible with OpenCV\n\nThe SDK leverages DuplexChannel for bidirectional communication, enabling:\n- Zero-copy frame access as OpenCV Mat objects\n- In-place frame processing without memory allocation\n- Direct memory mapping between producer and consumer\n- Efficient metadata passing alongside frame data\n\nThis technology enables direct memory access without data duplication, providing maximum performance for local processing scenarios.\n\n## Acknowledgments\n\n- GStreamer Project for the multimedia framework\n- ZeroBuffer contributors for the zero-copy buffer implementation\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "High-performance video streaming SDK for RocketWelder services using ZeroBuffer IPC",
"version": "1.1.25",
"project_urls": {
"Homepage": "https://github.com/modelingevolution/rocket-welder-sdk",
"Issues": "https://github.com/modelingevolution/rocket-welder-sdk/issues",
"Repository": "https://github.com/modelingevolution/rocket-welder-sdk.git"
},
"split_keywords": [
"video",
" streaming",
" gstreamer",
" ipc",
" shared-memory",
" zerobuffer",
" computer-vision"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2062d6fbf97e5aa09e0a7f3b43c79fa604b51524fbc1887d0e74773632c1e9fa",
"md5": "6129daf2fe838485cfadbc131bb83ff6",
"sha256": "33b8b20b6460888bacea5be9ede7a1e406c2deb25ba1a48e7a6273f6b366c992"
},
"downloads": -1,
"filename": "rocket_welder_sdk-1.1.25-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6129daf2fe838485cfadbc131bb83ff6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 22504,
"upload_time": "2025-09-05T18:22:05",
"upload_time_iso_8601": "2025-09-05T18:22:05.346416Z",
"url": "https://files.pythonhosted.org/packages/20/62/d6fbf97e5aa09e0a7f3b43c79fa604b51524fbc1887d0e74773632c1e9fa/rocket_welder_sdk-1.1.25-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fd924186d6fb9052b0adf90af369041445f43113738dc10b279cdbcee54a9684",
"md5": "374b444c32991bed42dbc6a3946e16db",
"sha256": "f3f849d0919567647d3ae2d327abab10e9daabc34ff428f1b14362bd727b7a00"
},
"downloads": -1,
"filename": "rocket_welder_sdk-1.1.25.tar.gz",
"has_sig": false,
"md5_digest": "374b444c32991bed42dbc6a3946e16db",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 57307,
"upload_time": "2025-09-05T18:22:06",
"upload_time_iso_8601": "2025-09-05T18:22:06.251170Z",
"url": "https://files.pythonhosted.org/packages/fd/92/4186d6fb9052b0adf90af369041445f43113738dc10b279cdbcee54a9684/rocket_welder_sdk-1.1.25.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-05 18:22:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "modelingevolution",
"github_project": "rocket-welder-sdk",
"github_not_found": true,
"lcname": "rocket-welder-sdk"
}