[telepathy-butterfly/master] Signal stream state changes
Louis-Francis Ratté-Boulianne
louis-francis.ratte-boulianne at collabora.co.uk
Thu Sep 10 06:48:10 PDT 2009
---
butterfly/channel/media.py | 3 ++
butterfly/media/session_handler.py | 4 +++
butterfly/media/stream_handler.py | 51 ++++++++++++++++++++++++-----------
3 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/butterfly/channel/media.py b/butterfly/channel/media.py
index c1c2cae..84fa4c9 100644
--- a/butterfly/channel/media.py
+++ b/butterfly/channel/media.py
@@ -123,6 +123,9 @@ class ButterflyMediaChannel(
self.StreamDirectionChanged(handler.id, handler.direction,
handler.pending_send)
+ def on_stream_state_changed(self, id, state):
+ self.StreamStateChanged(id, state)
+
@async
def __add_initial_participants(self):
self.MembersChanged('', [self._handle], [], [], [],
diff --git a/butterfly/media/session_handler.py b/butterfly/media/session_handler.py
index 23e95a4..2a9cd47 100644
--- a/butterfly/media/session_handler.py
+++ b/butterfly/media/session_handler.py
@@ -33,6 +33,7 @@ __all__ = ['ButterflySessionHandler']
class ButterflySessionHandler (telepathy.server.MediaSessionHandler):
def __init__(self, connection, channel, session, handle):
self._conn = connection
+ self._channel = channel
self._session = session
self._handle = handle
self._stream_handlers = {}
@@ -87,3 +88,6 @@ class ButterflySessionHandler (telepathy.server.MediaSessionHandler):
def RemoveStream(self, id):
pass
+
+ def on_stream_state_changed(self, id, state):
+ self._channel.on_stream_state_changed(id, state)
diff --git a/butterfly/media/stream_handler.py b/butterfly/media/stream_handler.py
index 1580d64..7d64d19 100644
--- a/butterfly/media/stream_handler.py
+++ b/butterfly/media/stream_handler.py
@@ -95,17 +95,22 @@ class ButterflyStreamHandler (
def stun_servers(self):
return [("64.14.48.28", dbus.UInt32(3478))]
- def Ready(self, Codecs):
+ def Ready(self, codecs):
+ print "StreamReady : ", codecs
if self._remote_candidates is not None:
self.SetRemoteCandidateList(self._remote_candidates)
if self._remote_codecs is not None:
self.SetRemoteCodecs(self._remote_codecs)
+ self.SetStreamPlaying(True)
+ self.SetStreamSending(True)
self.SetLocalCodecs(codecs)
#if self._session is None:
# self._session = ButterflyWebcamSession(self._conn, self._handle.contact)
- def StreamState(self, State):
- print "StreamState : ", State
+ def StreamState(self, state):
+ print "StreamState : ", state
+ self._state = state
+ self._session.on_stream_state_changed(self.id, state)
def Error(self, code, message):
print "StreamError - %i - %s" % (code, message)
@@ -121,24 +126,26 @@ class ButterflyStreamHandler (
self._stream.local_candidates_prepared()
def NewActiveCandidatePair(self, native_id, remote_id):
+ print "New active candidate pair %s %s" % (native_id, remote_id)
+ remote_id = '1'
self._stream.new_active_candidate_pair(native_id, remote_id)
- def SetLocalCodecs(self, Codecs):
+ def SetLocalCodecs(self, codecs):
+ pass
+
+ def SupportedCodecs(self, codecs):
+ print "SupportedCodecs: ", codecs
list = self.convert_tp_codecs(codecs)
self._stream.set_local_codecs(list)
- def SupportedCodecs(self, Codecs):
- print "SupportedCodecs: ", Codecs
-
- def CodecChoice(self, Codec_ID):
- print "CodecChoice :", Codec_ID
+ def CodecChoice(self, codec_id):
+ print "CodecChoice :", codec_id
- def CodecsUpdated(self, Codecs):
- print "CodecsUpdated: ", Codecs
+ def CodecsUpdated(self, codecs):
+ print "CodecsUpdated: ", codecs
#papyon.event.MediaStreamEventInterface
def on_remote_candidates_received(self, candidates):
- print "REMOTE CANDIDATES"
list = self.convert_ice_candidates(candidates)
self._remote_candidates = list
@@ -159,12 +166,13 @@ class ButterflyStreamHandler (
self.Close()
def convert_sdp_codec(self, codec):
- return (codec.payload, codec.encoding, self._type, codec.bitrate, 1, {})
+ return (codec.payload, codec.encoding, self._type, codec.clockrate, 0,
+ codec.params)
def convert_tp_codecs(self, codecs):
list = []
for codec in codecs:
- c = papyon.sip.sdp.SDPCodec(codec[0], codec[1], codec[3])
+ c = papyon.sip.sdp.SDPCodec(codec[0], codec[1], codec[3], codec[5])
list.append(c)
return list
@@ -205,7 +213,18 @@ class ButterflyStreamHandler (
def convert_tp_candidate(self, id, transport):
proto = "UDP"
priority = int(transport[6] * 65536)
- type = "host"
+ if transport[7] == 0:
+ type = "host"
+ addr = None
+ port = None
+ elif transport[7] == 1:
+ type = "srflx"
+ addr = "192.168.1.102"
+ port = int(transport[2])
+ elif transport[7] == 2:
+ type = "relay"
+ addr = None
+ port = None
return papyon.sip.ice.ICECandidate(19, id, int(transport[0]), proto, priority,
transport[8], transport[9], type, transport[1],
- int(transport[2]))
+ int(transport[2]), addr, port)
--
1.5.6.5
More information about the telepathy-commits
mailing list