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.) - Build each ABI you ship (Gradle links
build/native/<abi>/libvpx.aautomatically):
./scripts/build-native-codecs.sh arm64-v8a
./scripts/build-native-codecs.sh armeabi-v7a # if armeabi-v7a is in your APK
./gradlew assembleDebug
Optional override: ANDROIDCAST_LIBVPX_LIB only applies when its path contains the current ABI name (e.g. .../arm64-v8a/libvpx.a).
ABIs without a matching libvpx.a still build; software VPx is disabled on those architectures.
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