Development of Virtual Camera APEX Module for Android with WebRTC Video Stream
Budget: $100 – $10,000 CAD
I'm seeking an experienced Android system-level developer (C++17, HAL, AIDL) to implement a virtual camera module that fully replaces the physical cameras on Android 12 and higher devices.
Core Requirements:
Deliver the solution as an updatable APEX module (com.android.camera.webrtc).
Implement AIDL-based Camera Provider and Camera Device services (android.hardware.camera.provider and android.hardware.camera.device).
Create two virtual cameras: ID 0 (back) and ID 1 (front), both using the same single WebRTC video stream as source.
Completely hide/replace physical cameras — all apps must see and use only the virtual ones.
Read WebRTC configuration from system properties (com.webrtc_camera.url mandatory; optional STUN/TURN with auth).
On any stream issue (no URL, connection failure, interruption, empty frames) → display solid green screen fallback.
Support preview and recording streams in YUV420/NV21, resolutions from 640x480 up to 1920x1080, 30 FPS.
Integrate libwebrtc (M108+ recommended), handle offer/answer, ICE (STUN/TURN), hardware-accelerated decoding (H.264/VP8/VP9), RGB→YUV conversion.
Performance targets: ≤300ms latency, ≤20% CPU per core (720p@30fps), ≤150MB RAM for both cameras, minimal battery impact.
Deliverables:
Full source code with Android.bp build files.
Built APEX packages for arm64-v8a and x86_64.
Init .rc script and any required SELinux policies.
Comprehensive README.md including build/install instructions, architecture overview, property examples, and troubleshooting.
Fixed-price or hourly proposals welcome. Please include relevant past Android HAL/WebRTC experience in your bid.
Core Requirements:
Deliver the solution as an updatable APEX module (com.android.camera.webrtc).
Implement AIDL-based Camera Provider and Camera Device services (android.hardware.camera.provider and android.hardware.camera.device).
Create two virtual cameras: ID 0 (back) and ID 1 (front), both using the same single WebRTC video stream as source.
Completely hide/replace physical cameras — all apps must see and use only the virtual ones.
Read WebRTC configuration from system properties (com.webrtc_camera.url mandatory; optional STUN/TURN with auth).
On any stream issue (no URL, connection failure, interruption, empty frames) → display solid green screen fallback.
Support preview and recording streams in YUV420/NV21, resolutions from 640x480 up to 1920x1080, 30 FPS.
Integrate libwebrtc (M108+ recommended), handle offer/answer, ICE (STUN/TURN), hardware-accelerated decoding (H.264/VP8/VP9), RGB→YUV conversion.
Performance targets: ≤300ms latency, ≤20% CPU per core (720p@30fps), ≤150MB RAM for both cameras, minimal battery impact.
Deliverables:
Full source code with Android.bp build files.
Built APEX packages for arm64-v8a and x86_64.
Init .rc script and any required SELinux policies.
Comprehensive README.md including build/install instructions, architecture overview, property examples, and troubleshooting.
Fixed-price or hourly proposals welcome. Please include relevant past Android HAL/WebRTC experience in your bid.