How n0tppan/phonebridge works
PhoneBridge streams Android camera video over USB/ADB to a Windows virtual webcam. The principal path is phone capture and packetization, PC connection and decoding, shared-frame delivery, then consumption by Windows camera clients; the desktop app controls the engine. The README also documents audio capture/control, driver installation, and the UI/status workflow, though Windows microphone output remains pending. Some implementation links are documented rather than visible in sampled code; those are cited to the README, and unsampled subsystems are not expanded beyond supported paths.
Main entry points: BridgeServer.kt Socket bridge · connection_manager.cpp Connection manager · MainWindow.xaml.cs Windows app · main.cpp Engine entry
Components 27
Android capture
- Android controls
android/app/src/main/java/com/phonebridge/ui/MainScreen.kt - Bridge service
android/app/src/main/java/com/phonebridge/bridge/BridgeService.kt - Socket bridge
android/app/src/main/java/com/phonebridge/bridge/BridgeServer.kt - Camera encoder
android/app/src/main/java/com/phonebridge/camera/CameraEncoder.kt - Audio recorder
android/app/src/main/java/com/phonebridge/audio/AudioRecorder.kt
Wire protocol
- Android protocol
android/app/src/main/java/com/phonebridge/protocol/Protocol.kt - Packet format
protocol/packet.h - Packet parser
protocol/packet_parser.cpp
Windows engine
- Engine entry
windows/service/main.cpp - ADB transport
windows/service/transport/adb_transport.cpp - Connection manager
windows/service/connection/connection_manager.cpp - Video receiver
windows/service/video/video_receiver.cpp - H.264 decoder
windows/service/video/h264_decoder.cpp - Audio receiver
windows/service/audio/audio_receiver.cpp
Virtual camera
- Shared frames
windows/virtual-camera/shared_frame.h - Media Foundation source
windows/virtual-camera/phonebridge_media_source.cpp - Media stream
windows/virtual-camera/phonebridge_media_stream.cpp - DirectShow camera
windows/directshow-camera/phonebridge_filter.cpp
Desktop control
- Windows app
windows/app/PhoneBridge/MainWindow.xaml.cs - Host bridge
windows/app/PhoneBridge/Core/HostBridge.cs - Engine client
windows/app/PhoneBridge/Core/EngineClient.cs - Desktop UI
ui/src/App.tsx - UI bridge
ui/src/bridge.ts - Camera installer
windows/app/PhoneBridge/Core/DriverInstaller.cs
Other components
- Phone user
- ADB over USB
- Windows camera clients
Connections 28
- Phone user → Android controls: starts capture
- Android controls → Bridge service: starts service
android/app/src/main/java/com/phonebridge/ui/MainActivity.kt - Bridge service → Socket bridge: starts server
android/app/src/main/java/com/phonebridge/bridge/BridgeService.kt - Socket bridge → Camera encoder: requests frames
android/app/src/main/java/com/phonebridge/bridge/BridgeServer.kt - Socket bridge → Audio recorder: requests audio
android/app/src/main/java/com/phonebridge/bridge/BridgeServer.kt - Socket bridge → Android protocol: encodes packets
android/app/src/main/java/com/phonebridge/bridge/BridgeServer.kt - Android protocol → Packet format: uses format
- Socket bridge → ADB over USB: sends stream
- ADB over USB → ADB transport: forwards socket
- Engine entry → ADB transport: creates transport
windows/service/main.cpp - Engine entry → Connection manager: starts manager
windows/service/main.cpp - Connection manager → ADB transport: connects and reads
- Connection manager → Packet parser: parses packets
windows/service/connection/connection_manager.cpp - Connection manager → Video receiver: dispatches video
windows/service/connection/connection_manager.cpp - Connection manager → Audio receiver: dispatches audio
windows/service/connection/connection_manager.cpp - Video receiver → H.264 decoder: decodes frames
- H.264 decoder → Shared frames: writes frames
- Media Foundation source → Shared frames: reads frames
- Media Foundation source → Media stream: creates stream
windows/virtual-camera/phonebridge_media_source.cpp - Media stream → Windows camera clients: delivers frames
- Phone user → Windows app: controls session
- Windows app → Host bridge: hosts UI
- Host bridge → Engine client: controls engine
- Engine client → Engine entry: launches process
- Desktop UI → UI bridge: sends commands
ui/src/App.tsx - UI bridge → Host bridge: exchanges messages
- Windows app → Camera installer: installs camera
- Windows camera clients → DirectShow camera: may use