Anton Afanasyeu
4c15be763b
Add adaptive jitter buffer, BWE, and mid-session codec renegotiation.
...
Receiver pipeline gets configurable jitter buffering with live stats in the debug overlay; sender/receiver share AdaptiveNetworkControlPlane for congestion-aware bitrate and codec switches without a protocol version bump.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-08 14:55:13 +02:00
Anton Afanasyeu
fb8b0c43e7
codecs: add native build scripts for libvpx/opus/speex + fix CMake includes
...
- scripts/build-native-codecs.sh: cross-compile libvpx, opus, speex for
Android ABIs (arm64-v8a, armeabi-v7a, x86_64) using NDK clang with -fPIC
- scripts/android-ndk.sh: NDK root detection helper
- scripts/native-build-cache.sh: ccache detection helper
- scripts/init-third-party-submodules.sh: init codec submodules
- scripts/ensure-gradle-wrapper.sh: gradle wrapper sanity check
- scripts/adb-reconnect.sh: ADB device discovery helpers
- ndk/CMakeLists.txt: per-ABI include dirs for opus/ and speex_config_types.h
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-28 23:07:17 +02:00
Anton Afanasyeu
f6e69153ca
codecs: real Opus + Speex JNI encode/decode; SFU gate enabled
...
- opus_bridge.c / speex_bridge.c: full encoder + decoder JNI (libopus/libspeex)
- NativeCodecBridge: add Opus/Speex encode/decode/release public Java API
- OpusAudioEncoderSink / SpeexAudioEncoderSink: real AudioEncoderSink impls
- AudioCodecFactory: route OPUS_NATIVE → OpusAudioEncoderSink, SPEEX_NATIVE → SpeexAudioEncoderSink
- AudioDecoderSink interface; NativeAudioDecoder (JNI decode → AudioTrack)
- ReceiverCastService: swap to NativeAudioDecoder when negotiated codec is Opus/Speex
- SfuRelayGate: PREVIEW_ENABLED=true; add API_BASE, WS_PATH, healthUrl()
- Unit tests: OpusAudioEncoderSinkTest, SpeexAudioEncoderSinkTest, SfuRelayGateTest (19 pass)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-28 22:27:44 +02:00
Anton Afanasyeu
43f3014f2c
mobile: IodineVpnServiceTest lifecycle coverage + ndkVersion 29
...
- IodineVpnServiceTest: action constants, extras, IodineTunnelBridge state, config sanitize, RemoteAccessMode iodine round-trips
- app/build.gradle: ndkVersion 29.0.14206865 (27 had corrupt empty dir)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-25 17:49:07 +02:00
Anton Afanasyev
719148a3ea
Dev remote access: iodine DNS tunnel mode (UDP 5350, VpnService).
...
Settings, diagnostics/self-test, heartbeat capability iodine, and unit tests.
Default lab password zxc123 in dev prefs (overridable).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 22:57:48 +02:00
Anton Afanasyeu
fb9c10b48c
docs: AGENTS deps path for url-shortener submodule
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-24 17:48:26 +02:00
Anton Afanasyeu
459f75b41c
submodules: register third-party codecs and deps/ac-ms-url-shortener
...
.gitmodules listed paths but no gitlinks were committed (third-party/ was an
empty tree). External codecs under third-party/; url-shortener moved to
deps/ac-ms-url-shortener (git://f0xx.org/ac/ac-ms-url-shortener).
2026-06-24 17:45:12 +02:00
Anton Afanasyeu
4daefd7dd0
mobile: default crash upload URL via BackendEndpoints /issues/
...
Point DEFAULT_UPLOAD_URL at canonical issues API path instead of legacy /crashes/.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-23 17:08:16 +02:00
Anton Afanasyeu
bfb605ba35
path refs sync
2026-06-23 12:33:03 +02:00
Anton Afanasyeu
8675c2df3a
initial
2026-06-23 12:30:10 +02:00