sync protocol spec (German)
Stefan Schuermans

Stefan Schuermans commited on 2014-01-15 22:03:27
Showing 1 changed files, with 144 additions and 0 deletions.

... ...
@@ -0,0 +1,144 @@
1
+Synchronisierungs-Protokoll für Po.W.E.R.
2
+=========================================
3
+
4
+Version: 20131106
5
+Autor: Stefan Schürmans
6
+
7
+Aufgabenstellung
8
+----------------
9
+
10
+Für die Theateraufführung Po.W.E.R.ist es notwendig, verschiedene Rechner, die
11
+Audio, Video und/oder Effekte abspielen miteinander zu synchronisieren.  Dabei
12
+soll nicht nur die aktuelle Zeit innerhalb eines Audio-Stücks bzw. Films
13
+synchronisiert werden, sondern auch das aktuelle Stück (z.B. der Dateiname)
14
+mit behandelt werden.  Da kein Standard-Protkoll für diese Aufgabe gefunden
15
+werden konnte, soll nun ein einfaches Protokoll neu definiert werden.
16
+
17
+Grundprinzip
18
+------------
19
+
20
+Ein sogenannter Master soll als zentrale Instanz die Synchronisations-
21
+Informationen periodisch per Ethernet/WLAN an die einzelnen Abspielrechner
22
+(auch Clients genannt) verteilen.  Die Abspielrechner empfangen den Namen
23
+des aktuellen Stücks und die aktuelle Position in diesem Stück.  Sie
24
+vergleichen diese Soll-Information mit der lokalen Ist-Information und passen
25
+das Stück und die Position eigenständig an, wenn eine signifikante Abweichung
26
+vorliegt.
27
+
28
+Die Übermittlung der Synchronisations-Informationen soll ohne An-/Abmeldung
29
+der Clients beim Server erfolgen und keine Speicherungs eines Zustands der
30
+Gegenstelle auf Seiten des Servers oder der Clients erfordern, damit die
31
+einzelnen Geäte autonom arbeiten können.  Es soll gewährleistet sein,
32
+dass der Ausfall eines Gerätes (Client oder Server) die Funktion der anderen
33
+Geräte nicht beeinträchtigt.  Im Falle des Ausfalls des Servers steht
34
+allerdings die Synchronisations-Funktion nicht mehr zur Verfügung und die
35
+Clients laufen unsynchronisert weiter.  Wird das ausgefallene Gerät
36
+neu gestartet, soll es direkt wieder den Normalbetrieb aufnehmen, ohne
37
+dass die anderen Geräte mitwirken.
38
+
39
+Datenformat
40
+-----------
41
+
42
+Die Synchronisations-Informationen werden periodisch per UDP-Broadcast
43
+gesendet.  Sowohl Quell- als auch Ziel-Port sind 5740.  Die Sendung erfolgt
44
+alle 0.1 Sekunden.  Jedes gesendete Informations-Paket enthält den Namen des
45
+aktuellen Stücks und die aktuelle Position im Stück.
46
+
47
+Da die Informations-Pakete häufig versand werden und schnell bearbeitet werden
48
+müssen, soll sowohl deren Erstellung als auch deren Verarbeitung möglichst
49
+effizient sein.  Es wir daher ein einfaches Binärformat verwendet.  Die
50
+Nutzdaten des UDP-Pakets sind wie folgt aufgebaut:
51
+
52
+Start   Länge   Typ     Beschreibung
53
+-----   -----   ---     ------------
54
+    0       4   ASCII   feste Kennung, immer "PoSy"
55
+                        (steht für "Po.W.E.R. Synchronisation")
56
+    4       4   U32be   Bitfeld mit Steuerinformationen
57
+    8      64   UTF-8   Name des aktuellen Stücks
58
+   72       4   U32be   aktuelle Position im Stück (in Millisekunden)
59
+
60
+Die Bedeutung der Typkürzel ist wie folgt:
61
+
62
+Typ     Bedeutung
63
+---     ---------
64
+ASCII   ASCII-String mit fester Maximal-Länge, ggf. mit Null-Zeichen aufgefüllt
65
+UTF-8   UTF-8-String mit fester Maximal-Länge, ggf. mit Null-Zeichen aufgefüllt
66
+U32be   vorzeichenlose Ganzzahl, 32 bit Länge, byte order big-endian
67
+
68
+Das Bitfeld für Steuerinformationen enthält folgende Informationen (mit
69
+bitweisem Oder verknüpt):
70
+
71
+Wert   Beschreibung
72
+----   ------------
73
+   1   Pause aktiv
74
+
75
+Bei der Generierung der Pakete muss das Datenformat strikt eingehalten werden.
76
+In späteren Versionen des Protokoll können ggf. weitere Felder angefügt werden.
77
+Daher ist nicht erlaubt, nicht benutzerspezifische Felder anzuhängen.  Nicht
78
+definierte Werte in Bitfeldern sind stets mit 0 zu kodieren.
79
+
80
+Beim Empfang eines Pakets ist die Länge und die Kennung zu überprüfen.  Pakete
81
+mit zu geringer Länge und/oder anderer Kennung sind zu verwerfen.  Längere
82
+Pakete sind abzuschneiden und wie Pakete korrekter Länge zu behandeln.  Nicht
83
+definierte Werte in Bitfeldern sind zu ignorieren.
84
+
85
+Anhang (nicht normativ)
86
+=======================
87
+
88
+Master
89
+------
90
+
91
+Der Synchronisierungs-Master verwaltet die globale Playliste und spielt diese
92
+ab.  Dabei ist unter Abspielen nur das Aussenden der Synchronisations-Pakete
93
+zu verstehen.  Auf dem Bildschirm wir dem Benutzer eine Fenster ähnlich zu dem
94
+eines normalen PC-Video-Players angeboten, welches die Playliste mit den
95
+einzelnen Stücken beinhaltet und außerdem Knöpfe für Abspielen, Pause, Stopp,
96
+nächstes Stück, vorheriges Stück und eine Positionsleiste (Scrollbalken)
97
+anbietet.  Damit kann der Master wie ein Video-Player bedient werden.  Die
98
+verschiedenen Clients passen sich dann über das Synchronisations-Protokoll
99
+automatisch an den Master an.
100
+
101
+Master Web-Interface (bisher nur Idee, optional)
102
+--------------------
103
+
104
+Der Master bietet zusätzlich zum Fenster auf dem lokalen bildschirm ein
105
+Webinterface an, auf dem die gleichen Elemente wie im Fenster zu sehen sind.
106
+Damit kann der Master auch über mobile Geräte aus dem WLAN heraus gesteuert
107
+werden.
108
+
109
+Video-Abspieler für Pixelwände
110
+------------------------------
111
+
112
+Alle Pixelwände werden von einem zentralen Rechner angesteuert.  Die Filme
113
+für die einzelnen Wände werden zur Unterscheidung in verschiedenen
114
+Verzeichnissen abgelegt.  In jedem dieser Verzeichnisse liegen die Filme mit
115
+Namen gemäß der Playliste des Masters (plus eine geeignete Dateinamen-
116
+Erweiterung).  Außerdem besitzt der Rechner eine Kopie Playliste, so dass er
117
+bei Ausfall des Masters autonom die Stücke abspielen kann.
118
+
119
+Audio-Abspieler für Roboter
120
+---------------------------
121
+
122
+Auf jedem Roboter befindet sich ein Rechner, der die Audiodateien für den
123
+jeweiligen Roboter sowie eine Kopie der Playliste besitzt.  Im Normalbetrieb
124
+wird das abzuspielende Stück und die Position über das Synchronisations-
125
+Protokoll gesteuert.  Durch die lokale Kopie der Playliste ist aber bei
126
+Ausfall des Masters ein autonomes Abspielen möglich.
127
+
128
+Ein mögliche Implementierung könnte das MPlayer slave interface verwenden:
129
+mplayer -slave -quiet -input nodefault-bindings -noconfig all -idle
130
+Über "get_file_name" und "get_time_pos" ist das aktuelle Stück und die aktuelle
131
+Position auf 0.1s genau ermittelbar.  Im Falle einer signifikanten Abweichung
132
+kann die Postion mittels "seek <pos> 2" neu eingestellt werden.  Die
133
+abzuspielende Datei kann mit "loadfile <file>" geändert werden.
134
+
135
+Effekt-Abspieler für Roboter
136
+----------------------------
137
+
138
+Der Rechner auf jedem Roboter steuert zusätzlich Effekt-Beleuchtungen.  Diese
139
+können entweder durch Zusatz-Informationen in den Audio-Datein (z.B. Matroska)
140
+enthalten sein und von einem entsprechen MPlayer-Plugin ausgewertet werden.
141
+Alternativ können die Effekte in einer Textdatei (Zeilen mit Zeitstempel
142
+und Effekt) gespeichert werden und von einem separaten Player ausgelöst werden,
143
+der durch das Synchronisations-Protokoll passend gesteuert wird.
144
+
0 145