# 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) - \ - Arguments (command-line opties lezen en toeganklijk maken)