Skip to content

Architecture

OpenPocketCine is a shared Swift business/protocol core with native platform shells. Policy lives in Swift; sockets, BLE, SoftAP join, rendering, and UI live in the shells.

Layer Path Role
Shared core Sources/OpenPocketViewCore/ DUML, commands, status, LUTs, layout policy. Foundation only — portable.
iOS app ios/OpenPocketCine/ SwiftUI shell, CoreBluetooth, Hotspot Configuration, VideoToolbox/Metal.
Android app Apps/Android/app/ Jetpack Compose shell, Vulkan/GLES live picture, MediaCodec.
Android facade Sources/OpenPocketCineAndroidFacade/ JNI session boundary. Android does not SPM-link the core at runtime.
Tests Tests/OpenPocketViewCoreTests/ Swift Testing suite for the portable core.

Both apps must call the same state machines (CameraSoftAP, FeedWatchdog, SessionRecovery, CameraSetMailbox). Do not clone that ladder in Kotlin.

HUD glyphs are vendored Lucide SVGs (OpcIcon on both shells).

Operator-visible behavior must match across iOS and Android unless docs/PARITY.md lists an exception. Live UDP/decoder facts: docs/live-session.md. The full seam table: docs/ARCHITECTURE.md.

Wire format is in Protocol.