ToolX - Video Streaming & Network Diagnostics¶
ToolX is a comprehensive video streaming and network diagnostics tool for GVA systems. It provides capabilities for SAP/SDP stream discovery, RTP video stream generation, SNMP MIB browsing, and network diagnostics - essential for testing and debugging video distribution in military vehicle systems.

Key Capabilities¶
ToolX provides the following capabilities:
| Feature | Description |
|---|---|
| SAP/SDP Stream Discovery | Listen for Session Announcement Protocol (SAP) multicast announcements |
| RTP Stream Generation | Generate test pattern video streams with various codecs |
| SNMP MIB Browser | Walk SNMP MIBs on network devices for VIVOE compliance testing |
| Network Diagnostics | Comprehensive network interface and multicast diagnostics |
| Multiple Codec Support | H.264 (VAAPI, OpenH264, OMX), H.265, JPEG2000, AV1, Uncompressed |
Protocol Sequences¶
RTP/SAP Video Streaming Sequence¶
The following diagram shows the typical message sequence for SAP-announced RTP video streaming:
Session name, IP, Port,
Codec, Resolution Net->>RX: SAP Announcement RX->>RX: Parse SDP, add to stream list Note over TX,RX: Video Streaming Phase loop Every frame (25/30 fps) TX->>TX: Encode frame (H.264/VAAPI) TX->>Net: RTP Packet (239.x.x.x:5004) Net->>RX: RTP Packet RX->>RX: Decode & display frame end Note over TX,RX: Periodic Announcements loop Every 1 second TX->>Net: SAP Announcement refresh Net->>RX: SAP Announcement end Note over TX,RX: Stream Termination TX->>Net: SAP Deletion (d=1) Net->>RX: SAP Deletion RX->>RX: Remove from stream list
SNMP MIB Walk Sequence¶
The following diagram shows the typical SNMP walk sequence for VIVOE device interrogation:
Running ToolX¶
Launch ToolX from the build directory:
Command Line Options¶
ToolX supports the following command-line options for codec selection:
# Use GStreamer VAAPI H.264 encoder (default, hardware accelerated)
./toolx --vaapi
# Use GStreamer OpenH264 encoder (software)
./toolx --openh264
# Use native OpenH264 encoder (non-GStreamer)
./toolx --openh264-native
# Use native VAAPI encoder (non-GStreamer)
./toolx --vaapi-native
# Use OMX H.264 encoder (for embedded platforms)
./toolx --omx
Tabs Overview¶
ToolX organises its functionality into several tabs:
RTP-SAP Tab¶
The RTP-SAP tab provides SAP/SDP stream discovery and RTP video stream generation capabilities.

Features:
-
SAP Listener: Discovers video streams announced via SAP multicast
- Session Name - Human-readable stream name
- IP Address - Multicast destination address
- Port - RTP port number
- Encoding - Video codec (H.264, JPEG2000, etc.)
- Resolution - Width x Height
- Frame Rate - Frames per second
-
Stream Generator: Create test pattern video streams
- Multiple test patterns (EBU colour bars, grey scale, checkered, solid colours, bouncing ball)
- Configurable resolution, frame rate, and encoding
- SAP announcement generation for stream discovery
-
Stream Player: View received video streams
- Double-click a discovered stream to play it
- Supports all MediaX-compatible codecs
SNMP Tab¶
The SNMP tab provides SNMP MIB walking functionality for VIVOE compliance testing.

Features:
-
Target Configuration:
- IP Address - Target device IP (validated before walk)
- Community String - SNMP community (default: "public")
- SNMP Version - v1, v2c, or v3
-
MIB Browser:
- Hierarchical tree view of SNMP OIDs
- OID values displayed with type information
- VIVOE-MIB support for video-over-Ethernet devices
-
Walk Button: Initiates SNMP walk (disabled until valid IP entered)
VIVOE MIB
ToolX includes the VIVOE-MIB for testing video-over-Ethernet equipment compliance with DEF STAN 00-082.
Diagnostics Tab¶
The Diagnostics tab provides comprehensive network interface and multicast diagnostics.

Features:
-
Network Interfaces: Lists all network interfaces with:
- Interface name and status (UP/DOWN)
- IP address and netmask
- MAC address
- MTU size
-
Multicast Configuration:
- IGMP snooping status
- Multicast routing table
- Active multicast group memberships
-
Diagnostic Tests:
- Multicast connectivity tests
- IGMP query/report verification
- Network path analysis

Running Diagnostics:
- Click "Run Diagnostics" to start the diagnostic tests
- Tests run asynchronously in the background
- Results are displayed in the output panel
- Tests include:
- Network interface enumeration
- IP configuration validation
- Multicast group membership checks
- IGMP snooping detection
- Route table analysis
Elevated Privileges
Some diagnostic tests may require elevated privileges to access network configuration details. Run with sudo if needed.
Video Codec Support¶
ToolX supports multiple video codecs through the MediaX library:
| Codec | GStreamer | Native | Hardware Accel |
|---|---|---|---|
| H.264 VAAPI | ✓ | ✓ | GPU (Intel/AMD) |
| H.264 OpenH264 | ✓ | ✓ | CPU |
| H.264 OMX | ✓ | - | SoC (NVIDIA Jetson) |
| H.264 x264 | ✓ | - | CPU |
| H.265 VAAPI | ✓ | - | GPU (Intel/AMD) |
| JPEG2000 | ✓ | - | CPU |
| AV1 | ✓ | - | CPU/GPU |
| Uncompressed | - | ✓ | - |
Uncompressed Video Modes¶
The following uncompressed video formats are supported:
| Mode | Description |
|---|---|
| RGB | 24-bit RGB colour |
| YUYV | YUV 4:2:2 packed |
| MONO | 8-bit monochrome |
| MONO16 | 16-bit monochrome |
Codec Selection¶
The default codec is GStreamer VAAPI H.264 which provides hardware-accelerated encoding on Intel and AMD GPUs. If hardware acceleration is not available, use --openh264 for software encoding.
Native vs GStreamer:
- GStreamer codecs: Use GStreamer pipeline for encoding, more flexible but higher latency
- Native codecs: Direct library calls, lower latency but fewer features
Test Patterns¶
The stream generator supports the following test patterns for video stream testing:
Static Test Patterns¶
EBU Colour Bars¶

Standard EBU colour bar pattern for broadcast colour calibration.
SMPTE Colour Bars¶

SMPTE colour bar pattern with extended test regions.
Colour Bars¶

Basic colour bar test pattern.
Grey Scale Bar¶

Gradient from black to white for brightness and contrast testing.
Gradient¶

Smooth colour gradient pattern.
Checkered¶

Black and white checkerboard pattern for resolution and sharpness testing.
Crosshatch¶

Grid pattern for geometry and linearity testing.
Quad¶

Four-quadrant colour test pattern.
Zone Plate¶

Circular zone plate for resolution and moire testing.
Solid Colour Patterns¶
| Pattern | Image | Use Case |
|---|---|---|
| Solid Black | ![]() |
Black level calibration |
| Solid White | ![]() |
White level / brightness test |
| Solid Red | ![]() |
Red channel test |
| Solid Green | ![]() |
Green channel test |
| Solid Blue | ![]() |
Blue channel test |
Animated Test Patterns¶
These patterns include motion for testing video encoding and frame rate:
| Pattern | Preview | Description |
|---|---|---|
| Bouncing Ball | ![]() |
Moving ball animation for motion testing |
| Moving Sweep | ![]() |
Sweeping line for motion blur testing |
| Pulsing Circle | ![]() |
Expanding/contracting circle animation |
| Rotating Cube | ![]() |
3D rotating cube for complex motion |
| Scrolling Text | ![]() |
Moving text for readability testing |
| White Noise | ![]() |
Random noise for compression artifact testing |
SAP/SDP Protocol¶
ToolX implements the Session Announcement Protocol (SAP) defined in RFC 2974 for stream discovery:
- Multicast Address: 224.2.127.254
- Port: 9875
- Announcement Interval: Configurable (default 1 second)
The Session Description Protocol (SDP) payload includes:
- Session name and description
- Connection information (multicast address)
- Media description (codec, port, format)
- Timing information
Troubleshooting¶
No Streams Discovered¶
- Verify multicast routing is enabled on your network
- Check that IGMP snooping is properly configured on switches
- Ensure firewall allows SAP multicast (224.2.127.254:9875)
- Run diagnostics tab to verify multicast connectivity
Stream Generation Fails¶
- Check codec availability with
gst-inspect-1.0 vaapih264enc - Verify GPU driver is installed for hardware acceleration
- Try
--openh264for software-only encoding - Check network interface supports multicast
SNMP Walk Times Out¶
- Verify target IP is reachable (
ping <ip>) - Check SNMP service is running on target
- Verify community string is correct
- Check firewall allows UDP port 161
See Also¶
- LDMX Debugger - DDS message monitoring
- External Applications - Building GVA apps
- DDS Topics - LDM topic reference










