summaryrefslogtreecommitdiff
path: root/spec/spec/Call_Content_Interface_Media.xml
diff options
context:
space:
mode:
Diffstat (limited to 'spec/spec/Call_Content_Interface_Media.xml')
-rw-r--r--spec/spec/Call_Content_Interface_Media.xml581
1 files changed, 581 insertions, 0 deletions
diff --git a/spec/spec/Call_Content_Interface_Media.xml b/spec/spec/Call_Content_Interface_Media.xml
new file mode 100644
index 000000000..ca5ed36bf
--- /dev/null
+++ b/spec/spec/Call_Content_Interface_Media.xml
@@ -0,0 +1,581 @@
+<?xml version="1.0" ?>
+<node name="/Call_Content_Interface_Media"
+ xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+ <tp:copyright>Copyright © 2009-2010 Collabora Ltd.</tp:copyright>
+ <tp:copyright>Copyright © 2009-2010 Nokia Corporation</tp:copyright>
+ <tp:license xmlns="http://www.w3.org/1999/xhtml">
+ <p>This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.</p>
+
+ <p>This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.</p>
+
+ <p>You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.</p>
+ </tp:license>
+
+ <interface
+ name="org.freedesktop.Telepathy.Call1.Content.Interface.Media"
+ tp:causes-havoc="experimental">
+ <tp:added version="0.23.4">(draft 2)</tp:added>
+ <tp:requires interface="org.freedesktop.Telepathy.Call1.Content"/>
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Interface to use by a software implementation of media
+ streaming. The reason behind splitting the members of this
+ interface out from the main <tp:dbus-ref
+ namespace="ofdT.Call1">Content</tp:dbus-ref> interface is
+ that the software is not necessarily what controls the
+ media. An example of this is in GSM phones, where the CM just
+ tells the phone to dial a number and it does the audio routing
+ in a device specific hardware way and the CM does not need
+ to concern itself with codecs.</p>
+
+ <h4>Codec Negotiation</h4>
+
+ <p>When a new <tp:dbus-ref
+ namespace="ofdT.Channel.Type">Call1</tp:dbus-ref> channel
+ appears (whether it was requested or not) a <tp:dbus-ref
+ namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref>
+ object will either be waiting in the
+ <tp:member-ref>MediaDescriptionOffer</tp:member-ref> property, or will
+ appear at some point via the
+ <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> signal.</p>
+
+ <p>If nothing is known about the remote side's Media capabilities
+ (e.g. outgoing SIP/XMPP call), this <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref> will pop up with {<tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >HasRemoteInformation</tp:dbus-ref> = false, <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >FurtherNegotiationRequired</tp:dbus-ref> = true}, and the local
+ user's streaming implementation SHOULD call
+ <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >Accept</tp:dbus-ref>,
+ with a description of all supported codecs and other features.
+ The CM will then send this information to the remote side (and
+ <tp:member-ref>LocalMediaDescriptionChanged</tp:member-ref> will fire
+ with details of the description passed into <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >Accept</tp:dbus-ref> for debugging purposes).
+ </p>
+ <p>When the remote codecs and other content information are available
+ (e.g. Remote user replies to initial offer, or sends a new offer of
+ their own, a new <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref> will appear, with {<tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >HasRemoteInformation</tp:dbus-ref> = true, <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >FurtherNegotiationRequired</tp:dbus-ref> = false},
+ and the <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >Codecs</tp:dbus-ref>
+ property on the description offer set to the codecs which are
+ supported by the remote contact. The local user's streaming
+ implementation SHOULD then call Accept, with a description
+ that is compatible with the one one in the offer. After the codec
+ set is accepted, both
+ <tp:member-ref>LocalMediaDescriptionChanged</tp:member-ref> and
+ <tp:member-ref>RemoteMediaDescriptionsChanged</tp:member-ref>
+ will fire to signal their respective changes, to aid with debugging.
+ Note that if <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >Accept</tp:dbus-ref> is called, with <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >FurtherNegotiationRequired</tp:dbus-ref> set to false,
+ the CM should be able to rely on the fact that the
+ description passed into Accept is compatible with the one in the
+ offer, and the description passed into Accept will not be signalled to
+ the remote side.
+ </p>
+
+ <h4>Changing codecs mid-call</h4>
+
+ <p>To update the codecs in the local (and optionally remote) media
+ descriptions mid-call, the
+ <tp:member-ref>UpdateLocalMediaDescription</tp:member-ref> method
+ should be called with details of the new codec list. If this is
+ accepted, then
+ <tp:member-ref>LocalMediaDescriptionChanged</tp:member-ref>
+ will be emitted with the new codec set.
+ </p>
+ <p> If parameters requiring negotiation are changed, then the
+ <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >FurtherNegotiationRequired</tp:dbus-ref> property should be set to
+ TRUE, and the new media description should
+ only be used once they come in a new MediaDescriptionOffer
+ </p>
+
+ <p>If the other side decides to update his or her codec list
+ during a call, a new <tp:dbus-ref
+ namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref>
+ object will appear through
+ <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> which should be
+ acted on as documented above.</p>
+
+ <h4>Protocols without negotiation</h4>
+
+ <p>For protocols where the codecs are not negotiable, the initial content's <tp:dbus-ref
+ namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref>
+ object will appear with <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >HasRemoteInformation</tp:dbus-ref>,
+ set to true and the known supported codec values in <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >Codecs</tp:dbus-ref>.
+ </p>
+ </tp:docstring>
+
+ <tp:struct name="Codec" array-name="Codec_List">
+ <tp:docstring>
+ A description of a codec.
+ </tp:docstring>
+ <tp:member name="Identifier" type="u">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ Numeric identifier for the codec. This will be used as the PT in the
+ SDP or content description.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Name" type="s">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ The name of the codec.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Clockrate" type="u">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ The clockrate of the codec.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Channels" type="u">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ Number of channels of the codec if applicable, otherwise 0.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Updated" type="b">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ This should be set to true in calls to <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >Accept</tp:dbus-ref> and
+ <tp:member-ref>UpdateLocalMediaDescription</tp:member-ref> if this
+ codec has changed in a way that needs to be signalled over the
+ network. If it is set to false, the CM is allowed ignore any
+ differences between the current parameters and the previous ones
+ <tp:rationale>
+ This mechanism may be used to save bandwidth and avoid the CM
+ having to calculate diffs against previous versions of this
+ struct, which can lead to false-positives (e.g. redundant ptime
+ updates).
+ </tp:rationale>
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Parameters" type="a{ss}" tp:type="String_String_Map">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ Extra parameters for this codec.
+ </tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <tp:mapping name="Contact_Codec_Map">
+ <tp:docstring>
+ A map from contact to the list of codecs he or she supports.
+ </tp:docstring>
+ <tp:member name="Handle" type="u" tp:type="Contact_Handle">
+ <tp:docstring>
+ A contact handle.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Codecs" type="a(usuuba{ss})" tp:type="Codec[]">
+ <tp:docstring>
+ The codecs that the contact supports.
+ </tp:docstring>
+ </tp:member>
+ </tp:mapping>
+
+ <tp:mapping name="Contact_Media_Description_Properties_Map">
+ <tp:member name="Remote_Contact" type="u" tp:type="Handle">
+ <tp:docstring>
+ The remote contact this description refers to or 0. This matches the
+ <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >RemoteContact</tp:dbus-ref> property on
+ <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref>
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Media_Description_Properties" type="a{sv}"
+ tp:type="Media_Description_Properties">
+ <tp:docstring>
+ The properties of the description
+ </tp:docstring>
+ </tp:member>
+ </tp:mapping>
+
+ <tp:struct name="Media_Description_Offer">
+ <tp:docstring>
+ The remote description offer and its information
+ </tp:docstring>
+ <tp:member name="Media_Description" type="o">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ The object path to the <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref>
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Remote_Contact" type="u" tp:type="Contact_Handle">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ The contact handle that this description applies to.
+ </tp:docstring>
+ </tp:member>
+ <tp:member name="Properties" type="a{sv}"
+ tp:type="Media_Description_Properties">
+ <tp:docstring>
+ The immutable properties of all interfaces of the codec description.
+
+ <tp:rationale>
+ Having all the codec description properties here saves a D-Bus
+ round-trip - it shouldn't be necessary to get the properties from the
+ MediaDescription object, in practice.
+ </tp:rationale>
+ </tp:docstring>
+ </tp:member>
+ </tp:struct>
+
+ <method name="UpdateLocalMediaDescription"
+ tp:name-for-bindings="Update_Local_Media_Description">
+ <tp:docstring>
+ Update the local codec mapping and other interfaces of the
+ MediaDescription. This method should only be
+ used during an existing call to update the local media description.
+ This may trigger a re-negotiation which may result in new
+ new MediaDescriptionOffers if the "FurtherNegotiationRequired"
+ property is TRUE.
+ Otherwise, only parameters which strictly describe the media being sent
+ can be changed.
+ </tp:docstring>
+ <arg name="Remote_Contact" type="u" tp:type="Handle" direction="in">
+ <tp:docstring>
+ The remote contact that this description should be negotiated with
+ (or 0 to mean "negotiate this with everyone"). Note that encoding
+ the same video multiple times is often needlessly expensive, so
+ differences in MediaDescriptions negotiated with different parties
+ in the call should be limited to payloading parameters if possible.
+ </tp:docstring>
+ </arg>
+ <arg name="MediaDescription" direction="in" type="a{sv}"
+ tp:type="Media_Description_Properties">
+ <tp:docstring>
+ The updated media description that the local side wants to use.
+ </tp:docstring>
+ </arg>
+ <tp:possible-errors>
+ <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented">
+ <tp:docstring>
+ The protocol does not support changing the codecs mid-call.
+ </tp:docstring>
+ </tp:error>
+ <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
+ <tp:docstring>
+ The description given is invalid in some way.
+ </tp:docstring>
+ </tp:error>
+ </tp:possible-errors>
+ </method>
+
+ <property name="RemoteMediaDescriptions"
+ tp:name-for-bindings="Remote_Media_Descriptions"
+ type="a{ua{sv}}"
+ tp:type="Contact_Media_Description_Properties_Map" access="read">
+ <tp:docstring>
+ <p>A map from contact handles to descriptions supported by that
+ contact.</p>
+
+ <p>Keys of this map will appear in at most one <tp:dbus-ref
+ namespace="ofdT.Call1.Stream">RemoteMembers</tp:dbus-ref>.
+ See <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >RemoteContact</tp:dbus-ref> for more details on how to map between
+ MediaDescriptions and Streams.</p>
+ </tp:docstring>
+ </property>
+
+ <property name="LocalMediaDescriptions"
+ tp:name-for-bindings="Local_Media_Descriptions"
+ type="a{ua{sv}}"
+ tp:type="Contact_Media_Description_Properties_Map" access="read">
+ <tp:docstring>
+ <p>A map from contact handles to the descriptions the local side
+ responsed with.</p> </tp:docstring>
+ </property>
+
+ <signal name="NewMediaDescriptionOffer"
+ tp:name-for-bindings="New_Media_Description_Offer">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Emitted when a new <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref> appears. The streaming
+ >implementation MUST respond by calling the
+ <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >Accept</tp:dbus-ref> or <tp:dbus-ref
+ namespace="ofdT.Call1.Content.MediaDescription"
+ >Reject</tp:dbus-ref> method on the description object appeared.</p>
+
+ <p>Emission of this signal indicates that the
+ <tp:member-ref>MediaDescriptionOffer</tp:member-ref> property has
+ changed to
+ <code>(Description, Contact, MediaDescriptionProperties)</code>.</p>
+
+ <p>When the MediaDescriptionOffer has been dealt with then
+ <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media"
+ >MediaDescriptionOfferDone</tp:dbus-ref> must be emitted
+ before <tp:dbus-ref
+ namespace="ofdT.Call1.Content.Interface.Media"
+ >NewMediaDescriptionOffer</tp:dbus-ref> is emitted again.
+ </p>
+
+ </tp:docstring>
+ <arg name="Media_Description" type="o">
+ <tp:docstring>
+ The object path of the new media description. This replaces any
+ previous media description.
+ </tp:docstring>
+ </arg>
+ <arg name="Contact" type="u">
+ <tp:docstring>
+ The remote contact the media description belongs to.
+ </tp:docstring>
+ </arg>
+ <arg name="Properties" type="a{sv}"
+ tp:type="Media_Description_Properties">
+ <tp:docstring>
+ The immutable properties of the remote media description.
+
+ <tp:rationale>
+ Having all the MediaDescription properties here saves a D-Bus
+ round-trip - it shouldn't be necessary to get the properties from the
+ MediaDescription object, in practice.
+ </tp:rationale>
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <signal name="MediaDescriptionOfferDone"
+ tp:name-for-bindings="Media_Description_Offer_Done">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Emitted when a <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref> has been handled. </p>
+ <p>Emission of this signal indicates that the
+ <tp:member-ref>MediaDescriptionOffer</tp:member-ref> property has
+ changed to
+ <code>("/", 0, {})</code>.</p>
+ </tp:docstring>
+ </signal>
+
+
+ <signal name="LocalMediaDescriptionChanged"
+ tp:name-for-bindings="Local_Media_Description_Changed">
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Change notification for
+ <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media"
+ >LocalMediaDescriptions</tp:dbus-ref>
+ </p>
+ </tp:docstring>
+
+ <arg name="Remote_Contact" type="u" tp:type="Handle">
+ <tp:docstring>
+ The remote contact that this description was negotiated with
+ (or 0 to mean "negotiated with everyone").
+ </tp:docstring>
+ </arg>
+
+ <arg name="Updated_Media_Description" type="a{sv}"
+ tp:type="Media_Description_Properties">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>The local content description that was updated</p>
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <signal name="RemoteMediaDescriptionsChanged"
+ tp:name-for-bindings="Remote_Media_Descriptions_Changed">
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Change notification for
+ <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media"
+ >RemoteMediaDescriptions</tp:dbus-ref>
+ </p>
+ </tp:docstring>
+
+ <arg name="Updated_Media_Descriptions" type="a{ua{sv}}"
+ tp:type="Contact_Media_Description_Properties_Map">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>The remote content descriptions that were updated</p>
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <signal name="MediaDescriptionsRemoved"
+ tp:name-for-bindings="Media_Descriptions_Removed">
+
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Removal notification for
+ <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media"
+ >RemoteMediaDescriptions</tp:dbus-ref>
+ and
+ <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media"
+ >LocalMediaDescriptions</tp:dbus-ref>
+ </p>
+ </tp:docstring>
+
+ <arg name="Removed_Media_Descriptions" type="au"
+ tp:type="Contact_Handle[]">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>The local and remote content descriptions that are no longer part
+ of this content</p>
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <property name="MediaDescriptionOffer"
+ tp:name-for-bindings="Media_Description_Offer"
+ type="(oua{sv})" tp:type="Media_Description_Offer" access="read">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>The object path to the current
+ <tp:dbus-ref namespace="ofdT.Call1.Content"
+ >MediaDescription</tp:dbus-ref> object, its
+ <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription"
+ >RemoteContact</tp:dbus-ref> and
+ a mapping of the MediaDescriptions properties.
+ If the object path is "/" then there isn't an outstanding
+ content description, and the mapping MUST be empty.</p>
+
+ <tp:rationale>
+ Having all <tp:dbus-ref
+ namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref>
+ properties here saves a D-Bus round-trip - it shouldn't be
+ necessary to get these properties from the Content MediaDescription
+ object, in practice.
+ </tp:rationale>
+
+ <p>Change notification is via the
+ <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> and
+ <tp:member-ref>MediaDescriptionOfferDone</tp:member-ref> signals.
+ </p>
+ </tp:docstring>
+ </property>
+
+ <tp:enum name="Call_Content_Packetization_Type" type="u">
+ <tp:added version="0.21.2"/>
+ <tp:docstring>
+ A packetization method that can be used for a content.
+ </tp:docstring>
+
+ <tp:enumvalue suffix="RTP" value="0">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ Real-time Transport Protocol, as documented by RFC 3550.
+ </tp:docstring>
+ </tp:enumvalue>
+
+ <tp:enumvalue suffix="Raw" value="1">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ Raw media.
+ </tp:docstring>
+ </tp:enumvalue>
+
+ <tp:enumvalue suffix="MSN_Webcam" value="2">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ MSN webcam. This is the video-only one-way type which was
+ used in earlier versions of WLM. Although no longer used,
+ modern WLM clients still support the MSN webcam protocol.
+ </tp:docstring>
+ </tp:enumvalue>
+ </tp:enum>
+
+ <property name="Packetization" tp:name-for-bindings="Packetization"
+ type="u" tp:type="Call_Content_Packetization_Type" access="read"
+ tp:immutable="yes">
+ <tp:added version="0.21.2"/>
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>The packetization method in use for this content.</p>
+ </tp:docstring>
+ </property>
+
+ <signal name="DTMFChangeRequested"
+ tp:name-for-bindings="DTMF_Change_Requested">
+ <tp:docstring>
+ Used by the CM to relay instructions from <tp:dbus-ref
+ namespace="ofdT">Channel.Interface.DTMF</tp:dbus-ref> to the streaming
+ implementation. If any contact in this call supports the
+ telephone-event codec in their MediaDescription, this event should be
+ sent as outlined in RFC 4733. Otherwise, it should be sent as an
+ audible tone.
+ </tp:docstring>
+ <arg name="Event" type="y" tp:type="DTMF_Event">
+ <tp:docstring>
+ The event to send (or stop sending).
+ </tp:docstring>
+ </arg>
+ <arg name="State" type="u" tp:type="Sending_State">
+ <tp:docstring>
+ Either <tp:value-ref type="Sending_State">Pending_Send</tp:value-ref> or
+ <tp:value-ref type="Sending_State">Pending_Stop_Sending</tp:value-ref>.
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <method name="AcknowledgeDTMFChange"
+ tp:name-for-bindings="Acknowledge_DTMF_Change">
+ <tp:docstring>
+ Called by the streaming implementation in response to
+ <tp:member-ref>DTMFChangeRequested</tp:member-ref> to confirm that it
+ has started or stopped sending the event in question.
+ </tp:docstring>
+ <arg name="Event" type="y" tp:type="DTMF_Event" direction="in">
+ <tp:docstring>
+ The event referred to in the corresponding
+ <tp:member-ref>DTMFChangeRequested</tp:member-ref> signal.
+ </tp:docstring>
+ </arg>
+ <arg name="State" type="u" tp:type="Sending_State" direction="in">
+ <tp:docstring>
+ Either <tp:value-ref type="Sending_State">Sending</tp:value-ref> or
+ <tp:value-ref type="Sending_State">None</tp:value-ref>.
+ </tp:docstring>
+ </arg>
+ </method>
+
+ <property name="CurrentDTMFEvent"
+ tp:name-for-bindings="Current_DTMF_Event" type="y" tp:type="DTMF_Event"
+ access="read">
+ <tp:docstring>
+ The currently requested DTMF event (for state-recoverability of
+ <tp:member-ref>DTMFChangeRequested</tp:member-ref>). Should be ignored
+ if <tp:member-ref>CurrentDTMFState</tp:member-ref> is None.
+ </tp:docstring>
+ </property>
+
+ <property name="CurrentDTMFState"
+ tp:name-for-bindings="Current_DTMF_State" type="u" tp:type="Sending_State"
+ access="read">
+ <tp:docstring>
+ The current DTMF state (for state-recoverability of
+ <tp:member-ref>DTMFChangeRequested</tp:member-ref>).
+ </tp:docstring>
+ </property>
+
+ <method name="Fail" tp:name-for-bindings="Fail">
+ <tp:docstring>
+ Signal an unrecoverable error for this content, and remove it.
+ </tp:docstring>
+ <arg direction="in" name="Reason" type="(uuss)"
+ tp:type="Call_State_Reason">
+ <tp:docstring>
+ A reason struct describing the error.
+ </tp:docstring>
+ </arg>
+ </method>
+ </interface>
+</node>
+<!-- vim:set sw=2 sts=2 et ft=xml: -->