# rupbundele-bot/vlc architecture

> Architecture diagram of the GitHub repository rupbundele-bot/vlc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rupbundele-bot/vlc
- Repository: https://github.com/rupbundele-bot/vlc

## Overview

VLC is both a desktop media player and an embeddable multimedia engine (libVLC). The principal workflow is that a user or embedding application selects media, VLC reads it from a file, disc, stream, or device, demultiplexes and decodes it, then presents audio/video or routes it elsewhere. VLC also supports playlist and media discovery, adaptive streaming, and stream conversion/output. The README documents these capabilities; the tree identifies their module families, but most runtime wiring was not sampled, so uncertain module-to-module calls are omitted.

Main entry points: [`modules/codec`](https://github.com/rupbundele-bot/vlc/tree/master/modules/codec) (Codec modules), [`lib/core.c`](https://github.com/rupbundele-bot/vlc/blob/master/lib/core.c) (libVLC API), [`modules/demux`](https://github.com/rupbundele-bot/vlc/tree/master/modules/demux) (Demultiplexing), [`modules/access`](https://github.com/rupbundele-bot/vlc/tree/master/modules/access) (Media access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Interfaces"]
  node_vlc_app["VLC application<br/>[vlc.c]"]
  node_qt_player["Qt player UI"]
  node_playlist["Playlist controller"]
end

subgraph group_media_flow["Media processing"]
  node_media_input["Media access"]
  node_demux["Demultiplexing"]
  node_adaptive["Adaptive streaming"]
  node_codec["Codec modules"]
  node_audio_filters["Audio filters"]
end

subgraph group_output["Playback and output"]
  node_audio_output["Audio output"]
  node_video_output["Video output<br/>[vlc_vout.h]"]
  node_stream_output["Stream output"]
  node_hls_output["HLS storage<br/>[storage.c]"]
end

subgraph group_services["Discovery and services"]
  node_media_discovery["Media discovery"]
  node_renderer_discovery["Renderer discovery"]
  node_addons["Add-on storage<br/>[fsstorage.c]"]
end

subgraph group_engine["Engine API"]
  node_libvlc["libVLC API<br/>[core.c]"]
  node_libvlc_media["Media API<br/>[media.c]"]
  node_libvlc_player["Media player API<br/>[media_player.c]"]
end

node_user(("User"))
node_embedding_app(("Embedding app"))
node_external_media(("Files, discs, streams, devices"))

node_user -->|"selects media"| node_vlc_app
node_user -->|"controls playback"| node_qt_player
node_embedding_app -->|"calls API"| node_libvlc
node_vlc_app -->|"uses engine"| node_libvlc
node_qt_player -->|"controls playback"| node_libvlc_player
node_playlist -->|"starts playback"| node_libvlc_player
node_libvlc -->|"creates media"| node_libvlc_media
node_libvlc -->|"creates player"| node_libvlc_player
node_libvlc_media -->|"opens media"| node_media_input
node_external_media -->|"provides content"| node_media_input
node_media_input -->|"supplies stream"| node_demux
node_demux -->|"supplies tracks"| node_codec
node_codec -->|"decoded audio"| node_audio_filters
node_audio_filters -->|"outputs audio"| node_audio_output
node_codec -->|"outputs video"| node_video_output
node_demux -.->|"handles adaptive playlists"| node_adaptive
node_codec -.->|"encodes media"| node_stream_output
node_stream_output -.->|"stores HLS content"| node_hls_output
node_user -.->|"requests discovery"| node_media_discovery
node_media_discovery -.->|"finds media"| node_playlist
node_user -.->|"requests renderer search"| node_renderer_discovery
node_user -.->|"manages add-ons"| node_addons

click node_vlc_app "https://github.com/rupbundele-bot/vlc/blob/master/bin/vlc.c"
click node_qt_player "https://github.com/rupbundele-bot/vlc/blob/master/modules/gui/qt/player/player_controller.cpp"
click node_playlist "https://github.com/rupbundele-bot/vlc/blob/master/modules/gui/qt/playlist/playlist_controller.cpp"
click node_libvlc "https://github.com/rupbundele-bot/vlc/blob/master/lib/core.c"
click node_libvlc_media "https://github.com/rupbundele-bot/vlc/blob/master/lib/media.c"
click node_libvlc_player "https://github.com/rupbundele-bot/vlc/blob/master/lib/media_player.c"
click node_media_input "https://github.com/rupbundele-bot/vlc/tree/master/modules/access"
click node_demux "https://github.com/rupbundele-bot/vlc/tree/master/modules/demux"
click node_adaptive "https://github.com/rupbundele-bot/vlc/blob/master/modules/demux/adaptive/PlaylistManager.cpp"
click node_codec "https://github.com/rupbundele-bot/vlc/tree/master/modules/codec"
click node_audio_filters "https://github.com/rupbundele-bot/vlc/tree/master/modules/audio_filter"
click node_audio_output "https://github.com/rupbundele-bot/vlc/tree/master/modules/audio_output"
click node_video_output "https://github.com/rupbundele-bot/vlc/blob/master/include/vlc_vout.h"
click node_stream_output "https://github.com/rupbundele-bot/vlc/tree/master/modules/access_output"
click node_hls_output "https://github.com/rupbundele-bot/vlc/blob/master/modules/stream_out/hls/storage.c"
click node_media_discovery "https://github.com/rupbundele-bot/vlc/blob/master/include/vlc_services_discovery.h"
click node_renderer_discovery "https://github.com/rupbundele-bot/vlc/blob/master/lib/renderer_discoverer.c"
click node_addons "https://github.com/rupbundele-bot/vlc/blob/master/modules/misc/addons/fsstorage.c"

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_vlc_app,node_qt_player,node_playlist,node_user toneBlue
class node_media_input,node_demux,node_adaptive,node_codec,node_audio_filters toneAmber
class node_audio_output,node_video_output,node_stream_output,node_hls_output toneMint
class node_media_discovery,node_renderer_discovery,node_addons toneRose
class node_libvlc,node_libvlc_media,node_libvlc_player,node_embedding_app,node_external_media toneIndigo
```

## Components

### Interfaces

- [VLC application](https://github.com/rupbundele-bot/vlc/blob/master/bin/vlc.c): `bin/vlc.c`
- [Qt player UI](https://github.com/rupbundele-bot/vlc/blob/master/modules/gui/qt/player/player_controller.cpp): `modules/gui/qt/player/player_controller.cpp`
- [Playlist controller](https://github.com/rupbundele-bot/vlc/blob/master/modules/gui/qt/playlist/playlist_controller.cpp): `modules/gui/qt/playlist/playlist_controller.cpp`

### Media processing

- [Media access](https://github.com/rupbundele-bot/vlc/tree/master/modules/access): `modules/access`
- [Demultiplexing](https://github.com/rupbundele-bot/vlc/tree/master/modules/demux): `modules/demux`
- [Adaptive streaming](https://github.com/rupbundele-bot/vlc/blob/master/modules/demux/adaptive/PlaylistManager.cpp): `modules/demux/adaptive/PlaylistManager.cpp`
- [Codec modules](https://github.com/rupbundele-bot/vlc/tree/master/modules/codec): `modules/codec`
- [Audio filters](https://github.com/rupbundele-bot/vlc/tree/master/modules/audio_filter): `modules/audio_filter`

### Playback and output

- [Audio output](https://github.com/rupbundele-bot/vlc/tree/master/modules/audio_output): `modules/audio_output`
- [Video output](https://github.com/rupbundele-bot/vlc/blob/master/include/vlc_vout.h): `include/vlc_vout.h`
- [Stream output](https://github.com/rupbundele-bot/vlc/tree/master/modules/access_output): `modules/access_output`
- [HLS storage](https://github.com/rupbundele-bot/vlc/blob/master/modules/stream_out/hls/storage.c): `modules/stream_out/hls/storage.c`

### Discovery and services

- [Media discovery](https://github.com/rupbundele-bot/vlc/blob/master/include/vlc_services_discovery.h): `include/vlc_services_discovery.h`
- [Renderer discovery](https://github.com/rupbundele-bot/vlc/blob/master/lib/renderer_discoverer.c): `lib/renderer_discoverer.c`
- [Add-on storage](https://github.com/rupbundele-bot/vlc/blob/master/modules/misc/addons/fsstorage.c): `modules/misc/addons/fsstorage.c`

### Engine API

- [libVLC API](https://github.com/rupbundele-bot/vlc/blob/master/lib/core.c): `lib/core.c`
- [Media API](https://github.com/rupbundele-bot/vlc/blob/master/lib/media.c): `lib/media.c`
- [Media player API](https://github.com/rupbundele-bot/vlc/blob/master/lib/media_player.c): `lib/media_player.c`

### Other components

- **User**
- **Embedding app**
- **Files, discs, streams, devices**

## Connections

- User → VLC application: selects media
- User → Qt player UI: controls playback
- Embedding app → libVLC API: calls API
- VLC application → libVLC API: uses engine
- Qt player UI → Media player API: controls playback
- Playlist controller → Media player API: starts playback
- libVLC API → Media API: creates media
- libVLC API → Media player API: creates player
- Media API → Media access: opens media
- Files, discs, streams, devices → Media access: provides content
- Media access → Demultiplexing: supplies stream
- Demultiplexing → Codec modules: supplies tracks
- Codec modules → Audio filters: decoded audio
- Audio filters → Audio output: outputs audio
- Codec modules → Video output: outputs video
- Demultiplexing → Adaptive streaming: handles adaptive playlists
- Codec modules → Stream output: encodes media
- Stream output → HLS storage: stores HLS content
- User → Media discovery: requests discovery
- Media discovery → Playlist controller: finds media
- User → Renderer discovery: requests renderer search
- User → Add-on storage: manages add-ons
