-
Notifications
You must be signed in to change notification settings - Fork 113
Enhance Rivermax Manager RX and TX to support multiple streams per thread #1131
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
danal97
wants to merge
22
commits into
nvidia-holoscan:main
Choose a base branch
from
danal97:october
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Remove duplicate docstring headers from source files and overridden functions - Centralize documentation in class definitions to reduce maintenance overhead - Improve code readability by eliminating redundant comments Signed-off-by: Rony Rado <[email protected]>
- Rename all code references from 'rmax' to 'rivermax' for consistency - Update filenames containing 'rmax' to use full 'rivermax' naming - Modify documentation/comments using abbreviated form - Update CMakeLists.txt and build configurations Affected components: * rmax_config_manager → rivermax_config_manager * rmax_utils → rivermax_utils * RmaxParams → RivermaxParams * All instances in source headers/docs/comments Signed-off-by: Rony Rado <[email protected]>
- Update Rivermax SDK from 1.60.6 to 1.70.21 - Replace legacy rmax-ral-lib with modern rivermax-dev-kit components - Implement multi-receiver architecture supporting: - IPO receivers SMPTE 2022-7 - RTP receivers SMPTE 2210-20 - Media Frame Transmitters (SMPTE 2110-20) - Refactor configuration system with typed builders: - Strong type checking for queue parameters - Validation pipelines for settings - Auto-generated documentation hooks - Update build system: - New CMake targets for dev-kit services - Dockerfile SDK version alignment - Dependency cleanup - Improve memory management and resource cleanup. - Add proper shutdown handling for services. - Enhance error handling and logging. Removed components: - Legacy IPO receiver service implementation - RMAX base service classes - Obsolete chunk consumer interfaces Added components: - RivermaxQueueConfigs hierarchy - TypedConfigBuilderHolder pattern - MediaSenderService Affected components: - RivermaxMgr core implementation - Burst management system - Packet processing pipeline - YAML configuration parsing - Docker build infrastructure Dependencies: - Requires Rivermax SDK >=1.70.21 Signed-off-by: Rony Rado <[email protected]>
- Add hardware-accelerated video streaming with three memory modes: (GPU, host pinned, huge pages) - Enable concurrent TX/RX operations with thread-safe buffer management - Support multiple video formats: - YCbCr 4:2:2/4:4:4/4:2:0 - RGB 8/10/12-bit - Add Rivermax TX benchmarking tools for performance evaluation - Update Rivermax SDK from 1.70.21 to 1.70.32 Key components: - MediaSenderService with CUDA-accelerated frame processing - BurstParams lifecycle management system - YAML configuration support for: - Video resolution (HD/4K) - Frame rates (24-60 fps) - Traffic shaping parameters Added configurations: - TX-only scenario (adv_networking_bench_rivermax_tx.yaml) - Combined TX+RX scenario (adv_networking_bench_rivermax_tx_rx.yaml) Signed-off-by: Rony Rado <[email protected]>
- Add comprehensive tracing for TX burst lifecycle: - Implement context-aware error reporting: - Improve thread synchronization: - Add mutex guards for burst parameter access - Remove redundant lock from availability check - Implement RAII-style resource cleanup - Strengthen packet validation: - Add auto-truncation for oversized chunks - Verify header-data split configuration - Optimize configuration parameters: - Increase max_path_diff_us from 100μs → 10ms - Set sleep_between_operations_us to 0 for low latency - Update CPU core assignments in YAML examples - Fix critical issues: - Memory leak in TX buffer release path - Shutdown sequence race conditions - Header-data split flag propagation - Update Readme Key components modified: - MediaSenderService burst handling - RivermaxManager shutdown sequence - ANO benchmark TX operator - Example configurations (TX/RX scenarios) Signed-off-by: Rony Rado <[email protected]>
- Add burst_flags to burst header. Each manager would be able to set it's own flags for controlling flows/logic Signed-off-by: Rony Rado <[email protected]>
- Add Media Sender service with Zero Copy support - Service doesn't own frames memory pool and forwards received frames to the RDK Media Sender service Signed-off-by: Rony Rado <[email protected]>
- Add yaml option "num_of_packets_in_chunk" . Signed-off-by: Rony Rado <[email protected]>
Signed-off-by: Rony Rado <[email protected]>
Update apps installation command Signed-off-by: Rony Rado <[email protected]>
Signed-off-by: Rony Rado <[email protected]>
Signed-off-by: Rony Rado <[email protected]>
Signed-off-by: Rony Rado <[email protected]>
This commit introduces basic testing for Rivermax manager - New pytest test case for Rivermax TX/RX validation (with both receiver applications - ipo_receiver and rtp_receiver) - Rivermax applications uses the NIC IP address, therefore this commit enhance the network interface utilities with IP address detection. Note: Validation currently relies on receiver-side metrics only. Future enhancement will include sender-side packet comparison once Rivermax-dev-kit provides sender logging capabilities. Signed-off-by: Dana Lessner <[email protected]>
- Introduced Python network initialization function `adv_net_init` to handle Holoscan config objects. - Updated various functions for burst creation, packet management, and network interface operations. Signed-off-by: Rony Rado <[email protected]>
- Add AdvNetworkMediaRxOp for receiving media streams over Rivermax - Supports packet-to-frame conversion with ANO Burst processing - Configurable video formats, bit depths, and frame dimensions - Output as VideoBuffer or Tensor entities - Add AdvNetworkMediaTxOp for transmitting media streams over Rivermax - Processes VideoBuffer/Tensor inputs for network transmission - Configurable network interface and queue management - Support for various video formats Features: - SMPTE 2110 compliance for professional media over IP - GPU acceleration and GPUDirect support - Low latency optimizations - Python bindings for both operators These operators build upon the Advanced Network library to provide specialized functionality for broadcast and media streaming use cases requiring strict timing and high throughput performance. Signed-off-by: Rony Rado <[email protected]>
- Add high-performance media streaming application built on Advanced Network Media Tx operator - Utilizes AdvNetworkMediaTxOp for media transmission over Rivermax - Integrates with Advanced Network Manager for optimized network resource management - SMPTE 2110 compliant for professional broadcast applications - Real-time transmission of media files with precise timing control - Support multiple video formats and resolutions - RGB888, YUV420, NV12 and other common video formats - Configurable bit depths (8, 10, 12, 16-bit) - Multiple resolution support up to 4K and beyond - GPU acceleration with GPUDirect for zero-copy operations * Implement dual language support - C++ implementation for maximum performance - Python implementation for ease of use and development * Support professional broadcast features - Frame-accurate timing for live streaming applications - Looping playback for continuous streaming - VideoStreamReplayer integration for file-based sources Pipeline: VideoStreamReplayer → AdvNetworkMediaTxOp → Advanced Network Manager → Network Interface This application demonstrates how to use the Advanced Network Media operators for professional-grade media transmission in broadcast and media production environments requiring ultra-low latency and high throughput performance. Signed-off-by: Rony Rado <[email protected]>
- Add high-performance media receiving application built on Advanced Network Media Rx operator - Utilizes AdvNetworkMediaRxOp for professional media reception over Rivermax - Integrates with Advanced Network Manager for optimized network resource management - SMPTE 2110 compliant for professional broadcast applications - Real-time reception and processing of media streams with ultra-low latency - Support flexible output modes and format handling - Real-time visualization using HolovizOp for live monitoring - File output capability for recording and analysis - Format conversion support for optimal display - Support multiple video formats and resolutions - RGB888, YUV420, NV12, RGBA and other common video formats - Configurable bit depths (8, 10, 12, 16-bit) - Multiple resolution support up to 4K and beyond - GPU acceleration with GPUDirect for zero-copy operations - Implement dual language support - C++ implementation for maximum performance - Python implementation for ease of use and development Pipeline: Network Interface → Advanced Network Manager → AdvNetworkMediaRxOp → [FormatConverter] → HolovizOp/FramesWriter This application demonstrates how to use the Advanced Network Media operators for professional-grade media reception in broadcast and media production environments requiring ultra-low latency and high throughput performance. Signed-off-by: Rony Rado <[email protected]>
f580e1c to
df42744
Compare
5db2626 to
3c8f9f3
Compare
Member
|
@danal97 could you please resolve the conflicts and update this PR with the latest changes in the main branch? Thanks |
Enhanced the Rivermax manager to support multiple streams on the same thread with stream-specific packet processing and queueing capabilities. Key changes: - Enhanced RDK applications (ipo_receiver and rtp_receiver) to get an extension to RDK AppSetting in order to set threads setting. Each thread has it's dedicated core, ID and streams settings. - Enhanced burst manager to support per-stream ID burst queues. (Each stream ID gets its own dedicated burst queue for packet segregation). - Maintained backward compatibility: bench RX processes bursts regardless of stream ID. Signed-off-by: Dana Lessner <[email protected]>
Enhance the media player application to receive and process multiple video streams simultaneously using the advanced networking with Rivermax manager. This application served as a reference implementation for multi-stream media reception scenarios in advanced networking deployment. Key changes: - Receive multiple streams with Rivermax manager. - Save each stream to different file. - Add MockReceiverOp to simulate data reception for testing Note: The application supports visualization using holoviz - this is currently limited and allowed only when receiving a single stream. Signed-off-by: Dana Lessner <[email protected]>
Contributor
|
Skipped: This PR changes more files than the configured file change limit: ( |
Signed-off-by: Dana Lessner <[email protected]>
Signed-off-by: Dana Lessner <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Enhanced the Rivermax RX manager to support multiple streams on the same thread with stream-specific packet processing and queueing capabilities.
Enhance TX manager to support sending multiple streams on the same thread.
Key changes:
AppSettingin order to set threads setting. Each thread has it's dedicated core, ID and streams settings.This PR is rebased to Rony's PR/970.
The last 4 commits are new.