# likely7/veyra-nrvideo architecture

> Architecture diagram of the GitHub repository likely7/veyra-nrvideo, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/likely7/veyra-nrvideo
- Repository: https://github.com/likely7/veyra-nrvideo

## Overview

Veyra is a Windows real-time GPU video player and enhancement application for local media, capture devices, screen capture, and console/PC streaming. Users select a source in the Qt/QML interface; the engine opens and decodes or ingests frames, applies a configurable GPU enhancement graph, then presents live video or routes work to recording/export. Separate capabilities include Moonlight and experimental Xbox streaming, layered presets and node editing, audio capture/mixing, and instant replay. The graph follows documented capabilities and sampled engine wiring; several subsystem internals were not excerpted, so their links rely on README statements.

Main entry points: [`src/engine/EngineController.cpp`](https://github.com/likely7/veyra-nrvideo/blob/main/src/engine/EngineController.cpp) (Playback engine), [`apps/veyra-qml/main.cpp`](https://github.com/likely7/veyra-nrvideo/blob/main/apps/veyra-qml/main.cpp) (QML interface), [`include/veyra/pipeline/EnhanceGraph.h`](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/pipeline/EnhanceGraph.h) (Enhancement graph), [`include/veyra/ui/QmlPlayerBridge.h`](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/ui/QmlPlayerBridge.h) (Player bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Interface and control"]
  node_qml["QML interface<br/>[main.cpp]"]
  node_bridge["Player bridge<br/>[QmlPlayerBridge.h]"]
  node_settings["Presets and sessions<br/>[PresetLibrary.h]"]
end

subgraph group_sources["Media and sources"]
  node_media["Media demux and decode<br/>[MediaFileSource.h]"]
  node_capture["Capture and screen input"]
end

subgraph group_runtime["Playback and enhancement"]
  node_engine["Playback engine"]
  node_graph["Enhancement graph<br/>[EnhanceGraph.h]"]
  node_gpu["GPU device and scheduling"]
end

subgraph group_outputs["Presentation and output"]
  node_present["Video presentation<br/>[VideoPresenter.h]"]
  node_audio["Audio capture and output"]
  node_recording["Recording and replay<br/>[LiveRecorder.h]"]
  node_export["Export queue and jobs<br/>[ExportJobManager.h]"]
end

subgraph group_integrations["Streaming and GPU backends"]
  node_moonlight["Moonlight streaming"]
  node_remote["Remote Play"]
  node_xbox["Xbox streaming<br/>[WebRtcSession.h]"]
  node_backends["SR NR and frame generation"]
end

node_user(("Viewer"))
node_store[("Media files")]
node_display(("Display"))

node_user -->|"selects source"| node_qml
node_qml -->|"controls playback"| node_bridge
node_bridge -->|"controls"| node_engine
node_engine -->|"opens media"| node_media
node_store -->|"reads"| node_media
node_engine -.->|"ingests frames"| node_capture
node_engine -->|"starts session"| node_moonlight
node_engine -->|"starts session"| node_remote
node_engine -.->|"starts session"| node_xbox
node_qml -.->|"edits presets"| node_settings
node_engine -->|"processes frames"| node_graph
node_graph -.->|"uses device"| node_gpu
node_graph -.->|"runs enhancement"| node_backends
node_engine -->|"presents video"| node_present
node_present -.->|"renders frames"| node_display
node_engine -->|"coordinates audio"| node_audio
node_engine -->|"records replay"| node_recording
node_engine -->|"starts export"| node_export
node_export -.->|"writes output"| node_store

click node_qml "https://github.com/likely7/veyra-nrvideo/blob/main/apps/veyra-qml/main.cpp"
click node_bridge "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/ui/QmlPlayerBridge.h"
click node_settings "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/PresetLibrary.h"
click node_engine "https://github.com/likely7/veyra-nrvideo/blob/main/src/engine/EngineController.cpp"
click node_media "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/MediaFileSource.h"
click node_capture "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/CaptureCardSource.h"
click node_moonlight "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/MoonlightSessionSource.h"
click node_remote "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/RemotePlaySessionSource.h"
click node_xbox "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/xbox/WebRtcSession.h"
click node_graph "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/pipeline/EnhanceGraph.h"
click node_gpu "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/gfx/D3D12DeviceContext.h"
click node_backends "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/ngx/DlssNrRuntimeAdapter.h"
click node_present "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/VideoPresenter.h"
click node_audio "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/sink/CaptureAudioSession.h"
click node_recording "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/LiveRecorder.h"
click node_export "https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/ExportJobManager.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_qml,node_bridge,node_settings,node_user toneBlue
class node_media,node_capture,node_store toneAmber
class node_engine,node_graph,node_gpu toneMint
class node_present,node_audio,node_recording,node_export toneRose
class node_moonlight,node_remote,node_xbox,node_backends,node_display toneIndigo
```

## Components

### Interface and control

- [QML interface](https://github.com/likely7/veyra-nrvideo/blob/main/apps/veyra-qml/main.cpp): `apps/veyra-qml/main.cpp`
- [Player bridge](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/ui/QmlPlayerBridge.h): `include/veyra/ui/QmlPlayerBridge.h`
- [Presets and sessions](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/PresetLibrary.h): `include/veyra/engine/PresetLibrary.h`

### Media and sources

- [Media demux and decode](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/MediaFileSource.h): `include/veyra/source/MediaFileSource.h`
- [Capture and screen input](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/CaptureCardSource.h): `include/veyra/source/CaptureCardSource.h`

### Playback and enhancement

- [Playback engine](https://github.com/likely7/veyra-nrvideo/blob/main/src/engine/EngineController.cpp): `src/engine/EngineController.cpp`
- [Enhancement graph](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/pipeline/EnhanceGraph.h): `include/veyra/pipeline/EnhanceGraph.h`
- [GPU device and scheduling](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/gfx/D3D12DeviceContext.h): `include/veyra/gfx/D3D12DeviceContext.h`

### Presentation and output

- [Video presentation](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/VideoPresenter.h): `include/veyra/engine/VideoPresenter.h`
- [Audio capture and output](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/sink/CaptureAudioSession.h): `include/veyra/sink/CaptureAudioSession.h`
- [Recording and replay](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/LiveRecorder.h): `include/veyra/engine/LiveRecorder.h`
- [Export queue and jobs](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/engine/ExportJobManager.h): `include/veyra/engine/ExportJobManager.h`

### Streaming and GPU backends

- [Moonlight streaming](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/MoonlightSessionSource.h): `include/veyra/source/MoonlightSessionSource.h`
- [Remote Play](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/source/RemotePlaySessionSource.h): `include/veyra/source/RemotePlaySessionSource.h`
- [Xbox streaming](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/xbox/WebRtcSession.h): `include/veyra/xbox/WebRtcSession.h`
- [SR NR and frame generation](https://github.com/likely7/veyra-nrvideo/blob/main/include/veyra/ngx/DlssNrRuntimeAdapter.h): `include/veyra/ngx/DlssNrRuntimeAdapter.h`

### Other components

- **Viewer**
- **Media files**
- **Display**

## Connections

- Viewer → QML interface: selects source (evidence: `README.md`)
- QML interface → Player bridge: controls playback (evidence: `apps/veyra-qml/main.cpp`)
- Player bridge → Playback engine: controls
- Playback engine → Media demux and decode: opens media (evidence: `include/veyra/source/MediaFileSource.h`)
- Media files → Media demux and decode: reads (evidence: `README.md`)
- Playback engine → Capture and screen input: ingests frames (evidence: `README.md`)
- Playback engine → Moonlight streaming: starts session
- Playback engine → Remote Play: starts session (evidence: `src/engine/EngineController.cpp`)
- Playback engine → Xbox streaming: starts session (evidence: `README.md`)
- QML interface → Presets and sessions: edits presets (evidence: `README.md`)
- Playback engine → Enhancement graph: processes frames (evidence: `src/engine/EngineController.cpp`)
- Enhancement graph → GPU device and scheduling: uses device
- Enhancement graph → SR NR and frame generation: runs enhancement
- Playback engine → Video presentation: presents video (evidence: `src/engine/EngineController.cpp`)
- Video presentation → Display: renders frames (evidence: `README.md`)
- Playback engine → Audio capture and output: coordinates audio
- Playback engine → Recording and replay: records replay (evidence: `src/engine/EngineController.cpp`)
- Playback engine → Export queue and jobs: starts export
- Export queue and jobs → Media files: writes output (evidence: `README.md`)
