1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 04:57:40 +03:00
Files
android_cast/ndk
Anton Afanasyeu 7a07d6de1e short libvpx try
2026-05-18 14:25:02 +02:00
..
2026-05-18 14:25:02 +02:00
2026-05-18 14:25:02 +02:00
2026-05-18 14:25:02 +02: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)

  1. git submodule update --init third-party/libvpx
  2. Build libvpx.a for your ABI: ./scripts/build-native-codecs.sh arm64-v8a
    (If the repo path has spaces, the script uses /tmp/androidcast-libvpx-$USER automatically.)
  3. 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