[telepathy-gabble/master] Factor out gabble_media_factory_add_caps
Simon McVittie
simon.mcvittie at collabora.co.uk
Wed Aug 26 11:15:30 PDT 2009
---
src/media-factory.c | 93 ++++++++++++++++++++++++++++++--------------------
1 files changed, 56 insertions(+), 37 deletions(-)
diff --git a/src/media-factory.c b/src/media-factory.c
index a4e1fc4..46acf8d 100644
--- a/src/media-factory.c
+++ b/src/media-factory.c
@@ -656,6 +656,54 @@ channel_manager_iface_init (gpointer g_iface,
iface->ensure_channel = gabble_media_factory_ensure_channel;
}
+static void
+gabble_media_factory_add_caps (GabbleCapabilitySet *caps,
+ const gchar *client_name,
+ gboolean audio,
+ gboolean video,
+ gboolean gtalk_p2p,
+ gboolean ice_udp,
+ gboolean h264)
+{
+ DEBUG ("Client %s media capabilities:%s%s%s%s%s",
+ client_name,
+ audio ? " audio" : "",
+ video ? " video" : "",
+ gtalk_p2p ? " gtalk-p2p" : "",
+ ice_udp ? " ice-udp" : "",
+ h264 ? " H.264" : "");
+
+ if (gtalk_p2p)
+ gabble_capability_set_add (caps, NS_GOOGLE_TRANSPORT_P2P);
+
+ if (ice_udp)
+ gabble_capability_set_add (caps, NS_JINGLE_TRANSPORT_ICEUDP);
+
+ if (audio)
+ {
+ gabble_capability_set_add (caps, NS_JINGLE_RTP);
+ gabble_capability_set_add (caps, NS_JINGLE_RTP_AUDIO);
+ gabble_capability_set_add (caps, NS_JINGLE_DESCRIPTION_AUDIO);
+
+ /* voice-v1 implies that we interop with GTalk, i.e. we have gtalk-p2p
+ * as well as audio */
+ if (gtalk_p2p)
+ gabble_capability_set_add (caps, NS_GOOGLE_FEAT_VOICE);
+ }
+
+ if (video)
+ {
+ gabble_capability_set_add (caps, NS_JINGLE_RTP);
+ gabble_capability_set_add (caps, NS_JINGLE_RTP_VIDEO);
+ gabble_capability_set_add (caps, NS_JINGLE_DESCRIPTION_VIDEO);
+
+ /* video-v1 implies that we interop with Google Video Chat, i.e. we have
+ * gtalk-p2p and H.264 as well as video */
+ if (gtalk_p2p && h264)
+ gabble_capability_set_add (caps, NS_GOOGLE_FEAT_VIDEO);
+ }
+}
+
TpChannelMediaCapabilities
_gabble_media_factory_caps_to_typeflags (const GabbleCapabilitySet *caps)
{
@@ -694,43 +742,14 @@ void
_gabble_media_factory_typeflags_to_caps (TpChannelMediaCapabilities flags,
GabbleCapabilitySet *caps)
{
- gboolean gtalk_p2p;
-
- DEBUG ("adding Jingle caps %u (%s, %s, %s, %s)", flags,
- flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO ? "audio" : "no audio",
- flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO ? "video" : "no video",
- flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P
- ? "gtalk-p2p" : "no gtalk-p2p",
- flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_ICE_UDP
- ? "ice-udp" : "no ice-udp");
-
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_ICE_UDP)
- gabble_capability_set_add (caps, NS_JINGLE_TRANSPORT_ICEUDP);
-
- gtalk_p2p = flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P;
-
- if (gtalk_p2p)
- gabble_capability_set_add (caps, NS_GOOGLE_TRANSPORT_P2P);
-
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO)
- {
- gabble_capability_set_add (caps, NS_JINGLE_RTP);
- gabble_capability_set_add (caps, NS_JINGLE_RTP_AUDIO);
- gabble_capability_set_add (caps, NS_JINGLE_DESCRIPTION_AUDIO);
-
- if (gtalk_p2p)
- gabble_capability_set_add (caps, NS_GOOGLE_FEAT_VOICE);
- }
-
- if (flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO)
- {
- gabble_capability_set_add (caps, NS_JINGLE_RTP);
- gabble_capability_set_add (caps, NS_JINGLE_RTP_VIDEO);
- gabble_capability_set_add (caps, NS_JINGLE_DESCRIPTION_VIDEO);
-
- if (gtalk_p2p)
- gabble_capability_set_add (caps, NS_GOOGLE_FEAT_VIDEO);
- }
+ DEBUG ("adding Jingle caps %u", flags);
+
+ gabble_media_factory_add_caps (caps, "<legacy Capabilities>",
+ (flags & TP_CHANNEL_MEDIA_CAPABILITY_AUDIO) != 0,
+ (flags & TP_CHANNEL_MEDIA_CAPABILITY_VIDEO) != 0,
+ (flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P) != 0,
+ (flags & TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_ICE_UDP) != 0,
+ TRUE /* assume we have H.264 for now */);
}
static void
--
1.5.6.5
More information about the telepathy-commits
mailing list