File: architecture.md

package info (click to toggle)
kdenlive 25.12.1-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 125,932 kB
  • sloc: cpp: 206,733; xml: 11,858; python: 1,139; ansic: 1,054; javascript: 578; sh: 389; makefile: 15
file content (56 lines) | stat: -rw-r--r-- 2,137 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Architecture

*This document describes Kdenlive’s architecture top-down.*

* Top-down architecture
  * Dependencies MLT etc.
  * MVC
  * GUI elements and their counterpart


## Architectural Overview

Kdenlive uses a number of libraries. The most important library is MLT which is
responsible for the core video editing functionality: the process of applying
effects to clips which are organised in tracks and timeline(s). Kdenlive
provides the user interface for this functionality.

Kdenlive and MLT use a number of resources like frei0r for video effects.

```
              ┌────────┐   
              │Kdenlive├─────┐
              └────┬───┘     │
    Render projects│         │Configure
 Decode audio/video│         │effect settings
                   │         │        
              ┌────┴───┐     │        
              │  MLT   ├─────┤             
              └────────┘     │Audio/Video Effects
                             ├───────┬──────┬─────────┐
                          ┌──┴───┐┌──┴───┐┌─┴─┐┌──────┴──────┐
                          │frei0r││LADSPA││SoX││libsamplerate│
                          └──────┘└──────┘└───┘└─────────────┘
```
<!-- http://marklodato.github.io/js-boxdrawing/ for drawing -->


## Class Diagram

A class diagram can be generated with Doxygen and GraphViz with the commands
below. Instead of docker, you can also run `doxygen` directly.

```bash
# Generate a Doxyfile (configuration file)
docker run -it --rm -v $(pwd):/data hrektts/doxygen doxygen -g

# Now edit the file and set the following variables:
# EXTRACT_ALL   = YES
# HAVE_DOT      = YES
# UML_LOOK      = YES
# RECURSIVE     = YES
# INPUT         = src

# Now run Doxygen to generate the docs and UML files
docker run -it --rm -v $(pwd):/data hrektts/doxygen doxygen Doxyfile
```