1
jackdmp: Jack server for multi-processor machines
Stéphane Letz, Yann Orlarey, Dominique Fober Grame, centre de création musicale Lyon, France
jackdmp: Jack server for multi-processor machines Stphane Letz, - - PowerPoint PPT Presentation
jackdmp: Jack server for multi-processor machines Stphane Letz, Yann Orlarey, Dominique Fober Grame, centre de cration musicale Lyon, France 1 Main objectives To take advantage of multi-processor architectures: better use of
1
Stéphane Letz, Yann Orlarey, Dominique Fober Grame, centre de création musicale Lyon, France
2
jackdmp : LAC 2005, 21/04/05
improved user experience: “glitch free” connections/disconnections…
3
jackdmp : LAC 2005, 21/04/05
4
jackdmp : LAC 2005, 21/04/05 Input A B C D Output Client Driver
5
jackdmp : LAC 2005, 21/04/05
B D C E
6
jackdmp : LAC 2005, 21/04/05
Audio In A(1) B(1) C(2) D(1) Audio Out (1)
7
jackdmp : LAC 2005, 21/04/05
8 jackdmp : LAC 2005, 21/04/05 A(0) B(0) C(2) D(1) Audio in A(1) B(1) C(2) D(1) Audio Out (1) Audio In A(0) B(0) C(1) D(1) A(0) B(0) C(0) D(1) CPU1 CPU2 State 1 State 2 State 3 State 4 Audio Out (1) Audio in Audio in Audio Out (1) Audio Out (1)
9
jackdmp : LAC 2005, 21/04/05
A(2) B(2) C(3) D(2)
Feedback connection Data connection
1 buffer delay
Loop Out Audio In FW In Loop In Audio Out FW Out
10
jackdmp : LAC 2005, 21/04/05
Activating driver Waiting driver
A(2) B(2) C(3) D(2) Loop Out Audio In FW In Loop In Audio Out (1) FW Out
11
jackdmp : LAC 2005, 21/04/05
A(2) B(2) C(3) D(2) Loop Out Audio In FW In Loop In Audio Out (1) FW Out
12
jackdmp : LAC 2005, 21/04/05
A(2) B(1) C(3) D(2) Loop Out Audio In FW In Loop In Audio Out FW Out (4)
13
jackdmp : LAC 2005, 21/04/05
14
jackdmp : LAC 2005, 21/04/05
15
jackdmp : LAC 2005, 21/04/05
16
jackdmp : LAC 2005, 21/04/05
int AtomicAdd(int* value, int amount) { int oldValue; int newValue; do {
newValue = oldValue + amount; } while ( ! CAS(oldValue, newValue, value)); return oldValue; }
17
jackdmp : LAC 2005, 21/04/05
A Server B
Connect (p1,p2) PortRegister (« out ») ………..
18
jackdmp : LAC 2005, 21/04/05
Current Next
Read Write
19
jackdmp : LAC 2005, 21/04/05
1 Write Write 2 3
WriteStateStart WriteStateStop TrySwitchState TrySwitchState
20
jackdmp : LAC 2005, 21/04/05 1 Write Write 1 1 1 2 2 2 2 3 3 Server write thread Server RT thread 1 2 3 4 5 6 7 Graph state number: reader Cycle number Switch fails Switch succeds Graph state number: writer
21
jackdmp : LAC 2005, 21/04/05
change (typically needed before notifying a “graph state change”)
22
jackdmp : LAC 2005, 21/04/05
23
jackdmp : LAC 2005, 21/04/05
24
jackdmp : LAC 2005, 21/04/05
25
jackdmp : LAC 2005, 21/04/05
a client to be late
26
jackdmp : LAC 2005, 21/04/05
Audio In A B C D Audio Out E F
Blocked sub-graph
27
jackdmp : LAC 2005, 21/04/05
28
jackdmp : LAC 2005, 21/04/05
29
jackdmp : LAC 2005, 21/04/05
30
jackdmp : LAC 2005, 21/04/05
31
jackdmp : LAC 2005, 21/04/05
32
jackdmp : LAC 2005, 21/04/05
33
jackdmp : LAC 2005, 21/04/05