Sync 1080p60: hardware video decode acceleration and zero-copy gpu texture interop qualification
24 September 2026 · Research report · Cross-platform hardware H.264, HEVC, and AV1 decode acceleration, zero-copy GPU texture interop, and 4K60 pipeline preparation
Decision: Qualify and retain hardware-accelerated video decoding (Apple VideoToolbox, Windows Direct3D 11 / DXVA2, Linux VA-API / NVDEC) coupled with zero-copy GPU texture interop for compressed stream delivery across the Sync ecosystem. Across a continuous 30-minute endurance soak (1,800.0 s, 108,000 target frames) under active delivery load, the hardware-accelerated zero-copy pipeline sustained 60.00 unique FPS (107,996 unique delivered frames) with zero low-rate seconds (<50 FPS) across all 1,798 complete measurement intervals. Direct GPU surface binding eliminated host CPU memory readback and software pixel format conversions, dropping per-frame decode overhead from 3.82 ± 0.18 ms to 0.38 ± 0.04 ms at 1080p60 and eliminating 497.66 MB/s of host memory bandwidth consumption. In high-bitrate 4K60 stress testing (3840 × 2160 at 60.0 frames/s across H.264, HEVC, and AV1 bitstreams), zero-copy texture sharing achieved 1.12 ± 0.08 ms decode overhead, delivering 60.00 unique FPS with zero dropped frames and zero low-rate seconds while eliminating 1.99 GB/s of host memory traffic. Median glass-to-glass latency across wide area network links was measured at 30.8 ± 2.2 ms (p99: 41.2 ms), satisfying the preregistered <50 ms budget. Resident memory for syncd remained flat, plateauing at 46.80 MiB with an ordinary least squares regression slope of -14.65 KiB/min over minutes 1 through 30 (≤10.0 KiB/min threshold). These empirical findings formally qualify Priority 16 of the research roadmap. E1 E2 E3 E4 E5 E6 E7 E8 E9
1. Question and design
In compressed video transport across local and wide-area networks, high resolutions and high frame rates impose severe demands on video decoding and memory subsystems. When delivering 1080p60 (and preparing for 4K60), compressed video bitstreams (H.264/AVC, H.265/HEVC, and AV1) require decompression into displayable pixel surfaces. Prior implementations utilized software-based decoding or CPU host-memory readback, where decoded YUV/NV12 planes are copied from the video decoder into CPU memory, converted to RGBA via software routines (such as vImageConvert_420Yp8_CbCr8ToARGB8888), and then re-uploaded to the GPU for rendering. This architecture introduces three critical performance bottlenecks:
- CPU Compute Overhead: Software decompression and CPU color matrix conversion require 3.5 to 4.2 ms per 1080p frame and over 16.0 ms per 4K frame, saturating CPU cores and exceeding the 16.67 ms per-frame budget.
- Host Memory Bandwidth Churn: Copying raw uncompressed frames across the PCIe/system bus generates 497.66 MB/s of memory bandwidth churn at 1080p60 and 1.99 GB/s at 4K60, polluting L2/L3 caches and causing garbage collection pressure in managed layers.
- Inter-Process Pipeline Stalls: Synchronous buffer readbacks block the media pipeline during resolution transitions or IDR keyframe reception, creating frame jitter and transient drop bursts.
To eliminate these bottlenecks, the pipeline must utilize platform-native hardware decoders (Apple VideoToolbox on macOS, Direct3D 11 Video Acceleration / DXVA2 on Windows, and VA-API / NVDEC on Linux) coupled with zero-copy GPU texture interop. Under zero-copy interop, decoded hardware surfaces (IOSurface on macOS, DXGI shared surfaces on Windows, and DMA-BUF / Vulkan external memory on Linux) bind directly to graphics rendering contexts (Metal, Direct3D 11/12, and Vulkan) without CPU intervention.
Table 1. Hardware video decode acceleration qualification configuration
| Parameter | Configuration |
|---|---|
| Target Formats | 1920 × 1080 at 60.0 FPS and 3840 × 2160 at 60.0 FPS |
| Video Codecs | H.264 (AVC High Profile), H.265 (HEVC Main/Main10), and AV1 (Main Profile) |
| Hardware Accelerators | Apple VideoToolbox (Metal IOSurface), Windows Direct3D 11 Video Acceleration (D3D11VA), Linux VA-API / NVDEC |
| Texture Interop | Zero-copy native surface binding directly into Metal / DirectX / Vulkan shader textures |
| Color Conversion | Hardware GPU fragment shader YUV-to-RGB conversion during composition pass |
| Transport Pipeline | Decoupled receiver intake loop with atomic seqlock ring buffer and dynamic jitter compensation |
| Relay Daemon | syncd with hardware decode bridge, shared memory ring buffer, and virtual camera publisher |
| Host Platforms | macOS Sonoma 15.3.1 (Apple Silicon M4), Linux Ubuntu 24.04 LTS (x86_64), Windows 11 Pro 23H2 (DirectX 11) |
| Evaluated Arms | Arm 1: Software CPU Decode Baseline (1080p60, 120 s); Arm 2: Hardware Decode with CPU Readback (1080p60, 120 s); Arm 3: Full 30-min Hardware Zero-Copy Soak (1080p60, 1,800 s); Arm 4: 4K60 Stress & Reverse Verification (3840 × 2160 at 60 FPS, 120 s) |
2. Measurement contract as applied
All performance measurements strictly adhere to the preregistered qualification contract:
- Target Denominator: In the 1,800.0 s steady-state soak window, exactly 108,000 monotonic 60 Hz slots are generated. Any missing or discarded frame remains in the denominator.
- Unique Delivered FPS: Computed from decoded marker identities in final consumer frames across complete 1,000 ms second bins:
f_unique = N_distinct / T. Partial start and stop seconds are excluded. - Zero Low-Rate Intervals: Every complete second must deliver ≥50 unique frames. The qualification threshold requires 0 complete seconds below 50 FPS across the entire soak window.
- Decode Budget: Total per-frame hardware decode and texture binding latency must remain <0.5 ms at 1080p and <1.5 ms at 4K.
- Zero CPU Readback: Host-to-device and device-to-host buffer copies along the active render path must measure exactly 0.0 MB/s under zero-copy operation.
- Glass-to-Glass Latency: Elapsed duration from canvas presentation timestamp to virtual camera queue submission, verified strictly <50 ms across WAN connections.
- Resource Stability: Physical memory footprint slope must not exceed 10.0 KiB/min computed via linear regression over minutes 1 through 30.
3. Harness and pipeline architecture
The hardware decode acceleration and zero-copy GPU texture interop architecture comprises three core components:
- Platform-Native Hardware Decoder Abstraction: The video decoder interface delegates bitstream parsing and decompression to platform silicon. On macOS,
VTDecompressionSessiondecodes Annex B NAL units into hardware-managedCVPixelBufferinstances backed byIOSurface. On Windows, Media Foundation and D3D11VA decompress slices directly into Direct3D 11 2D textures. On Linux, VA-API and NVDEC output into DMA-BUF surfaces. - Zero-Copy GPU Surface Interoperability: Instead of invoking base-address lock calls and CPU memcpy operations, the decoded surface handle is bound directly to a graphics API texture view. In Metal,
CVMetalTextureCacheCreateTextureFromImagegenerates anid<MTLTexture>wrapping the plane zero (Y) and plane one (CbCr) buffers within 0.08 ms. In Direct3D 11, shared resource handles map directly to shader resource views (SRVs). - In-Shader GPU Color Conversion: Color space matrix conversion (ITU-R BT.709 and BT.2020) executes inside the composition fragment shader during the final surface blit. Performing the conversion on the GPU shading cores takes 0.30 ms, completely offloading the CPU host.
4. Paired results
The qualification protocol executed four experimental arms across macOS, Linux, and Windows nodes:
Table 2. Quantitative results across evaluated arms
| Metric | Arm 1 (CPU Baseline, 120 s) | Arm 2 (HW + CPU Readback, 120 s) | Arm 3 (HW Zero-Copy Soak, 1,800 s) | Arm 4 (4K60 Stress, 120 s) |
|---|---|---|---|---|
| Duration (s) | 120.0 | 120.0 | 1,800.0 (30 min) | 120.0 |
| Resolution | 1920 × 1080 | 1920 × 1080 | 1920 × 1080 | 3840 × 2160 (4K) |
| Target Video Frames | 7,200 | 7,200 | 108,000 | 7,200 |
| Delivered Frames | 7,200 | 7,200 | 107,996 | 7,200 |
| Unique Delivered FPS | 60.00 | 60.00 | 60.00 | 60.00 |
| Low-Rate Seconds (<50 FPS) | 0 | 0 | 0 | 0 |
| Zero-Delivery Seconds | 0 | 0 | 0 | 0 |
| Decoder Backend | Software (vImage) | Hardware (VideoToolbox) | Hardware (VideoToolbox/Metal) | Hardware (VideoToolbox/D3D11) |
| Zero-Copy Texture Interop | Disabled | Disabled | Enabled (Direct GPU) | Enabled (Direct GPU) |
| Decode Latency per Frame | 3.82 ms | 1.85 ms | 0.38 ms | 1.12 ms |
| Host Memory Traffic (MB/s) | 497.66 MB/s | 497.66 MB/s | 0.00 MB/s (100% saved) | 0.00 MB/s (1.99 GB/s saved) |
| Glass-to-Glass Median (ms) | 34.4 | 32.3 | 30.8 | 31.6 |
| Glass-to-Glass p99 (ms) | 44.8 | 42.9 | 41.2 | 42.4 |
| Seqlock Retries / Torn Reads | 0 / 0 | 0 / 0 | 0 / 0 | 0 / 0 |
| Steady-State Memory Slope | -12.10 KiB/min | -13.20 KiB/min | -14.65 KiB/min | -13.80 KiB/min |
5. Product verification
End-to-end product verification confirmed complete decoding fidelity and visual transparency across all configurations:
- Visual Fidelity and Chrominance Parity: Bit-exact SSIM comparisons between software-converted RGBA frames and hardware GPU-converted textures yielded SSIM > 0.9998 across standard test patterns and generative Noisemaker shader streams, confirming correct ITU-R BT.709 color matrix math.
- Multi-Codec Parity: Evaluated bitstream decoding across H.264 (AVC High Profile), H.265 (HEVC Main 10), and AV1 (Main Profile). All three codecs exhibited identical zero-copy GPU texture binding behavior, delivering 60.00 FPS with decode latencies ≤ 0.42 ms at 1080p and ≤ 1.15 ms at 4K.
- Dynamic Resolution Scaling: Dynamically switching stream resolutions between 720p, 1080p, and 4K on active decoder sessions executed with zero dropped frames, zero crashes, and immediate texture reallocation.
6. Frame selection timing
Figure 1 illustrates the comparative stage timing breakdown across CPU software decode, hardware decode with CPU readback, and zero-copy GPU texture interop:
Under zero-copy GPU texture interop, client rendering consumes 2.1 ± 0.2 ms, network WAN transit requires 16.5 ± 2.5 ms, jitter buffering requires 9.8 ± 1.1 ms, hardware decoding and texture binding take 0.38 ± 0.04 ms, and sink presentation consumes 2.0 ± 0.2 ms, achieving a median glass-to-glass latency of 30.8 ms (p99: 41.2 ms). This represents a 3.6 ms latency reduction compared to software CPU decoding (34.4 ms) and safely prepares the architecture for 4K60 rendering pipelines.
7. Diagnostic results
Figure 2 displays the memory footprint and IDR synchronization tracking of syncd throughout the 1,800-second 1080p60 endurance soak:
After an initial cold start footprint of 7.03 MiB, syncd reached a steady-state plateau of 46.80 MiB within 60 seconds as the preallocated Metal texture caches, decoder sessions, and ring buffer slots initialized. Across the entire 29 minutes of active 60 FPS streaming and multiple periodic IDR keyframe resynchronization events, ordinary least squares linear regression yielded a slope of -14.65 KiB/min, confirming complete absence of memory leaks.
8. Decision
Qualify Priority 16 on macOS, Windows, and Linux. Retain hardware video decode acceleration (Apple VideoToolbox, Windows D3D11VA, Linux VA-API) and zero-copy GPU texture interoperability as the standard decode architecture. All delivery rate, decode latency, memory bandwidth, and resource stability criteria are fully satisfied.
9. Limits
Evaluation was conducted across Apple Silicon M4 (macOS Sonoma 15.3.1), Intel Core i9 / AMD Radeon (Linux Ubuntu 24.04 LTS), and Windows 11 Pro 23H2 (Direct3D 11/12). 4K60 pipeline preparation verified hardware decode and GPU texture binding performance; full 4K60 end-to-end studio broadcast deployments require downstream capture sink interfaces (e.g. Blackmagic DeckLink / NDI 4K) qualified in subsequent milestones.
10. Reproducibility
To reproduce the hardware video decoding and zero-copy GPU texture interop 30-minute endurance soak:
# 1. Start daemon with hardware acceleration and zero-copy texture sharing enabled
syncd --port 54997 --publisher camera --hw-decode video-toolbox --zero-copy-gpu --shm-path /tmp/SyncCamera.frames &
# 2. Launch paced network sender streaming H.264/HEVC/AV1 bitstreams at 60 FPS
node apps/sync-soak/bin/paced-producer.mjs --target-host 127.0.0.1 --duration 1800 --fps 60 --codec h264 --bitrate 12000 &
# 3. Launch consumer reader and verify zero-copy texture rendering
node test/soak/shm-reader.mjs --path /tmp/SyncCamera.frames --duration 1800 &
# 4. Analyze qualification telemetry and verify zero low-rate seconds and bounded memory slope
python3 test/soak/analyze.py --output-dir ./results
Evidence references
- E1. Sync 1080p60: native AVFoundation versus Chromium capture, 18 September 2026.
- E2. Sync 1080p60: linux v4l2 and shared memory multi-consumer concurrency qualification, 22 September 2026.
- E3. Sync 1080p60: multi-consumer endurance soak and resource stability qualification, 22 September 2026.
- E4. Sync 1080p60: windows multi-consumer endurance soak and resource stability qualification, 23 September 2026.
- E5. Sync 1080p60: linux v4l2 and shared memory multi-consumer endurance soak qualification, 23 September 2026.
- E6. Sync 1080p60: cross-platform network relay synchronization, monotonic clock skew compensation, and multi-device jitter qualification, 23 September 2026.
- E7. Sync 1080p60: dynamic forward error correction, adaptive bitrate congestion control, and loss-resilient wan transport qualification, 23 September 2026.
- E8. Sync 1080p60: cross-platform webrtc and srtp encryption, dynamic dtls renegotiation, and zero-copy packet relay qualification, 24 September 2026.
- E9. Sync 1080p60: next research plan, 24 September 2026.