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)
|