Skip to content
arielgoes edited this page Nov 28, 2025 · 3 revisions

CGSynth Wiki

Welcome to the CGSynth (Cloud Gaming Synthesizer) wiki. This wiki is the research-grade manual that complements the repository README. It provides deep, operational guidance, parameter semantics, validation checklists, and reproducibility notes for researchers and practitioners.

What is CGSynth?

CGSynth synthesizes realistic cloud-gaming traffic and validates QoE under controlled networking and codec constraints. It provides:

  • Order-preserving timestamp generation (GRU-based) to reflect temporal structure of CG flows
  • RTP/PCAP payload pipeline with deterministic protocol headers
  • Video realism via frame interpolation (RIFE) and controllable degradation
  • Multi-faceted QoE evaluation: PSNR, SSIM, LPIPS, VMAF, and MOS

Start Here

Repository Map (for reference)

  • tools/: RTP packetizer/extractor, frame/video utilities
  • frame_gen/: interpolation (interpolate_frames.py), degradation (frame_degradation_simulator.py), and metrics tools
  • player/, server/: CGReplay integration
  • evaluation/: analyses and plots

Environments and Dependencies

  • Frame generation and general tooling: Python 3.8 (recommended, separate venv)
  • CGReplay player/server: Python 3.10 virtual environment created with --system-site-packages, using:
    • GI / PyGObject from system packages (python3-gi, gobject-introspection, etc.)
    • OpenCV built with GStreamer support
    • GStreamer H.264 encoder plugins (x264enc via gstreamer1.0-plugins-ugly and related packages)
    • libzbar system libraries for QR/barcode support
  • Quality metrics tools: Python 3.12.2 (dedicated venv)
  • System tools: FFmpeg (optionally with VMAF + libvmaf), tshark for live PCAP capture, xterm for Mininet-based experiments

See the build guides and troubleshooting pages in this wiki for detailed setup.

Contributing

If you find gaps in this wiki or want to add new experiments, open an issue/PR in the main repo and propose wiki changes here.

Clone this wiki locally