nativemind_call
Native media layer of NativeMind calls, built on Andrey Bekhtold's handmade WebRTC code (no AI, 2025-04): video goes
into Flutter textures (Android SurfaceProducer + EglRenderer, iOS FlutterTexture), so call tiles compose
under overlays and scroll without PlatformViews; hardware codecs on a shared EGL context; his WebRTC configuration
and call audio session on both platforms.
final call = NmNativeCall.instance;
await call.requestPermissions();
final me = await call.createClient(iceServers: [NmCallIceServer(urls: ['turn:turn.example.org:3478'], username: u, credential: p)]);
me.onOffer.listen(signalling.sendOffer); // your signalling
me.onIceCandidate.listen(signalling.sendCandidate); // null = end of candidates
await me.createOffer();
// remote answer / candidates: me.handleRemoteSdp(sdp); me.addIceCandidate(c); me.setReadyToSendIceCandidates(true);
// The call screens of nativemind_deals draw tiles through NmCallPort.videoTile:
final port = NmNativeCallPort(client: me, activeCall: info, onAccept: accept, onHangUp: hangUp);
NmLoopbackCall is Andrey's demo: two peer connections in one process (A sends the camera, B receives); see example/.
Platforms: Android (minSdk 24, webrtc-sdk 125.6422.07 — an app that also has flutter_webrtc gets that plugin's newer
build of the same artifact), iOS 13+ (WebRTC-SDK pod ≥ 125.6422.07; add NSCameraUsageDescription and
NSMicrophoneUsageDescription). License: NativeMindNONC. Provenance: PROVENANCE.md.
Libraries
- nativemind_call
- Native media layer of NativeMind calls on Andrey Bekhtold's handmade WebRTC code: NmNativeCall creates
NmNativeCallClients (Android PeerConnectionClient / iOS WebRTCManager), NmCallVideoView shows their Flutter
textures, NmNativeCallPort is the
NmCallPortof nativemind_deals over them, NmLoopbackCall is Andrey's two-peer loopback demo.