mirror of
git://f0xx.org/android_cast
synced 2026-07-29 05:17:39 +03:00
33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
# Android Cast — implementation roadmap
|
||
|
||
## Stream protection (FEC / NACK)
|
||
|
||
| Item | Status |
|
||
|------|--------|
|
||
| GF(256) Reed–Solomon + `ProtectionEnvelope` v1 (monolithic) | Done |
|
||
| **v2 per-shard FEC** (`FecShardWire`, one ACUD message per RS shard) | Done |
|
||
| NACK + `RetransmitCache` + `MSG_NACK` | Done |
|
||
| Post-handshake negotiation | Done |
|
||
| Backward compat (defer FEC until negotiated; ignore foreign FEC/NACK) | Done |
|
||
| Default protection **NONE** (stable cast) | Done |
|
||
| Integration tests (`FecShard*`, `UdpCastTransportFecTest`) | Done |
|
||
| Lab soak under loss (HY300 / BL6000) | TODO (manual) |
|
||
| NACK rate limit / backoff | Done (`NackRateLimiter`) |
|
||
| `MSG_FEC_NACK` by groupId (optional) | Deferred |
|
||
|
||
Enable in **Settings → Stream protection (UDP)** on both sender and receiver, then reconnect.
|
||
|
||
## libvpx / Opus / Speex
|
||
|
||
| Item | Status |
|
||
|------|--------|
|
||
| `libandroidcast_codecs.so` + JNI probes | Done |
|
||
| Cross-compile `libvpx.a` (`scripts/build-native-codecs.sh`) | Done |
|
||
| JNI encode/decode in `libvpx_bridge.c` | Done (when `libvpx.a` linked per ABI) |
|
||
| `LibvpxVideoEncoderSink` (surface + buffer) | Done |
|
||
| libvpx decoder on receiver (`LibvpxCapableVideoDecoder`) | Done |
|
||
| Surface → libvpx without MediaCodec passthrough on cast | Done (ImageReader) |
|
||
| Opus / Speex build + sinks | TODO |
|
||
|
||
See [ndk/README.md](../ndk/README.md).
|