Zdravmi vespolek :)
Aby autor nemel same pochvalne nazory, tak si dovolim upozornit na jednu (celkem velkou :) nepresnost:
"Kvalitnější zařízení na latenci přerušení moc závislá nejsou: kvalitní zvukové karty mají velikou vyrovnávací paměť"
To je ve spouste pripadu (notabene na zvukove karte) naprosta blbost. Pokud delam se zvukem a zvednu si zpozdeni na vice nez (radove) desitky mS, tak je to NEPOUZITELNE na nic jineho, nez na hrani her pripadne na poslouchani hudby. A pokud vezmy vystup 'obycejne' zvykove karty, 4 kanaly, 24 bitu, 50khz, tak tok odpovida radove ~pul mega za vterinu. A takova karta dneska stoji 5tikilo.... Pokud vezmu nejakou lepsi kartu - 8 sync kanalu, 96KHz, vystup digitalni - optika, jsem jeste o kousek dal se sirkou pasma. Cim MENSI buffer, tim 'kvalitnejsi' zarizeni je - ty opravdu top jsou schopny sample accuracy. Coz je schopnost (zjednodusene) reagovat na vstup/vystupy s presnosti na JEDEN samplik :) O velkem buferu zde tedy moc rec byt nemuze.
Nejedna se jen o zvukove karty, ale defato temer kazde zarizeni, majici vystup 'mimo' pocitac. Buffer je zde spise na obtiz. Proto, cim lepsi obsluha preruseni, cim lepsi 'priority', tim vice je pocutac pozuitelny na neco jineho, nez jako psaci/herni stroj. Cim vetsi moznosti jsou, tim vetsi potreba je 'realtime'. Nekdy je rozdil mezi 'lspon trochu realtime' a 'normlanim' v pouzitelnost ci nepouzitelnosti...
Nicmene, jinak pekny clanek :)
R.
Vim, nejaky jsem uz napsal.. [narp. core linux ovladace pro Alesis ADAT, ale to uz je nejaky patek zpet] A zrovna ALSA(u) bych nedaval jako priklad neceho extra dobreho :\ Kod alsy znam celkem dobre, co z nej mam vysist ?
Krom toho jsem primarne reagoval na tvrzeni, ze 'bufer' na karte vse resi. Pokud je dodavani dat postaveno na jinem principu nez preruseni, pak pro zmenu stoji zbytecny CPU cas a pokud neni dedicated CPU (nebo vice), je to i 'plytvani'. Pokud ma ale karta svoje DSP (nebo je to matice DSP procesoru/karet), pak je to o necem uplne jinem.
R.
teď už chápu o co šlo. napíšu to tedy jinak: pokud je karta tak blbá, že nedokáže držek krok s okolím (třeba lehkou změnou samplerate), nebude ani častější přerušování ideálním řešením. někdy je zkrátka výhodnější, aby přerušení chodilo třeba po každých 4k a mezi tím se podívat, kde se zrovna brouzdá DMA pointer. takže buffer někde v převodníku toho moc neřeší nebo je rovnou na obtíž, na tom se shodneme. omlouvám se za svou nechápavost :-)
oops! :)
mna napriklad velmi zaujima problematika kernelov, nejake som dokonca vyplodil sam, ale viac menej koli nejakym vyskumnym projektom ako koli podpore low- alebo high-end zvukovych kariet, cize co sa tyka tohto threadu som BFU. ale clanku tlieskam (i ked linuze mam prestudovane, bsd menej. :))
drzim palce a tesim sa na dalsie casti.