# xiaokang2022/maliang-media architecture

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

- Interactive diagram: https://gitdiagram.com/xiaokang2022/maliang-media
- Repository: https://github.com/xiaokang2022/maliang-media

## Overview

maliang-media is a small extension that adds audio/video playback to a maliang GUI. The user creates a VideoCanvas and opens a file; the canvas drives ffpyplayer, converts decoded frames to displayable images, and updates the canvas. Optional controls provide playback, seeking, volume, and fullscreen interactions. The README establishes the public workflow; sampled source confirms player and icon interactions, but does not show every control callback.

Main entry points: [`maliang/media/main.py`](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py) (VideoCanvas), [`maliang/media/icons.py`](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/icons.py) (Icon parser)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_playback["Video playback"]
  node_canvas["VideoCanvas<br/>[main.py]"]
  node_player["MediaPlayer"]
end

subgraph group_presentation["GUI presentation"]
  node_controls["Playback controls<br/>[main.py]"]
  node_frame_display["Frame display<br/>[main.py]"]
  node_maliang["maliang GUI"]
end

subgraph group_assets["Theme assets"]
  node_icon_parser["Icon parser<br/>[icons.py]"]
end

node_user(("Application developer"))

node_user -->|"creates and opens"| node_canvas
node_canvas -->|"opens and controls"| node_player
node_canvas -->|"requests frames"| node_player
node_canvas -->|"converts and displays"| node_frame_display
node_canvas -->|"updates controls"| node_controls
node_canvas -->|"extends GUI canvas"| node_maliang
node_canvas -->|"parses icons"| node_icon_parser

click node_canvas "https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py"
click node_controls "https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py"
click node_frame_display "https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py"
click node_icon_parser "https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/icons.py"

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_canvas,node_player toneBlue
class node_controls,node_frame_display,node_maliang toneAmber
class node_icon_parser toneMint
class node_user toneIndigo
```

## Components

### Video playback

- [VideoCanvas](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py): `maliang/media/main.py`
- **MediaPlayer**

### GUI presentation

- [Playback controls](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py): `maliang/media/main.py`
- [Frame display](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/main.py): `maliang/media/main.py`
- **maliang GUI**

### Theme assets

- [Icon parser](https://github.com/xiaokang2022/maliang-media/blob/main/maliang/media/icons.py): `maliang/media/icons.py`

### Other components

- **Application developer**

## Connections

- Application developer → VideoCanvas: creates and opens (evidence: `README.md`)
- VideoCanvas → MediaPlayer: opens and controls (evidence: `maliang/media/main.py`)
- VideoCanvas → MediaPlayer: requests frames (evidence: `maliang/media/main.py`)
- VideoCanvas → Frame display: converts and displays (evidence: `maliang/media/main.py`)
- VideoCanvas → Playback controls: updates controls (evidence: `maliang/media/main.py`)
- VideoCanvas → maliang GUI: extends GUI canvas (evidence: `maliang/media/main.py`)
- VideoCanvas → Icon parser: parses icons (evidence: `maliang/media/main.py`)
