This repository contains a native WebRTC streaming application designed for Raspberry Pi and NVIDIA Jetson platforms. It captures video from various camera sources (libcamera, libargus, V4L2) and audio from PulseAudio/ALSA, encodes the streams using hardware acceleration when available or software fallbacks, and transmits them via WebRTC with multiple signaling options (MQTT, WebSocket, HTTP/WHEP). The application includes recording capabilities, snapshot functionality, and IPC for local control. The architecture is modular with clearly separated concerns for capture, encoding, signaling, and real-time communication.
This is an Android demo application for real-time audio/video talkback (intercom) communication. It implements a full pipeline: audio/video capture, echo cancellation (multiple AEC algorithms: Speex, WebRTC AEC/AECM/AEC3, custom triple AEC), noise suppression (Speex, WebRTC NS/NSX, RNNoise), encoding (Speex, Opus, OpenH264, system H.264), network transport (TCP, UDP, AUDP), jitter buffering (adaptive), decoding, and playback. The architecture consists of a foreground service, a main activity with extensive settings UI, and background media processing threads (MediaPocsThrd, ClntMediaPocsThrd, SrvrThrd) that use user-defined callbacks for extensibility. The app is heavily configurable with presets for effect levels and AEC tendencies. It relies on pre-compiled native libraries (JNI) for signal processing and codecs. The codebase is tightly coupled to the demo app and uses deprecated Android Camera API, but demonstrates non-obvious skill in integrating multiple audio processing libraries and adaptive jitter buffer algorithms.