2
<node name="/Call_Stream_Interface_Media"
3
xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
4
<tp:copyright>Copyright © 2009-2010 Collabora Ltd.</tp:copyright>
5
<tp:copyright>Copyright © 2009-2010 Nokia Corporation</tp:copyright>
6
<tp:license xmlns="http://www.w3.org/1999/xhtml">
7
<p>This library is free software; you can redistribute it and/or
8
modify it under the terms of the GNU Lesser General Public
9
License as published by the Free Software Foundation; either
10
version 2.1 of the License, or (at your option) any later version.</p>
12
<p>This library is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
Lesser General Public License for more details.</p>
17
<p>You should have received a copy of the GNU Lesser General Public
18
License along with this library; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23
<interface name="org.freedesktop.Telepathy.Call.Stream.Interface.Media.DRAFT"
24
tp:causes-havoc="experimental">
25
<tp:added version="0.19.0">(draft 1)</tp:added>
26
<tp:requires interface="org.freedesktop.Telepathy.Call.Stream.DRAFT"/>
28
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
33
<p>If the <tp:dbus-ref
34
namespace="ofdT.Call.Stream.Endpoint.DRAFT">RemoteCredentialsSet</tp:dbus-ref>
35
signal is fired during a call once it has been called before
36
whilst setting up the call for initial use, and the
37
credentials have changed, then there has been an ICE
38
restart. In such a case, the CM SHOULD also empty the remote
39
candidate list in the <tp:dbus-ref
40
namespace="ofdT.Call.Stream">Endpoint.DRAFT</tp:dbus-ref>.</p>
42
<p>If the CM does an ICE restart, then the
43
<tp:member-ref>PleaseRestartICE</tp:member-ref> signal is
44
emitted and the streaming implementation should then call
45
<tp:member-ref>SetCredentials</tp:member-ref> again.</p>
47
<p>For more information on ICE restarts see
48
<a href="http://tools.ietf.org/html/rfc5245#section-9.1.1.1">RFC 5245
49
section 9.1.1.1</a></p>
52
<method name="SetCredentials" tp:name-for-bindings="Set_Credentials">
53
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
54
<p>Used to set the username fragment and password for streams that have
55
global credentials.</p>
57
<arg name="Username" type="s" direction="in">
59
The username to use when authenticating on the stream.
62
<arg name="Password" type="s" direction="in">
64
The password to use when authenticating on the stream.
69
<tp:mapping name="Candidate_Info">
70
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
71
<p>Extra information about the candidate. Allowed and mandatory keys
72
depend on the transport protocol used. The following keys are commenly
77
<dd>type of candidate (host, srflx, prflx, relay)</dd>
79
<dt>Foundation (s)</dt>
80
<dd>the foundation of this candiate</dd>
82
<dt>Protocol (u) </dt>
83
<dd>Underlying protocol of the candidate (udp, tcp) </dd>
85
<dt>Priority (u) </dt>
86
<dd>Priority of the candidate </dd>
89
<dd>Base IP of this candidate </dd>
91
<dt>Username (s) </dt>
92
<dd>Username of this candidate
93
(only if credentials are per candidate)</dd>
95
<dt>Password (s) </dt>
96
<dd>Password of this candidate
97
(only if credentials are per candidate)</dd>
99
<dt>RawUDPFallback (b) </dt>
100
<dd>Indicate whether this candidate may be used to provide a UDP
104
<tp:member name="Key" type="s">
105
<tp:docstring>One of the well-known keys documented here, or an
106
implementation-specific key.</tp:docstring>
108
<tp:member name="Value" type="v">
109
<tp:docstring>The value corresponding to that key.</tp:docstring>
113
<tp:enum type="u" name="Stream_Component">
114
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
115
Media streams can use more than one UDP socket: one for RTP (data)
116
and one for RTCP (control). Most of the time, they are adjacent
117
to each other, but some protocols (xmpp) signal each port separately.
119
<tp:enumvalue suffix="Unknown" value="0">
121
The stream transport type is unknown or not applicable
122
(should not appear over dbus).
125
<tp:enumvalue suffix="Data" value="1">
127
This is the high-traffic data socket, containing the audio/video
131
<tp:enumvalue suffix="Control" value="2">
133
This is the low-traffic control socket, usually containing feedback
134
about packet loss etc.
139
<tp:struct name="Candidate" array-name="Candidate_List">
140
<tp:docstring>A Stream Candidate.</tp:docstring>
141
<tp:member name="Component" type="u" tp:type="Stream_Component">
142
<tp:docstring>The component number.</tp:docstring>
144
<tp:member name="IP" type="s">
145
<tp:docstring>The IP address to use.</tp:docstring>
147
<tp:member name="Port" type="u">
148
<tp:docstring>The port number to use.</tp:docstring>
150
<tp:member name="Info" type="a{sv}" tp:type="Candidate_Info">
151
<tp:docstring>Additional information about the candidate.</tp:docstring>
155
<method name="AddCandidates" tp:name-for-bindings="Add_Candidates">
157
Add candidates to the
158
<tp:member-ref>LocalCandidates</tp:member-ref> property and
159
signal them to the remote contact(s).
161
<arg name="Candidates" direction="in"
162
type="a(usua{sv})" tp:type="Candidate[]">
164
The candidates to be added.
169
<method name="CandidatesPrepared"
170
tp:name-for-bindings="Candidates_Prepared">
172
This indicates to the CM that the initial batch of candidates
177
<tp:enum type="u" name="Stream_Transport_Type">
178
<tp:changed version="0.21.2">WLM_8_5 was removed</tp:changed>
179
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
180
A transport that can be used for streaming.
182
<tp:enumvalue suffix="Unknown" value="0">
184
The stream transport type is unknown or not applicable
185
(for streams that do not have a configurable transport).
188
<tp:enumvalue suffix="Raw_UDP" value="1">
190
Raw UDP, with or without STUN. All streaming clients are assumed to
191
support this transport, so there is no handler capability token for
192
it in the <tp:dbus-ref namespace="ofdT.Channel.Type"
193
>Call.DRAFT</tp:dbus-ref> interface.
194
[This corresponds to "none" or "stun" in the old Media.StreamHandler
198
<tp:enumvalue suffix="ICE" value="2">
200
Interactive Connectivity Establishment, as defined by RFC
201
5245. Note that this value covers ICE-UDP only.
202
[This corresponds to "ice-udp" in the old
203
Media.StreamHandler interface.]
206
<tp:enumvalue suffix="GTalk_P2P" value="3">
208
Google Talk peer-to-peer connectivity establishment, as implemented
210
[This corresponds to "gtalk-p2p" in the old Media.StreamHandler
214
<tp:enumvalue suffix="WLM_2009" value="4">
216
The transport used by Windows Live Messenger 2009 or later, which
217
resembles ICE draft 19.
218
[This corresponds to "wlm-2009" in the old Media.StreamHandler
222
<tp:enumvalue suffix="SHM" value="5">
223
<tp:added version="0.21.2"/>
225
Shared memory transport, as implemented by the GStreamer
226
shmsrc and shmsink plugins.
229
<tp:enumvalue suffix="Multicast" value="6">
230
<tp:added version="0.21.5"/>
237
<property name="Transport" tp:name-for-bindings="Transport"
238
type="u" tp:type="Stream_Transport_Type" access="read" tp:immutable="yes">
240
The transport for this stream.
244
<property name="LocalCandidates" tp:name-for-bindings="Local_Candidates"
245
type="a(usua{sv})" tp:type="Candidate[]" access="read">
247
[FIXME]. Change notification is via the
248
<tp:member-ref>LocalCandidatesAdded</tp:member-ref> signal.
252
<signal name="LocalCandidatesAdded"
253
tp:name-for-bindings="Local_Candidates_Added">
255
Emitted when local candidates are added to the
256
<tp:member-ref>LocalCandidates</tp:member-ref> property.
258
<arg name="Candidates" type="a(usua{sv})" tp:type="Candidate[]">
260
Candidates that have been added.
265
<tp:struct name="Stream_Credentials">
266
<tp:docstring>A username and password pair.</tp:docstring>
268
<tp:member name="Username" type="s">
269
<tp:docstring>The username.</tp:docstring>
272
<tp:member name="Password" type="s">
273
<tp:docstring>The password.</tp:docstring>
277
<property name="LocalCredentials" tp:name-for-bindings="Local_Credentials"
278
type="(ss)" tp:type="Stream_Credentials" access="read">
280
[FIXME]. Change notification is via the
281
<tp:member-ref>LocalCredentialsChanged</tp:member-ref> signal.
285
<signal name="LocalCredentialsChanged"
286
tp:name-for-bindings="Local_Credentials_Changed">
287
<tp:changed version="0.21.2">renamed from LocalCredentailsSet</tp:changed>
289
Emitted when the value of
290
<tp:member-ref>LocalCredentials</tp:member-ref> changes.
292
<arg name="Username" type="s" />
293
<arg name="Password" type="s" />
296
<signal name="RelayInfoChanged"
297
tp:name-for-bindings="Relay_Info_Changed">
299
Emitted when the value of
300
<tp:member-ref>RelayInfo</tp:member-ref> changes.
302
<arg name="Relay_Info" type="aa{sv}" tp:type="String_Variant_Map[]" />
305
<signal name="STUNServersChanged"
306
tp:name-for-bindings="STUN_Servers_Changed">
308
Emitted when the value of
309
<tp:member-ref>STUNServers</tp:member-ref> changes.
311
<arg name="Servers" type="a(sq)" tp:type="Socket_Address_IP[]" />
314
<property name="STUNServers" tp:name-for-bindings="STUN_Servers"
315
type="a(sq)" tp:type="Socket_Address_IP[]" access="read">
316
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
317
<p>The IP addresses of possible STUN servers to use for NAT
318
traversal, as dotted-quad IPv4 address literals or RFC2373
319
IPv6 address literals. Change notification is via the
320
<tp:member-ref>STUNServersChanged</tp:member-ref>
321
signal. The IP addresses MUST NOT be given as DNS hostnames.</p>
324
High-quality connection managers already need an asynchronous
325
DNS resolver, so they might as well resolve this name to an IP
326
to make life easier for streaming implementations.
331
<property name="RelayInfo" type="aa{sv}" access="read"
332
tp:type="String_Variant_Map[]" tp:name-for-bindings="Relay_Info">
333
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
334
<p>A list of mappings describing TURN or Google relay servers
335
available for the client to use in its candidate gathering, as
336
determined from the protocol. Map keys are:</p>
339
<dt><code>ip</code> - s</dt>
340
<dd>The IP address of the relay server as a dotted-quad IPv4
341
address literal or an RFC2373 IPv6 address literal. This MUST NOT
345
High-quality connection managers already need an asynchronous
346
DNS resolver, so they might as well resolve this name to an IP
347
and make life easier for streaming implementations.
351
<dt><code>type</code> - s</dt>
353
<p>Either <code>udp</code> for UDP (UDP MUST be assumed if this
354
key is omitted), <code>tcp</code> for TCP, or
355
<code>tls</code>.</p>
357
<p>The precise meaning of this key depends on the
358
<tp:member-ref>Transport</tp:member-ref> property: if
359
Transport is ICE, <code>tls</code> means
360
TLS over TCP as referenced by ICE draft 19, and if
361
Transport is GTalk_P2P, <code>tls</code> means
362
a fake SSL session over TCP as implemented by libjingle.</p>
365
<dt><code>port</code> - q</dt>
366
<dd>The UDP or TCP port of the relay server as an ASCII unsigned
369
<dt><code>username</code> - s</dt>
370
<dd>The username to use</dd>
372
<dt><code>password</code> - s</dt>
373
<dd>The password to use</dd>
375
<dt><code>component</code> - u</dt>
376
<dd>The component number to use this relay server for, as an
377
ASCII unsigned integer; if not included, this relay server
378
may be used for any or all components.
381
In ICE draft 6, as used by Google Talk, credentials are only
382
valid once, so each component needs relaying separately.
388
<p>An equivalent of the gtalk-p2p-relay-token property on
389
MediaSignalling channels is not included here. The connection
390
manager should be responsible for making the necessary HTTP
391
requests to turn the token into a username and password.</p>
394
<p>The type of relay server that this represents depends on
395
the value of the <tp:member-ref>Transport</tp:member-ref>
396
property. If Transport is ICE, this is a TURN server;
397
if Transport is GTalk_P2P, this is a Google relay server;
398
otherwise, the meaning of RelayInfo is undefined.</p>
400
<p>If relaying is not possible for this stream, the list is
403
<p>Change notification is given via the
404
<tp:member-ref>RelayInfoChanged</tp:member-ref> signal.</p>
408
<signal name="ServerInfoRetrieved"
409
tp:name-for-bindings="Server_Info_Retrieved">
410
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
411
<p>Signals that the initial information about STUN and Relay servers
412
has been retrieved, i.e. the
413
<tp:member-ref>HasServerInfo</tp:member-ref> property is
418
<property name="HasServerInfo" type="b"
419
tp:name-for-bindings="Has_Server_Info" access="read">
420
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
421
<p>True if all the initial information about STUN servers and Relay
422
servers has been retrieved. Change notification is via the
423
<tp:member-ref>ServerInfoRetrieved</tp:member-ref> signal.</p>
426
Streaming implementations that can't cope with STUN and
427
relay servers being added later SHOULD wait for this
428
property to become true before proceeding.
433
<signal name="EndpointsChanged"
434
tp:name-for-bindings="Endpoints_Changed">
436
Emitted when the <tp:member-ref>Endpoints</tp:member-ref> property
439
<arg name="Endpoints_Added" type="ao">
441
Endpoints that were added.
444
<arg name="Endpoints_Removed" type="ao">
446
Endpoints that no longer exist.
451
<property name="Endpoints" tp:name-for-bindings="Endpoints"
452
type="ao" access="read">
454
<p>The list of <tp:dbus-ref namespace="ofdT.Call.Stream"
455
>Endpoint.DRAFT</tp:dbus-ref> objects that exist for this
458
<p>Change notification is via the
459
<tp:member-ref>EndpointsChanged</tp:member-ref> signal.</p>
463
<signal name="PleaseRestartICE"
464
tp:name-for-bindings="Please_Restart_ICE">
466
Emitted when the CM does an ICE restart to notify the
467
streaming implementation that it should call
468
<tp:member-ref>SetCredentials</tp:member-ref> again.
473
<!-- vim:set sw=2 sts=2 et ft=xml: -->