scrcpy is a high-performance desktop application that mirrors and controls Android devices over USB or TCP/IP. The client is a native C application using SDL3 for rendering and input, FFmpeg for media decoding, and libusb for USB-OTG mode. The server is a Java service running on the Android device that captures screen and audio via MediaCodec and hidden Android APIs, streaming them over an ADB tunnel. The system supports multiple input modes (SDK injection, UHID, AOA HID), video/audio recording, V4L2 loopback output, and clipboard synchronization. Architecture is client-server with a well-defined protocol, trait-based pipeline for frame/packet processing, and extensive cross-platform support (Linux, Windows, macOS).
shadPS4 is a PlayStation 4 emulator for Windows, Linux, and macOS, written in C++20. It emulates the PS4's AMD GCN GPU via a custom shader recompiler that translates GCN instructions to SPIR-V, and implements high-level emulation (HLE) of PS4 system libraries (kernel, libc, networking, audio, video, input, etc.). The architecture is monolithic with modular subsystems: a Vulkan renderer with texture/buffer caches, a shader recompiler with IR optimization passes, a file system abstraction supporting host files and ZArchive, and an ImGui-based debug UI. While many library functions are stubbed or partially implemented, the core GPU and CPU emulation is functional enough to run several commercial games. The codebase demonstrates strong engineering practices with reusable common utilities (bitfields, slot containers, thread-safe queues) and a well-structured shader compilation pipeline. It is a hybrid project, combining software application development with significant reverse-engineering and data analysis of PS4 firmware and GPU architecture.
This repository provides C# bindings for the SDL3 multimedia library through automated code generation. It processes SDL3 C headers via the c2ffi tool to produce an intermediate JSON representation, then applies user-provided overrides to generate idiomatic C# P/Invoke wrappers. The output includes two variants: SDL3.Legacy.cs targeting .NET Framework using DllImport with manual string marshaling, and SDL3.Core.cs targeting .NET 8+ using LibraryImport with custom marshallers for improved safety and performance. The bindings enable .NET applications to access SDL3's graphics, audio, input, GPU, and system functionality. While the generator is highly specialized for SDL3, it demonstrates sophisticated patterns in type resolution, struct layout handling, and marshaling strategy selection that could inform similar binding projects.