summaryrefslogtreecommitdiff
path: root/os2eindopdracht/readme.md
blob: c0c5dbf13b77b09bf06ed334e8f163d9d66549ef (plain)
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
# eindopdracht 2 (equalizer)

- main thread (dirigent)
    - lezen bestand
    - opsplitsen + labelen van blocks (sequentieel id's toewijzen)
    - worker thread voor elk block filteren maken
- worker thread
    - filter blok (leest uit een altijd globaal leesbare pool (queue?))
    - geef blok terug aan dirigent door queue
    - stop zelf
- threads worden aangemaakt zolang er nog niet omgezette blokken zijn in de
  todo-lijst
- er mogen maximaal een vooraf gedefinieerd aantal worker threads zijn (-p optie)
- threads stoppen als ze klaar zijn met werken, dus 'slapen' nooit. de main
  thread maakt gebruik van condition variables om te slapen.
- per blok wordt na de hand door de dirigent de rand-samples naar elkaar
  toegeschoven om klikken tegen te gaan
- de dirigent stopt alle blokken weer in volgorde terug in het uitvoer bestand
- tussenklasse maken die een serie samples representeert om uit te bereiden
  naar wav als daar nog tijd voor is (anders gewoon ffmpeg scripts)

## klasses

- SampleStream (collectie van SampleBlock met mogelijkheid om op te breken in blocks en weer samen te voegen)
- SampleBlock (blok van $n$ samples, kunnen geoffset worden en gedumpt worden voor schrijven naar SampleStream)
- FilterWorker (filtert de inhoud van een SampleBlock)
- \<main\>
- Arguments (command-line opties lezen en toeganklijk maken)