mirror of
git://f0xx.org/android_cast
synced 2026-07-29 04:38:53 +03:00
Native codecs (libvpx, Opus, Speex)
The app loads libandroidcast_codecs.so for availability probes and future software encode/decode paths.
Current status
| Component | Java | Native | Notes |
|---|---|---|---|
| FEC 3/4 + RS | Yes | — | v2 per-shard on wire (FecShardWire); v1 monolithic decode still accepted |
| NACK + retransmit cache | Yes | — | UDP MSG_NACK, combined with FEC when enabled |
| libvpx VP8/VP9 | Stub | Probe only | HW passthrough until ANDROIDCAST_LIBVPX_LIB is linked |
| Opus / Speex | Stub | Probe only | Submodules under third-party/ |
Enable libvpx (developer)
git submodule update --init third-party/libvpx- Build
libvpx.afor your ABI:./scripts/build-native-codecs.sh arm64-v8a
(If the repo path has spaces, the script uses/tmp/androidcast-libvpx-$USERautomatically.) - Rebuild the APK with the static library path:
export ANDROIDCAST_LIBVPX_LIB=/path/to/libvpx.a
./gradlew assembleDebug
CMake defines ANDROIDCAST_HAVE_LIBVPX=1 and links the archive when the variable is set.
Stream protection defaults
- Default: None (no FEC/NACK)
- Enable in Global settings → Stream protection (UDP)
- After handshake, sender and receiver negotiate the effective mode (no protocol version bump)
- Until negotiation completes, UDP protection stays off; peers without FEC support ignore protected frames
Full checklist: docs/ROADMAP.md