try { Logger.Debug("Requesting the Contact handle"); string[] names = {"sip:500@ekiga.net"}; uint[] handles = tlpConnection.RequestHandles (HandleType.Contact, names); tlpConnection.HoldHandles (HandleType.Contact, handles); string[] memberNames = tlpConnection.InspectHandles (HandleType.Contact, handles); if(memberNames.Length < 1) Logger.Debug("The memberName was not returned!"); else Logger.Debug("The member Name is: {0}", memberNames[0]); // ObjectPath op = tlpConnection.RequestChannel (ChannelType.ContactList, HandleType.List, handles[0], true); // IChannelGroup cl = // Bus.Session.GetObject (account.TelepathyBusName, op); if(handles.Length != 1) { Logger.Fatal("Error: requested a handle and got: {0}", handles.Length); return false; } Logger.Debug("Got the handle"); Logger.Debug("Setting up Media Channel"); mcObjectPath = tlpConnection.RequestChannel ( org.freedesktop.Telepathy.ChannelType.StreamedMedia, HandleType.Contact, handles[0], true); Logger.Debug("Have the Media Channel Object Path"); mediaChannel = Bus.Session.GetObject (busName, mcObjectPath); Logger.Debug("Have the Media Channel, what to do?"); //initialize media channel channel_handler = Bus.Session.GetObject ("org.freedesktop.Telepathy.StreamEngine", new ObjectPath ("/org/freedesktop/Telepathy/StreamEngine")); if (channel_handler != null) { Logger.Debug("Have the channelHandler... telling it to handle the channel"); channel_handler.HandleChannel ( connectionInfo.BusName, connectionInfo.ObjectPath, mediaChannel.ChannelType, mcObjectPath, 0, 0); } else Logger.Debug("Didn't get a channel handler"); Logger.Debug ("Attempting to add members..."); mediaChannel.AddMembers (handles, String.Empty); Logger.Debug ("AddMembers called successfully"); StreamInfo[] lst = ((IChannelStreamedMedia) mediaChannel).ListStreams(); Logger.Debug("StreamInfo List Length: {0}", lst.Length); foreach (StreamInfo info in lst) { Logger.Debug("Stream Info: Id:{0}, Type:{1}, ContactHandle:{2}, Direction: {3}", info.Id, info.Type, info.ContactHandle, info.Direction); // StreamObject stream = CreateStream (info); // hash_stream.Add (stream.Id, stream); } mediaChannel.StreamAdded += OnStreamAdded; mediaChannel.StreamDirectionChanged += OnStreamDirectionChanged; mediaChannel.StreamError += OnStreamError; mediaChannel.StreamRemoved += OnStreamRemoved; mediaChannel.StreamStateChanged += OnStreamStateChanged; // Logger.Debug("Sleeping 'cause we don't know what else to do..."); // System.Threading.Thread.Sleep(4000); stream_engine = Bus.Session.GetObject ("org.freedesktop.Telepathy.StreamEngine", new ObjectPath ("/org/freedesktop/Telepathy/StreamEngine")); Logger.Debug("have the stream engine"); stream_engine.AddPreviewWindow(previewWindowID); stream_engine.Receiving += OnStreamEngineReceiving; uint[] stream_type = new uint[2]; stream_type[0] = (uint) org.freedesktop.Telepathy.StreamType.Video; stream_type[1] = (uint) org.freedesktop.Telepathy.StreamType.Audio; System.Threading.Thread.Sleep(4000); Logger.Debug("Requesting streams from media channel"); StreamInfo[] infos = mediaChannel.RequestStreams (handles[0], stream_type); Logger.Debug("Number of Streams Received: {0}", infos.Length); foreach (StreamInfo info in infos) { Logger.Debug("Stream Info: Type: {0}, Id: {1}, State: {2}, Direction: {3}, ContactHandle: {4}", info.Type, info.Id, info.State, info.Direction, info.ContactHandle); } } catch(Exception e) { Logger.Debug(e.Message); Logger.Debug(e.StackTrace); }