Original on http://www.grame.fr/~letz/jackdmp.html
jackdmp з'яўляецца C + + версіі Jack нізкай затрымкай аўдыё сервер для аднапрацэсарных і шматпрацэсарных машын. Гэта новая рэалізацыя гняздо сервера асноўныя функцыі, якая накіравана на выдаленне некаторых абмежаванняў бягучага дызайну. Актывацыя сістэмы быў зменены для мадэлі струменя дадзеных і блакаванні без прыёмы праграмавання для графа доступу былі скарыстаны, каб больш дынамічнай і надзейнай сістэмы.
- jackdmp выкарыстоўваць новую мадэль актывацыі кліент, які дазваляе адначасовае выкананне кліента (на SMP машыны), калі паралельна існуюць кліентаў у графе (кліент, маюць тыя ж уваходы). Гэта актывацыя мадэль дазваляе лепш выкарыстоўваць наяўны працэсар на SMP машыне, але таксама працуе на машыне аднаго працэсара.
- jackdmp выкарыстанне блакавання бясплатны спосаб доступу (чытанне / запіс) кліент графа, што дазваляе злучэнняў / адключэнне мае быць зрабіць, не перарываючы аўдыё струменя. У выніку злучэння / раз'яднанні з'яўляюцца без перашкод.
- jackdmp можа працаваць у 2 розных рэжыму на ўзроўні сервера:
- "Сінхроннага" Актывацыя: у дадзеным цыкле, сервер чакае ўсіх кліентаў павінны быць завершаны (па аналогіі са звычайнай jackd)
- "Асінхронных" Актывацыя: у дадзеным цыкле, сервер не чакае для ўсіх кліентаў, каб быць гатовай і буферных выкарыстоўваць выходныя вылічаецца папярэдняга цыклу. "Гукавы" вынік гэтага рэжыму з'яўляецца тое, што калі кліент не актывавана на працягу аднаго цыклу, іншыя кліенты могуць па-ранейшаму працаваць і ў выніку гукавы струмень будзе па-ранейшаму вырабляцца (нават калі яе частковы ў пэўным сэнсе). Гэты рэжым звычайна прыводзяць да меншых (меней чутны) аўдыё збоі ў загружанай сістэме.
JACK2 Будучыня JACK2 будзе заснавана на кодзе jackdmp. Jack 1.9.6 з'яўляецца "пераназванне" ў jackdmp і вынік шмат падзей пачалося пасля LAC 2008 гады. У наш час распаўсюджаны ў якасці дзвюх розных версіях:
Jack-1.9.6.tar.bz2 утрымоўвае зыходны код толькі (галоўным чынам для Linux ці Solaris карыстачоў).
Jack-1.9.6.tgz утрымоўвае зыходныя коды і бінарныя версіі для Windows (там, дзе ўсталёўкі ўваходзіць у камплект). OSX карыстачы могуць атрымаць усталёўкі на JackOSX сайта.
Генеральны публікацый па канструкцыя наяўныя тут. Тэхнічны дакумент пра новыя "прылад прафілявання" можна знайсці тут.
Старыя пакеты: Наступныя пакеты ўтрымоўваюць зыходны код для Linux, OSX і Windows і бінарныя версіі для OSX і Windows. Больш тэхнічнай дакументацыі таксама ўваходзіць:
Jack-1.9.7.tar.bz2 утрымоўвае зыходны код толькі (галоўным чынам для карыстачоў Linux).
Jack-1.9.7.tgz утрымоўвае зыходныя коды і бінарныя версіі для OSX 32/64 біт і Windows (там, дзе ўсталёўкі ўваходзіць у камплект).
Як крыніцы Jackdmp код у наш час на SVN па адрасе:
svn co http://subversion.jackaudio.org/jack/jack2/trunk/jackmp SVN і для тых, з доступам на запіс:
svn co svn+ssh://jacksvn@jackaudio.org/jack2/trunk/jackmp
JACK2 "канвеерная" эксперыментальная версія Jackdmp Бягучая рэалізацыя дазваляе відавочна паралельнай кліентаў у графе для апрацоўкі на некалькі даступных працэсараў у той жа час. Тыповы выпадак:
- in == > A ==> C ==> out and in == > B ==> C ==>
out
А і B залежаць ад тых жа зыходных ("B" кіроўца ў дадзеным выпадку) і можа быць актывавана на 2 працэсара, C чакае і B выйсцяў.
Мы эксперыментавалі з "канвеерная" ідэя, каб паслядоўных графаў (like in ==> A ==> B ==> out) быць вылічаны на шмат'ядравых машын у больш эфектыўны спосаб. Ідэя скараціць буферы D кіроўца памеру ў N некалькіх частак да поўдня і запусціць увесь граф з буферамі N Д / памер N, напрыклад: прыняць памер буфера драйвера з 1024 кадраў, з N = 4, граф апрацоўваецца буферам 1024 / 4 = 256 кадраў. З папярэдняй графе мы паслядоўнасці ўключэння для ўсяго цыклу драйвера:
- A(1) <== 1 працэсар
- A(2) B (1) <== 2 працэсар
- A(3) B (2) <== 2 працэсар
- A(4) B (3) <== 2 працэсар
- B(4) <== 1 працэсар
калі Х (n) уяўляе індэкс 256 кадраў буфер, выкарыстоўваны ў апрацоўцы. Апрацоўка зараз можа быць зроблена на некалькіх ядраў у той жа час.
Актывацыі мадэль была абагульнена трохі зладзіцца з гэтым справы. Існуе новы параметр-D у jackdmp каманднага радка для ўказання значэння Н. Два новых "jack_set_buffer_divisor / jack_get_buffer_divisor" функцыі былі дададзены ў API, каб дынамічнай змены дзельніка (= N) параметру ў графе працуе. Адпаведныя "jack_bufdivisor" кліент у наш час кампіляцыі.
Тэставанне: канвеерную галіну можна азнаёміцца тут: SVN супрацоўніцтва http://subversion.jackaudio.org/jack/jack2/branches/pipelining
- jackd -R -D 4 -d alsa -p 1024 and
- jack_bufdivisor 8 to change the divisor value while running.
УВАГА, УВАГА!
Пры выкарыстанні з выходных портаў, "jack_port_get_buffer" функцыя мяркуючы, што адрас буфера можа быць кэшуюцца кліентам. Гэта не дзела больш у канвеернай галіны версіі. "Jack_port_get_buffer" зараз павінны выкарыстоўваць кожных разоў падчас зваротнага выкліку для атрымання правільнага адрасу буфера. Следствам гэтых змен з'яўляецца тое, што некаторыя вельмі вядомыя Jack прыкладанняў (напрыклад, Ardour ці вадарод) ломіцца! (Красавік 2009 гады: Ardour 2.8 выпраўлена).
Код быў пратэставаны на OSX з некаторымі цяжкімі CoreAudio jackified прыкладанняў і нагрузкі Jack DSP кроплі, як чакалася, як толькі атрымлівае дзельнік> 1. Тыповыя тэсты праводзіліся з драйверамі памер буфера = 512 ці 1024 і N = 4 ці 8.
Jackdmp "прамы" эксперыментальная версія Калі некалькі кліентаў Jack адкрыты ў той жа працэс (або сервер ці падзеленых працэсу), выдаткі на пераключэнне кантэксту паміж кліентамі можа быць паменшана на замену больш дарагім FIFO сістэма актывацыі кліента больш эфектыўным
прамы заклік да кліента аўдыё Працэс зваротнага выкліку. Гэта асабліва цікава, калі кліенты злучаны ў вызначанай паслядоўнасці. Пры наступным графіку кліентаў у той жа працэс: in => [C1 => C2 => C3 => C4] => out, C1 будзе адноўлена спачатку Jack сервер стандартнай сістэмай FIFO, але C2, C3, C4 Працэс зваротнага выкліку будзе напроста зваць у С1 струменя ў рэальным часе. Для любога адвольнага графа з магчымасцю паралельнай да поўдня ад графа, сістэма актывуе любы паслядоўны шлях у графе з гэтай
прамы выклік метаду і аднавіць паралельныя часткі выкарыстаннем FIFO сістэма актывацыі.
Вынікі: На 4 ядрамі Intel Mac Pro працуе гняздо на 64 кадраў з 10 падчас "мятро, як" кліентаў, падлучаных у паслядоўнасці, са звычайнай Jack схемы загрузкі працэсара актывацыі складае 12% і 4% толькі з прамой схемы актывацыі выкліку.
Тэставанне: прамая галіна можна азнаёміцца тут: SVN супрацоўніцтва http://subversion.jackaudio.org/jack/jack2/branches/direct рэжыме. Новы параметр -C дазваляе актываваць "прамы выклік". Па змаўчанні "прамы выклік" рэжым выключаны.