Chapter VII
Video Streaming & Edge Deployment
Low-latency video pipelines and edge AI accelerator deployments require zero-copy memory management and continuous closed-loop adaptive bitrate feedback.
7.1
How would you build adaptive-bitrate video over a lossy mesh link, driven by RSSI/packet loss?
rating — likely · matches your shipped work
An Adaptive Bitrate (ABR) engine monitors radio link metrics (`/proc/net/wireless` RSSI, TX retry counts) and dynamically modifies GStreamer hardware encoder properties via a PID control loop:
// Dynamic GStreamer Bitrate & IDR Keyframe Injection Loop
void updateEncoderBitrate(GstElement* encoder_element, double link_quality_score) {
uint32_t target_bitrate = computeTargetBitrate(link_quality_score); // e.g. 500kbps to 4Mbps
g_object_set(G_OBJECT(encoder_element), "bitrate", target_bitrate, NULL);
if (link_quality_score < RECOVERY_THRESHOLD) {
// Force immediate IDR Keyframe insertion to clear decode artifacts
GstEvent* force_keyframe = gst_event_new_custom(
GST_EVENT_CUSTOM_DOWNSTREAM,
gst_structure_new("GstForceKeyUnit", "all-headers", G_TYPE_BOOLEAN, TRUE, NULL)
);
gst_element_send_event(encoder_element, force_keyframe);
}
}
7.2
What actually adds latency in a camera-to-screen pipeline, and how do you strip it out?
rating — likely
Stripping latency out of a video pipeline requires eliminating CPU memory copies and B-frame buffering:
| Pipeline Stage | Raw Baseline Latency | Optimized Zero-Copy Configuration | Optimized Latency |
|---|---|---|---|
| 1. Camera Capture & ISP | $16.6\text{ms}$ (30 FPS) | Zero-copy V4L2 DMABUF memory allocation | $5.0\text{ms}$ |
| 2. Video Encoding | $30.0\text{ms}$ (B-frames on) | H.264 `tune=zerolatency`, B-frames=0, intra-refresh | $4.0\text{ms}$ |
| 3. Network Transport | $25.0\text{ms}$ (TCP retransmits) | RTP over UDP payload stream | $2.0\text{ms}$ |
| 4. Video Decoding | $20.0\text{ms}$ (Frame buffer queue) | Hardware NVDEC single-buffer rendering pool | $3.0\text{ms}$ |
| 5. Screen Render | $16.6\text{ms}$ (VSync ON) | EGLDirectCmd zero-copy texture overlay | $4.0\text{ms}$ |
| Total Pipeline | $108.2\text{ms}$ | Sub-$20\text{ms}$ Glass-to-Glass Goal | $18.0\text{ms}$ |
7.3
What are the practical constraints of deploying a model on an edge AI accelerator like RB5, Jetson, or a dedicated MLSoC?
rating — likely
Edge deployment requires managing platform-specific memory layouts and toolchain quantization flows:
- Nvidia Jetson (Orin / Xavier - TensorRT): Uses Unified Memory Architecture (UMA). Avoid standard `cudaMemcpy` CPU-to-GPU memory copies by allocating pinned zero-copy memory via `cudaHostAllocMapped` or passing raw NVMM buffers (`GstBuffer` with `NvBufSurface`). Quantize using TensorRT INT8 calibration matrices.
- Qualcomm RB5 (QRB5165 - QNN / SNPE): Compiles models into Deep Learning Container (`.dlc`) files running on the Hexagon Tensor Processor (HTP). Demands strict INT8 Post-Training Quantization (PTQ). Passing camera frames requires FastRPC ION memory buffers to prevent CPU memory copies.