diff options
author | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2011-01-10 18:32:56 +0000 |
---|---|---|
committer | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2011-01-10 18:33:16 +0000 |
commit | d2f03a9a836b3ee1a8ae8fd0d76f0b50f9e89f31 (patch) | |
tree | 1898cdcf890e579cee1823130dd8156cc185978a | |
parent | 2ec2f2edc2cdefde9a40ea119702aedfac97f3d0 (diff) |
Update telepathy-spec snapshotupdate-spec
-rw-r--r-- | spec/Call_Content.xml | 2 | ||||
-rw-r--r-- | spec/Call_Content_Codec_Offer.xml | 87 | ||||
-rw-r--r-- | spec/Call_Content_Interface_Media.xml | 381 | ||||
-rw-r--r-- | spec/Call_Content_Media_Description.xml | 148 | ||||
-rw-r--r-- | spec/Call_Stream_Interface_Media.xml | 9 | ||||
-rw-r--r-- | spec/Channel_Type_Call.xml | 22 | ||||
-rw-r--r-- | spec/Makefile.am | 2 |
7 files changed, 407 insertions, 244 deletions
diff --git a/spec/Call_Content.xml b/spec/Call_Content.xml index 17ed710..c947fbd 100644 --- a/spec/Call_Content.xml +++ b/spec/Call_Content.xml @@ -130,7 +130,7 @@ <tp:added version="0.19.11"/> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Extra interfaces provided by this content, such as <tp:dbus-ref - namespace="ofdT.Call">Content.Interface.Media.DRAFT</tp:dbus-ref> or + namespace="ofdT.Call">Content.Interface.Media.DRAFT2</tp:dbus-ref> or <tp:dbus-ref namespace="ofdT.Call">Content.Interface.Mute.DRAFT</tp:dbus-ref>. This SHOULD NOT include the Content interface itself, and cannot change once the content has been created.</p> diff --git a/spec/Call_Content_Codec_Offer.xml b/spec/Call_Content_Codec_Offer.xml deleted file mode 100644 index f88143f..0000000 --- a/spec/Call_Content_Codec_Offer.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" ?> -<node name="/Call_Content_Codec_Offer" - 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.Call.Content.CodecOffer.DRAFT" - tp:causes-havoc="experimental"> - <tp:added version="0.19.0">(draft 1)</tp:added> - - <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - This object represents an offer of a Codec payload mapping. - </tp:docstring> - - <method name="Accept" tp:name-for-bindings="Accept"> - <arg name="Codecs" direction="in" - type="a(usuua{ss})" tp:type="Codec[]"> - <tp:docstring> - The local codec mapping to send to the remote contacts and - to use in the <tp:dbus-ref - namespace="ofdT.Call">Content.DRAFT</tp:dbus-ref>. - </tp:docstring> - </arg> - <tp:docstring> - Accept the updated Codec mapping and update the local mapping. - </tp:docstring> - <tp:possible-errors> - <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument"> - <tp:docstring> - The codecs given as the argument are invalid in some way. - </tp:docstring> - </tp:error> - </tp:possible-errors> - </method> - - <method name="Reject" tp:name-for-bindings="Reject"> - <tp:docstring> - Reject the proposed update to the codecs - FIXME add error codes and strings here - </tp:docstring> - </method> - - <property name="Interfaces" tp:name-for-bindings="Interfaces" - type="as" tp:type="DBus_Interface[]" access="read" tp:immutable="yes"> - <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>Extra interfaces provided by this codec offer. This SHOULD - NOT include the CodecOffer interface itself, and cannot change - once the content has been created.</p> - </tp:docstring> - </property> - - <property name="RemoteContactCodecs" - tp:name-for-bindings="Remote_Contact_Codecs" - type="a(usuua{ss})" tp:type="Codec[]" access="read" - tp:immutable="yes"> - <tp:docstring> - A list of codecs the remote contact supports. - </tp:docstring> - </property> - - <property name="RemoteContact" tp:name-for-bindings="Remote_Contact" - type="u" tp:type="Contact_Handle" access="read" tp:immutable="yes"> - <tp:docstring> - The contact handle that this codec offer applies to. - </tp:docstring> - </property> - - - </interface> -</node> -<!-- vim:set sw=2 sts=2 et ft=xml: --> diff --git a/spec/Call_Content_Interface_Media.xml b/spec/Call_Content_Interface_Media.xml index 274d8b2..abf9099 100644 --- a/spec/Call_Content_Interface_Media.xml +++ b/spec/Call_Content_Interface_Media.xml @@ -20,9 +20,10 @@ 02110-1301, USA.</p> </tp:license> - <interface name="org.freedesktop.Telepathy.Call.Content.Interface.Media.DRAFT" + <interface + name="org.freedesktop.Telepathy.Call.Content.Interface.Media.DRAFT2" tp:causes-havoc="experimental"> - <tp:added version="0.19.0">(draft 1)</tp:added> + <tp:added version="UNRELEASED">(draft 2)</tp:added> <tp:requires interface="org.freedesktop.Telepathy.Call.Content.DRAFT"/> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> @@ -41,78 +42,95 @@ <p>When a new <tp:dbus-ref namespace="ofdT.Channel.Type">Call.DRAFT</tp:dbus-ref> channel appears, whether it was requested or not, a <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT</tp:dbus-ref> - will either be waiting in the - <tp:member-ref>CodecOffer</tp:member-ref> property, or will + namespace="ofdT.Call.Content">MediaDescription.DRAFT</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>NewCodecOffer</tp:member-ref> signal.</p> + <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> signal.</p> - <p>The <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref> - property on the codec offer lists the codecs which are + <p> If the remote codecs and other content information are available + then the <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref> property will be true + and the <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >RemoteCodecs</tp:dbus-ref> + property on the description offer lists the codecs which are supported by the remote contact, and so will determine the codecs that should be proposed by the local user's streaming - implementation. An empty list means all codecs can be proposed.</p> + implementation. </p> - <p>For incoming calls on protocols where codecs are proposed when + <p>For incoming calls on protocols where the content is described when starting the call (for example, <a href="http://xmpp.org/extensions/xep-0166.html">Jingle</a>), the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref> + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >RemoteCodecs</tp:dbus-ref> will contain information on the codecs that have already been - proposed by the remote contact, otherwise the codec map will - be the empty list.</p> + proposed by the remote contact, otherwise + the <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref> property will be false </p> - <p>The streaming implementation should look at the remote codec - map and the codecs known by the local user and call + <p>The streaming implementation should look at the remote description + and the codecs and other features known by the local user and call <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT.Accept</tp:dbus-ref> - on the intersection of these two codec lists.</p> - - <p>This means that in practice, outgoing calls will have a codec - offer pop up with no information in the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref>, - so the local user will call <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">Accept</tp:dbus-ref> - with the list of all codecs supported. If this codec offer is - accepted, then <tp:member-ref>CodecsChanged</tp:member-ref> - will fire with the details of the codecs passed into - <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">Accept</tp:dbus-ref>. If - the call is incoming, then the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref> + namespace="ofdT.Call.Content" + >MediaDescription.DRAFT.Accept</tp:dbus-ref> + with the locally supported description.</p> + + <p>This means that in practice, outgoing calls will have a content + description pop up with <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref>, + property false so the local user will call <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >Accept</tp:dbus-ref> + with a description of all supported codecs and other features. If this + description is accepted, then + <tp:member-ref>LocalMediaDescriptionsChanged</tp:member-ref> will fire + with the details of description passed into <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >Accept</tp:dbus-ref>. + If the call is incoming, then the <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >RemoteCodecs</tp:dbus-ref> will contain details of the remote contact's codecs and the local user will call <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">Accept</tp:dbus-ref> + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >Accept</tp:dbus-ref> with the codecs that both sides understand. After the codec - set is accepted, <tp:member-ref>CodecsChanged</tp:member-ref> - will fire to signal this change.</p> + set is accepted, both + <tp:member-ref>LocalMediaDescriptionsChanged</tp:member-ref> and + <tp:member-ref>RemoteMediaDescriptionsChanged</tp:member-ref> + will fire to signal their respective changes. </p> - <h4>Protocols without codec negotiation</h4> + <h4>Protocols without negotiation</h4> <p>For protocols where the codecs are not negotiable, instead of popping up the initial content's <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT</tp:dbus-ref> - object with an empty <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref>, - the CM should set the supported codec values to known codec - values in the said object's codec map.</p> + namespace="ofdT.Call.Content">MediaDescription.DRAFT</tp:dbus-ref> + object with <tp:dbus-ref + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref>, + set to false and no codecs/features being defined, the CM should set the + supported codec values to known codec values in said object's codec + map.</p> <h4>Changing codecs mid-call</h4> - <p>To update the codec list used mid-call, the + <p>To update the local codecs in all local descriptions mid-call, the <tp:member-ref>UpdateCodecs</tp:member-ref> method should be called with details of the new codec list. If this is - accepted, then <tp:member-ref>CodecsChanged</tp:member-ref> - will be emitted with the new codec set.</p> + accepted, then + <tp:member-ref>LocalMediaDescriptionsChanged</tp:member-ref> + will be emitted with the new codec set. </p> <p>If the other side decides to update his or her codec list during a call, a new <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT</tp:dbus-ref> + namespace="ofdT.Call.Content">MediaDescription.DRAFT</tp:dbus-ref> object will appear through - <tp:member-ref>NewCodecOffer</tp:member-ref> which should be + <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> which should be acted on as documented above.</p> - </tp:docstring> <tp:struct name="Codec" array-name="Codec_List"> @@ -163,167 +181,240 @@ </tp:member> </tp:mapping> - <tp:struct name="Codec_Offering"> + <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.Call.Content.MediaDescription.DRAFT" + >RemoteContact</tp:dbus-ref> property on + <tp:dbus-ref namespace="ofdT.Call.Content" + >MediaDescription.DRAFT</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> - A codec offer and its corresponding remote contact codec map. + The remote description offer and its information </tp:docstring> - <tp:member name="Codec_Offer" type="o"> + <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.Call.Content" - >CodecOffer.DRAFT</tp:dbus-ref> + >MediaDescription.DRAFT</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 codec offer applies to. + The contact handle that this description applies to. </tp:docstring> </tp:member> - <tp:member name="Remote_Contact_Codecs" type="a(usuua{ss})" - tp:type="Codec[]"> - <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - The <tp:dbus-ref namespace="ofdT.Call.Content" - >CodecOffer.DRAFT.RemoteContactCodecs</tp:dbus-ref> property - of the codec offer. + <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> - <signal name="CodecsChanged" tp:name-for-bindings="Codecs_Changed"> - <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>Emitted when the codecs in use change.</p> - - <p>As well as acting as change notification for the - <tp:member-ref>ContactCodecMap</tp:member-ref>, emission of this - signal implies that the <tp:member-ref>CodecOffer</tp:member-ref> - property has changed to <code>('/', {})</code>.</p> - </tp:docstring> - <arg name="Updated_Codecs" type="a{ua(usuua{ss})}" - tp:type="Contact_Codec_Map"> - <tp:docstring> - A map from contact to his or her codecs. Each pair in this - map is added to the - <tp:member-ref>ContactCodecMap</tp:member-ref> property, - replacing any previous pair with that key. - </tp:docstring> - </arg> - <arg name="Removed_Contacts" type="au" tp:type="Contact_Handle[]"> - <tp:docstring> - A list of keys which were removed from the - <tp:member-ref>ContactCodecMap</tp:member-ref>, probably because - those contacts left the call. - </tp:docstring> - </arg> - </signal> - <method name="UpdateCodecs" tp:name-for-bindings="Update_Codecs"> <tp:docstring> - Update the local codec mapping. This method should only be - used during an existing call to update the codec mapping. + Update the codec mapping of the local MediaDescriptions. This + method should only be used during an existing call to update the local + media descriptions. Only parameters which strictly describe the media + being sent can be changed. </tp:docstring> <arg name="Codecs" direction="in" type="a(usuua{ss})" tp:type="Codec[]"> <tp:docstring> - The codecs now supported by the local user. + The updated codecs map as will be used by the local end. </tp:docstring> </arg> <tp:possible-errors> - <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"> + <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> - Raised when a <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT</tp:dbus-ref> - object exists and is referred to in the - <tp:member-ref>CodecOffer</tp:member-ref> property which - should be used instead of calling this method, or before - the content's initial <tp:dbus-ref - namespace="ofdT.Call.Content">CodecOffer.DRAFT</tp:dbus-ref> - object has appeared. + The protocol does not support changing the codecs mid-call. </tp:docstring> </tp:error> </tp:possible-errors> </method> - <property name="ContactCodecMap" tp:name-for-bindings="Contact_Codec_Map" - type="a{ua(usuua{ss})}" tp:type="Contact_Codec_Map" access="read"> + <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 (including the local user's own handle) - to the codecs supported by that contact.</p> - - <p>Change notification is via the - <tp:member-ref>CodecsChanged</tp:member-ref> signal.</p> + <p>A map from contact handles to descriptions supported by that + contact.</p> </tp:docstring> </property> - <signal name="NewCodecOffer" tp:name-for-bindings="New_Codec_Offer"> + <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.Call.Content" - >CodecOffer.DRAFT</tp:dbus-ref> appears. The streaming - implementation MUST respond by calling the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT" + >MediaDescription.DRAFT</tp:dbus-ref> appears. The streaming + >implementation MUST respond by calling the + <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" >Accept</tp:dbus-ref> or <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT" - >Reject</tp:dbus-ref> method on the codec offer object.</p> + namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >Reject</tp:dbus-ref> method on the description object appeared.</p> <p>Emission of this signal indicates that the - <tp:member-ref>CodecOffer</tp:member-ref> property has changed to - <code>(Contact, Offer, Codecs)</code>.</p> + <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.Call.Content.Interface.Media.DRAFT2" + >MediaDescriptionOfferDone</tp:dbus-ref> must be emitted + before <tp:dbus-ref + namespace="ofdT.Call.Content.Interface.Media.DRAFT2" + >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 contact the codec offer belongs to. + The remote contact the media description belongs to. </tp:docstring> </arg> - <arg name="Offer" type="o"> + <arg name="Properties" type="a{sv}" + tp:type="Media_Description_Properties"> <tp:docstring> - The object path of the new codec offer. This replaces any previous - codec offer. + 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.Call.Content" + >MediaDescription.DRAFT</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="LocalMediaDescriptionsChanged" + tp:name-for-bindings="Local_Media_Descriptions_Changed"> + + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>Change notification for + <tp:dbus-ref namespace="ofdT.Call.Content.Interface.Media.DRAFT2" + >LocalMediaDescriptions</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 local content descriptions that were updated</p> </tp:docstring> </arg> - <arg name="Codecs" type="a(usuua{ss})" tp:type="Codec[]"> + </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.Call.Content.Interface.Media.DRAFT2" + >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 <tp:dbus-ref namespace="ofdT.Call.Content" - >CodecOffer.DRAFT.RemoteContactCodecs</tp:dbus-ref> property - of the codec offer.</p> + <p>The remote content descriptions that were updated</p> + </tp:docstring> + </arg> + </signal> - <tp:rationale> - Having the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT">RemoteContactCodecs</tp:dbus-ref> - property here saves a D-Bus round-trip - it shouldn't be - necessary to get the property from the CodecOffer object, in - practice. - </tp:rationale> + <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.Call.Content.Interface.Media.DRAFT2" + >RemoteMediaDescriptions</tp:dbus-ref> + and + <tp:dbus-ref namespace="ofdT.Call.Content.Interface.Media.DRAFT2" + >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="CodecOffer" tp:name-for-bindings="Codec_Offer" - type="(oua(usuua{ss}))" tp:type="Codec_Offering" access="read"> + <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.Call.Content" - >CodecOffer.DRAFT</tp:dbus-ref> object, its - <tp:dbus-ref namespace="ofdT.Call.Content" - >CodecOffer.DRAFT.RemoteContact</tp:dbus-ref> and - <tp:dbus-ref namespace="ofdT.Call.Content" - >CodecOffer.DRAFT.RemoteContactCodecs</tp:dbus-ref> properties. + >MediaDescription.DRAFT</tp:dbus-ref> object, its + <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >RemoteContact</tp:dbus-ref> and + a mapping of the MediaDescriptions properties. If the object path is "/" then there isn't an outstanding - codec offer, and the mapping MUST be empty.</p> + content description, and the mapping MUST be empty.</p> <tp:rationale> - Having the <tp:dbus-ref - namespace="ofdT.Call.Content.CodecOffer.DRAFT" - >RemoteContact</tp:dbus-ref> and - <tp:dbus-ref namespace="ofdT.Call.Content.CodecOffer.DRAFT" - >RemoteContactCodecs</tp:dbus-ref> + Having all <tp:dbus-ref + namespace="ofdT.Call.Content">MediaDescription.DRAFT</tp:dbus-ref> properties here saves a D-Bus round-trip - it shouldn't be - necessary to get these properties from the CodecOffer object, in - practice. + necessary to get these properties from the Content MediaDescription + object, in practice. </tp:rationale> <p>Change notification is via the - <tp:member-ref>NewCodecOffer</tp:member-ref> (which replaces the - value of this property with a new codec offer), and - <tp:member-ref>CodecsChanged</tp:member-ref> (which implies that - there is no longer any active codec offer) signals.</p> + <tp:member-ref>NewMediaDescriptionOffer</tp:member-ref> and + <tp:member-ref>MediaDescriptionOfferDone</tp:member-ref> signals. + </p> </tp:docstring> </property> </interface> diff --git a/spec/Call_Content_Media_Description.xml b/spec/Call_Content_Media_Description.xml new file mode 100644 index 0000000..7e25fc3 --- /dev/null +++ b/spec/Call_Content_Media_Description.xml @@ -0,0 +1,148 @@ +<?xml version="1.0" ?> +<node name="/Call_Content_Media_Description" + 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.Call.Content.MediaDescription.DRAFT" + tp:causes-havoc="experimental"> + <tp:added version="UNRELEASED">(draft 1)</tp:added> + + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + This object represents a remote Description Offer to which the local + streaming implementation should reply with its local Description + </tp:docstring> + + <method name="Accept" tp:name-for-bindings="Accept"> + <arg name="Local_Media_Description" direction="in" + type="a{sv}" tp:type="Media_Description_Properties"> + <tp:docstring> + The local description to send to the remote contacts and + to use in the <tp:dbus-ref + namespace="ofdT.Call">Content.DRAFT</tp:dbus-ref>. + </tp:docstring> + </arg> + <tp:docstring> + Accepts the updated Description and update the corresponding + local description. + </tp:docstring> + <tp:possible-errors> + <tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument"> + <tp:docstring> + The decription given is invalid in some way. + </tp:docstring> + </tp:error> + </tp:possible-errors> + </method> + + <method name="Reject" tp:name-for-bindings="Reject"> + <tp:docstring> + Reject the proposed update to the remote description + FIXME add error codes and strings here + </tp:docstring> + </method> + + <property name="Interfaces" tp:name-for-bindings="Interfaces" + type="as" tp:type="DBus_Interface[]" access="read" tp:immutable="yes"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>Extra interfaces provided by this media description. This SHOULD + NOT include the Description interface itself, and cannot change + once the content has been created.</p> + </tp:docstring> + </property> + + <property name="HasRemoteInformation" + tp:name-for-bindings="Has_Remote_Information" type="b" + access="read" tp:immutable="yes"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml" > + <p> True if this offer contains information from the remote side: + If False then the Accept response solely depends on the + capabilities and preferences of the local side. + + In most protocols this property will be False for the initial + DescriptionOffer on an outgoing call. + </p> + + <p> This property will never be part of the DescriptionProperties used + to describe this object. If this property is true then the + DescriptionProperties describing this object will be empty (as + there is no remote information to put in it) + </p> + </tp:docstring> + </property> + + <property name="RemoteCodecs" + tp:name-for-bindings="Remote_Codecs" + type="a(usuua{ss})" tp:type="Codec[]" access="read" + tp:immutable="yes"> + <tp:docstring> + A list of codecs the remote contact supports. + </tp:docstring> + </property> + + <property name="RemoteContact" tp:name-for-bindings="Remote_Contact" + type="u" tp:type="Contact_Handle" access="read" tp:immutable="yes"> + <tp:docstring> + The contact handle that this description applies to or 0 for a + description that will apply to all remote contacts in the call. + + [FIXME] the usage of 0 needs further clarifications + </tp:docstring> + </property> + + <tp:mapping name="Media_Description_Properties"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p> + A mapping containing all properties that define the information from a + <tp:dbus-ref + namespace="ofdT.Call.Content" + >MediaDescription.DRAFT</tp:dbus-ref> and its interfaces. + </p> + + <p> + If <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref> is False then this mapping + will be empty otherwise it willl always contains at least + <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >RemoteCodecs</tp:dbus-ref> + </p> + + <p> + The <tp:dbus-ref namespace="ofdT.Call.Content.MediaDescription.DRAFT" + >HasRemoteInformation</tp:dbus-ref> property is never part of this + mapping. + </p> + </tp:docstring> + + <tp:member name="Media_Description_Property" + type="s" tp:type="DBus_Qualified_Member"> + <tp:docstring> + A D-Bus interface name, followed by a dot and a D-Bus property name. + </tp:docstring> + </tp:member> + <tp:member name="Media_Description_Property_Value" type="v"> + <tp:docstring> + The value of the property + </tp:docstring> + </tp:member> + </tp:mapping> + + </interface> +</node> +<!-- vim:set sw=2 sts=2 et ft=xml: --> diff --git a/spec/Call_Stream_Interface_Media.xml b/spec/Call_Stream_Interface_Media.xml index 5f2bbec..9e62c87 100644 --- a/spec/Call_Stream_Interface_Media.xml +++ b/spec/Call_Stream_Interface_Media.xml @@ -155,7 +155,8 @@ </tp:docstring> <tp:enumvalue suffix="Unknown" value="0"> <tp:docstring> - The stream transport type is unknown or not applicable. + The stream transport type is unknown or not applicable + (for streams that do not have a configurable transport). </tp:docstring> </tp:enumvalue> <tp:enumvalue suffix="Raw_UDP" value="1"> @@ -199,6 +200,12 @@ shmsrc and shmsink plugins. </tp:docstring> </tp:enumvalue> + <tp:enumvalue suffix="Multicast" value="6"> + <tp:added version="0.21.5"/> + <tp:docstring> + Multicast transport. + </tp:docstring> + </tp:enumvalue> </tp:enum> <property name="Transport" tp:name-for-bindings="Transport" diff --git a/spec/Channel_Type_Call.xml b/spec/Channel_Type_Call.xml index eb1a663..74840f6 100644 --- a/spec/Channel_Type_Call.xml +++ b/spec/Channel_Type_Call.xml @@ -52,11 +52,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <h4>Contents</h4> - <p><tp:dbus-ref - namespace="ofdT.Call">Content.DRAFT</tp:dbus-ref> objects - represent the actual media that forms the Call (for example an - audio content and a video content). Calls always have one or - more Content objects associated with them.</p> + <p><tp:dbus-ref namespace="ofdT.Call">Content.DRAFT</tp:dbus-ref> + objects represent the actual media that forms the Call (for + example an audio content and a video content). Calls always + have one or more Content objects associated with them. As a + result, a new Call channel request MUST have either + <tp:member-ref>InitialAudio</tp:member-ref>=True, or + <tp:member-ref>InitialVideo</tp:member-ref>=True, or both, + as the Requestable Channel Classes will document.</p> <p><tp:dbus-ref namespace="ofdT.Call">Content.DRAFT</tp:dbus-ref> objects have @@ -1035,7 +1038,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. <p>If this is False, the handler is responsible for doing the actual media streaming for at least some contents itself. Those contents will have the <tp:dbus-ref namespace="ofdT.Call.Content.Interface" - >Media.DRAFT</tp:dbus-ref> interface, to communicate the necessary + >Media.DRAFT2</tp:dbus-ref> interface, to communicate the necessary information to a streaming implementation. Connection managers SHOULD operate like this, if possible.</p> @@ -1160,12 +1163,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. </property> <property name="InitialTransport" tp:name-for-bindings="Initial_Transport" - type="s" access="read" tp:requestable="yes" tp:immutable="yes"> + type="u" tp:type="Stream_Transport_Type" access="read" + tp:requestable="yes" tp:immutable="yes"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If set on a requested channel, this indicates the transport that should be used for this call. Where not applicable, this property - is defined to be the empty string, in particular, on CMs with - hardware streaming.</p> + is defined to be <tp:type>Stream_Transport_Type</tp:type>_Unknown, + in particular, on CMs with hardware streaming.</p> <tp:rationale> When implementing a voip gateway one wants the outgoing leg of the diff --git a/spec/Makefile.am b/spec/Makefile.am index f0d43af..690a14f 100644 --- a/spec/Makefile.am +++ b/spec/Makefile.am @@ -1,5 +1,5 @@ EXTRA_DIST = \ - Call_Content_Codec_Offer.xml \ + Call_Content_Media_Description.xml \ Call_Content_Interface_Media.xml \ Call_Content_Interface_Mute.xml \ Call_Content.xml \ |