How pjsip/pjproject works
PJSIP is a portable multimedia communications library and application framework. A typical client configures an account through PJSUA/PJSUA2, uses the SIP stack for signaling and SDP negotiation, and establishes audio/video media streams over RTP; PJNATH supplies STUN/TURN/ICE traversal. PJMEDIA handles codecs, devices, and media processing, while PJLIB and PJLIB-UTIL provide portable runtime and protocol utilities. The graph combines README-documented capabilities with sampled call/reference evidence; many implementation links are documented at subsystem level because their source was not sampled.
Main entry points: application.py Python GUI · stream.c RTP streams · pjsua_app.c PJSUA application · account.py GUI accounts
Components 22
Applications and APIs
- PJSUA application
pjsip-apps/src/pjsua/pjsua_app.c - Python GUI
pjsip-apps/src/pygui/application.py - GUI accounts
pjsip-apps/src/pygui/account.py - Account settings
pjsip-apps/src/pygui/accountsetting.py - Buddy management
pjsip-apps/src/pygui/buddy.py - Call interface
pjsip-apps/src/pygui/call.py - Chat interface
pjsip-apps/src/pygui/chat.py - Python endpoint
pjsip-apps/src/pygui/endpoint.py
SIP Signaling
- SIP stack
pjsip/src/pjsip/sip_parser.c - SIP authentication
pjsip/src/pjsip/sip_auth_client.c - Invitation sessions
pjsip/src/pjsip-ua/sip_inv.c - SDP negotiation
pjmedia/src/pjmedia/sdp_neg.c
Media Framework
- Media sessions
pjmedia/src/pjmedia/session.c - RTP streams
pjmedia/src/pjmedia/stream.c - Media codecs
pjmedia/src/pjmedia-codec/audio_codecs.c - Audio devices
pjmedia/src/pjmedia-audiodev/audiodev.c - Video devices
pjmedia/src/pjmedia-videodev/videodev.c
NAT Traversal
- ICE transport
pjmedia/src/pjmedia/transport_ice.c - STUN and TURN
pjnath/src/pjnath/stun_session.c
Portable Runtime
- PJLIB runtime
- Utility protocols
pjlib-util/src/pjlib-util/resolver.c
Other components
- Application user
Connections 22
- Application user → PJSUA application: uses client
- Application user → Python GUI: uses GUI
- Python GUI → GUI accounts: manages accounts
pjsip-apps/src/pygui/application.py - Python GUI → Account settings: opens settings
pjsip-apps/src/pygui/application.py - Python GUI → Buddy management: manages buddies
pjsip-apps/src/pygui/application.py - Python GUI → Python endpoint: uses endpoint
pjsip-apps/src/pygui/application.py - GUI accounts → Call interface: uses calls
pjsip-apps/src/pygui/account.py - GUI accounts → Chat interface: uses chat
pjsip-apps/src/pygui/account.py - Python endpoint → Python GUI: launches GUI
pjsip-apps/src/pygui/endpoint.py - PJSUA application → SIP stack: signaling API
- SIP stack → SIP authentication: authenticates requests
- SIP stack → Invitation sessions: handles invitations
- Invitation sessions → SDP negotiation: negotiates media
- SDP negotiation → Media sessions: configures media
- Media sessions → RTP streams: creates streams
- RTP streams → Media codecs: encodes media
- RTP streams → Audio devices: uses audio
- RTP streams → Video devices: uses video
- RTP streams → ICE transport: uses transport
- ICE transport → STUN and TURN: traverses NAT
- PJSUA application → PJLIB runtime: uses runtime
- Utility protocols → PJLIB runtime: builds on