This file provides a brief overview for AI agents. For detailed project documentation, coding guidelines, architecture, and build instructions, see CLAUDE.md.
- Language: C++17 with Qt 6
- Build: CMake ≥ 3.16
- Target OBS: ≥ 30.1.0
- License: GPLv2+
- Maintainer: OPENSPHERE Inc.
| File | Purpose |
|---|---|
src/plugin-main.cpp |
Plugin entry point (module load/unload) |
src/api-client.hpp / .cpp |
SRCLinkApiClient: central orchestrator, OAuth, REST API, WebSocket |
src/api-websocket.hpp / .cpp |
SRCLinkWebSocketClient: control API WebSocket client |
src/request-invoker.hpp / .cpp |
HTTP request sequencing with OAuth2 token management |
src/schema.hpp |
JSON data schemas (Account, Party, Stage, Uplink, Downlink, etc.) |
src/settings.hpp / .cpp |
SRCLinkSettingsStore: persistent settings (OBS profile INI) |
src/utils.hpp / .cpp |
Utility functions, encoder helpers, network helpers |
src/sources/ingress-link-source.hpp / .cpp |
Receiver/downlink source (SRT decode) |
src/outputs/egress-link-output.hpp / .cpp |
Transmitter/uplink output (SRT/RTMP encode) |
src/ws-portal/ws-portal-client.hpp / .cpp |
obs-websocket protocol tunneling client |
src/ws-portal/event-handler.hpp / .cpp |
OBS event broadcasting to WebSocket clients |
src/UI/*.hpp / .cpp / .ui |
Qt dialogs and dock widgets |
data/locale/*.ini |
Locale strings (en-US, ja-JP) |
data/presets/ |
Hardware encoder presets (NVENC, QSV, AMF, Apple, x264) |
lib/ |
Bundled libraries (nlohmann/json, o2, obs-websocket) |
- Follow OBS plugin conventions (
obs_log(),obs_module_text(), RAII wrappers) - All user-facing strings must be localized in
data/locale/en-US.ini(primary) andja-JP.ini - Thread safety required — use mutexes for shared state,
Qt::QueuedConnectionfor UI updates - Code style enforced by
.clang-format(120 columns, 4-space indent, C++17) - No automated tests — manual testing in OBS Studio required
- OAuth tokens are sensitive — never log tokens
- UI layouts defined in
.uifiles (Qt Designer) —AUTOMOC,AUTOUIC,AUTORCCenabled
For full details on architecture, coding guidelines, build instructions, CI/CD, and common tasks, refer to CLAUDE.md.