How appliedperceptionlab/marin works
MARIN is a mobile augmented-reality neuronavigation application: it captures camera video, exchanges video and interaction commands with a neuronavigation platform over OpenIGTLink, and presents AR guidance on the mobile device. The sampled entry point wires camera frames, UI commands, and networking threads; the README documents Ibis use and portability to other platforms. Several runtime files are represented by their exact paths from the tree, but their internals were not sampled, so uncertain implementation links are omitted.
Main entry points: main.cpp App startup · threadshandler.cpp Thread coordinator · qmlmainwindow.cpp AR interface · receiver.cpp Data receiver
Components 20
App and interaction
- App startup
src/main.cpp - AR interface
src/qmlmainwindow.cpp - Graphics view
src/glwidget.cpp - Gesture handling
src/gesturehandler.cpp
Camera and video
- Camera control
src/camera.cpp - Frame capture
src/videoFrameGrabber.cpp - Video sender
src/sendervideo.cpp
Network exchange
- Command sender
src/sendercommand.cpp - Sender base
src/sender.cpp - Data receiver
src/receiver.cpp - Thread coordinator
src/threadshandler.cpp - Send worker
src/openigtlsendthread.cpp - Video receive worker
src/videoreceivethread.cpp - Command receive worker
src/commandsreceivethread.cpp - Command model
src/sendercommand.cpp
OpenIGTLink
- OpenIGTLink messages and sockets
includes/OpenIGTLink/igtlMessageBase.h - Video messages and codecs
includes/OpenIGTLink/VideoStreaming/igtlVideoMessage.h - Session management
includes/OpenIGTLink/igtlSessionManager.h
Other components
- Mobile user
- Neuronavigation platform
Connections 34
- Mobile user → AR interface: uses
- App startup → Camera control: creates
- App startup → Frame capture: creates
- App startup → Data receiver: creates
- App startup → AR interface: creates
- App startup → Video sender: creates
- App startup → Command sender: creates
- App startup → Thread coordinator: starts
- Camera control → Frame capture: provides frames
- Frame capture → Video sender: copies frames
- App startup → Thread coordinator: configures workers
- Thread coordinator → Send worker: starts
- Thread coordinator → Video receive worker: configures receiver
- Thread coordinator → Command receive worker: configures receiver
- Thread coordinator → Data receiver: sets receiver
- Thread coordinator → Video sender: updates host
- Thread coordinator → Data receiver: updates host
- AR interface → Command sender: emits commands
- AR interface → Camera control: freezes camera
- AR interface → Gesture handling: handles input
- AR interface → Graphics view: renders view
- Video sender → Send worker: sent by
- Command sender → Send worker: sent by
- Video sender → Video messages and codecs: encodes video
- Video sender → Neuronavigation platform: sends video
- Command sender → Neuronavigation platform: sends commands
- Neuronavigation platform → Data receiver: sends data
- Data receiver → Video receive worker: video input
- Data receiver → Command receive worker: command input
- Video receive worker → AR interface: delivers video
- Command receive worker → AR interface: delivers data
- Sender base → OpenIGTLink messages and sockets: uses protocol
- Data receiver → OpenIGTLink messages and sockets: uses protocol
- OpenIGTLink messages and sockets → Session management: manages sessions