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).
python-for-android (p4a) is a build toolchain that packages Python applications into Android APK, AAB, and AAR binaries. It cross-compiles Python interpreters, native libraries, and Python packages for Android architectures (arm64-v8a, armeabi-v7a, x86_64, x86) using the Android NDK and SDK. The system is driven by a recipe system where each Python package or native library defines its download, patching, and build steps. A bootstrap system (SDL2, SDL3, webview, Qt, service-only) generates the Android project structure and Gradle build files. The tool is primarily used via CLI (`p4a` or `python-for-android`) or integrated with Buildozer. It resolves dependencies via a graph algorithm that handles conflicts, alternatives, and optional dependencies. The codebase is large and mature, with hundreds of recipes and extensive CI testing, but carries technical debt from version-specific patches and workarounds for Android's evolving ecosystem.
Peanut-GB is a high-speed, portable Game Boy (DMG) emulator library implemented as a single C99 header file (peanut_gb.h). It provides a complete emulation core including CPU, memory, LCD, cartridge (MBC1/2/3/5), RTC, serial link, and boot ROM support. The library is designed for easy integration into other projects via a callback-based architecture where the frontend provides ROM read, RAM read/write, error handling, and optional LCD line drawing and audio callbacks. The repository includes multiple example frontends demonstrating integration with SDL2 (full emulator with audio and controls), MiniFB (minimal X11 framebuffer), a debug CLI, a Nuklear-based GUI debugger with disassembler and VRAM viewer, and a benchmark tool. A test suite using the minctest.h framework runs Blargg's CPU instruction and timing tests as well as the dmg-acid2 LCD hash test. The library is MIT-licensed and has been used in several real-world projects (Pico-GB, CPBoy, PlayGB). While the core is well-crafted and portable, known inaccuracies exist (line-by-line LCD rendering, audio timing) and some features are incomplete (MBC6/7, camera). The build system is fragmented across Makefiles and CMake, and some examples have version drift in vendored dependencies.
SysDVR is a Nintendo Switch homebrew streaming tool that captures the console's video and audio output and streams it to external clients via USB, TCP, or RTSP. The system comprises three main components: a sysmodule (C code) running on the Switch that interfaces with the grc:d service to capture frames and audio, a cross-platform client (C# .NET 9) that receives the stream, decodes it with FFmpeg, and renders/records using SDL2 and ImGui, and a configuration app (C++ ImGui) that runs on the Switch to manage streaming modes and patches. The architecture is modular with clear separation between capture, transport, and playback layers. The client uses a custom binary protocol with handshake, packet headers, and NAL replay for efficient streaming. External dependencies include libnx (Switch), FFmpeg, SDL2, libusb, ImGui, and .NET 9. The codebase demonstrates solid engineering with reusable patterns like buffer pools, pipeline chains, and platform abstraction, though it carries some technical debt from outdated third-party bindings and platform-specific workarounds.
This repository is a VSCode-based development port of the LVGL embedded GUI library for PC simulation. It provides a complete environment to develop and test LVGL applications on Linux, Windows, and macOS without embedded hardware. The codebase includes a CMake build system, an SDL2-based hardware abstraction layer (HAL) for display and input devices (mouse, keyboard, touchwheel), and optional FreeRTOS integration for simulating real-time behavior. The main entry points are `src/main.c` (single-threaded with a `while(1)` loop) and `src/freertos_main.c` (FreeRTOS task-based), both using the same `sdl_hal_init()` to set up LVGL. The project is essentially a thin wrapper that initializes LVGL, sets up SDL drivers, and runs a demo or user application. Its architecture is straightforward: LVGL submodule, SDL library, and application glue code. The repository is actively maintained, with recent commits and issue triage, and uses current versions of LVGL (v10.0.0) and SDL2. It is a solid but unexceptional project, serving its purpose as a convenient PC simulator for LVGL development.
This repository is a comprehensive educational reference and cheat sheet for 42 School's C programming curriculum. It contains extensive documentation covering C basics, common mistakes, clean coding practices, development tools, curated learning resources, and tutorials on optimization, graphics, and security. The repository also includes a collection of standalone C/C++ code examples demonstrating various programming techniques (SIMD vectorization, multithreading, bit manipulation, socket programming) and a set of remote coding challenges with automated testing. While not a deployable application, it serves as a valuable learning resource and provides reusable code snippets, particularly the SIMD abstraction header for fast word/line counting.
Lightspark is an open-source Flash player implementation written in C++. It operates as both a standalone desktop application (using SDL2 and OpenGL/Cairo for rendering) and a browser plugin via PPAPI and NPAPI. The codebase implements ActionScript 3 (AVM2) and ActionScript 1/2 (AVM1) runtimes, supporting a broad range of Flash APIs including display, audio, video, networking, text, and filters. It includes a custom test runner framework with recorded input event playback for deterministic regression testing. The project is structurally well-organized with platform abstraction layers (paths, directory iteration, event loops, threading), but many Flash API classes remain stubs (emitting 'not implemented' warnings). Third-party dependencies are heavily vendored (pugixml, nanovg, imgui, cpptrace, cereal, etc.), some of which are outdated. Given the deprecated nature of Flash technology, the codebase exhibits significant technical drift despite occasional updates.