Mercurial > pidgin.yaz
annotate libpurple/media/backend-fs2.c @ 31920:32a00b76ce49
Patch from kawaii.neko that adds chat-nick-clicked and chat-nick-autocomplete
signals to do interesting stuff like allowing a plugin to override tab
completion or do stuff when a nick in a chat userlist is clocked. Still need
a name to credit kawaii.neko properly. Fixes #12599.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sat, 16 Apr 2011 18:56:17 +0000 |
parents | 3fb443b6460c |
children | a4ba3b194ce3 |
rev | line source |
---|---|
29540 | 1 /** |
2 * @file backend-fs2.c Farsight 2 backend for media API | |
3 * @ingroup core | |
4 */ | |
5 | |
6 /* purple | |
7 * | |
8 * Purple is the legal property of its developers, whose names are too numerous | |
9 * to list here. Please refer to the COPYRIGHT file distributed with this | |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA | |
25 */ | |
26 | |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
27 #include "internal.h" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
28 |
29719
858d1a47bf83
Fix compile with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
29714
diff
changeset
|
29 #include "backend-fs2.h" |
858d1a47bf83
Fix compile with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
29714
diff
changeset
|
30 |
29788
e75d6a51a5c4
Compile with --disable-vv. Without this change I get this error:
Mark Doliner <mark@kingant.net>
parents:
29744
diff
changeset
|
31 #ifdef USE_VV |
29540 | 32 #include "backend-iface.h" |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
33 #include "debug.h" |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
34 #include "network.h" |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
35 #include "media-gst.h" |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
36 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
37 #include <gst/farsight/fs-conference-iface.h> |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
38 #include <gst/farsight/fs-element-added-notifier.h> |
29540 | 39 |
40 /** @copydoc _PurpleMediaBackendFs2Class */ | |
41 typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class; | |
42 /** @copydoc _PurpleMediaBackendFs2Private */ | |
43 typedef struct _PurpleMediaBackendFs2Private PurpleMediaBackendFs2Private; | |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
44 /** @copydoc _PurpleMediaBackendFs2Session */ |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
45 typedef struct _PurpleMediaBackendFs2Session PurpleMediaBackendFs2Session; |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
46 /** @copydoc _PurpleMediaBackendFs2Stream */ |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
47 typedef struct _PurpleMediaBackendFs2Stream PurpleMediaBackendFs2Stream; |
29540 | 48 |
49 #define PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj) \ | |
50 (G_TYPE_INSTANCE_GET_PRIVATE((obj), \ | |
51 PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2Private)) | |
52 | |
53 static void purple_media_backend_iface_init(PurpleMediaBackendIface *iface); | |
54 | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
55 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
56 gst_bus_cb(GstBus *bus, GstMessage *msg, PurpleMediaBackendFs2 *self); |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
57 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
58 state_changed_cb(PurpleMedia *media, PurpleMediaState state, |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
59 gchar *sid, gchar *name, PurpleMediaBackendFs2 *self); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
60 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
61 stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type, |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
62 gchar *sid, gchar *name, gboolean local, |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
63 PurpleMediaBackendFs2 *self); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
64 |
29540 | 65 static gboolean purple_media_backend_fs2_add_stream(PurpleMediaBackend *self, |
66 const gchar *sess_id, const gchar *who, | |
67 PurpleMediaSessionType type, gboolean initiator, | |
68 const gchar *transmitter, | |
69 guint num_params, GParameter *params); | |
70 static void purple_media_backend_fs2_add_remote_candidates( | |
71 PurpleMediaBackend *self, | |
72 const gchar *sess_id, const gchar *participant, | |
73 GList *remote_candidates); | |
29581
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
74 static gboolean purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self, |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
75 const gchar *sess_id); |
29540 | 76 static GList *purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self, |
77 const gchar *sess_id); | |
78 static GList *purple_media_backend_fs2_get_local_candidates( | |
79 PurpleMediaBackend *self, | |
80 const gchar *sess_id, const gchar *participant); | |
29572
a7cad99144f0
Make the backend interface's set_remote_codecs function return gboolean.
maiku@pidgin.im
parents:
29571
diff
changeset
|
81 static gboolean purple_media_backend_fs2_set_remote_codecs( |
29540 | 82 PurpleMediaBackend *self, |
83 const gchar *sess_id, const gchar *participant, | |
84 GList *codecs); | |
29574
90c48f1e479a
Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents:
29573
diff
changeset
|
85 static gboolean purple_media_backend_fs2_set_send_codec( |
90c48f1e479a
Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents:
29573
diff
changeset
|
86 PurpleMediaBackend *self, const gchar *sess_id, |
90c48f1e479a
Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents:
29573
diff
changeset
|
87 PurpleMediaCodec *codec); |
29540 | 88 |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
89 static void free_stream(PurpleMediaBackendFs2Stream *stream); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
90 static void free_session(PurpleMediaBackendFs2Session *session); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
91 |
29540 | 92 struct _PurpleMediaBackendFs2Class |
93 { | |
94 GObjectClass parent_class; | |
95 }; | |
96 | |
97 struct _PurpleMediaBackendFs2 | |
98 { | |
99 GObject parent; | |
100 }; | |
101 | |
102 G_DEFINE_TYPE_WITH_CODE(PurpleMediaBackendFs2, purple_media_backend_fs2, | |
103 G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE( | |
104 PURPLE_TYPE_MEDIA_BACKEND, purple_media_backend_iface_init)); | |
105 | |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
106 struct _PurpleMediaBackendFs2Stream |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
107 { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
108 PurpleMediaBackendFs2Session *session; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
109 gchar *participant; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
110 FsStream *stream; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
111 |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
112 GstElement *src; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
113 GstElement *tee; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
114 GstElement *volume; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
115 GstElement *level; |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
116 GstElement *fakesink; |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
117 GstElement *queue; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
118 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
119 GList *local_candidates; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
120 GList *remote_candidates; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
121 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
122 guint connected_cb_id; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
123 }; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
124 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
125 struct _PurpleMediaBackendFs2Session |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
126 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
127 PurpleMediaBackendFs2 *backend; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
128 gchar *id; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
129 FsSession *session; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
130 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
131 GstElement *src; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
132 GstElement *tee; |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
133 GstElement *srcvalve; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
134 |
31553 | 135 GstPad *srcpad; |
136 | |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
137 PurpleMediaSessionType type; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
138 }; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
139 |
29540 | 140 struct _PurpleMediaBackendFs2Private |
141 { | |
142 PurpleMedia *media; | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
143 GstElement *confbin; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
144 FsConference *conference; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
145 gchar *conference_type; |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
146 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
147 GHashTable *sessions; |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
148 GHashTable *participants; |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
149 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
150 GList *streams; |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
151 |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
152 gdouble silence_threshold; |
29540 | 153 }; |
154 | |
155 enum { | |
156 PROP_0, | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
157 PROP_CONFERENCE_TYPE, |
29540 | 158 PROP_MEDIA, |
159 }; | |
160 | |
161 static void | |
162 purple_media_backend_fs2_init(PurpleMediaBackendFs2 *self) | |
31824
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
163 {} |
29540 | 164 |
31600
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
165 static gboolean |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
166 event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad) |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
167 { |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
168 if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
169 && gst_event_has_name(event, "purple-unlink-tee")) { |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
170 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
171 const GstStructure *s = gst_event_get_structure(event); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
172 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
173 gst_pad_unlink(srcpad, gst_pad_get_peer(srcpad)); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
174 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
175 gst_pad_remove_event_probe(srcpad, |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
176 g_value_get_uint(gst_structure_get_value(s, "handler-id"))); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
177 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
178 if (g_value_get_boolean(gst_structure_get_value(s, "release-pad"))) |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
179 gst_element_release_request_pad(GST_ELEMENT_PARENT(srcpad), srcpad); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
180 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
181 return FALSE; |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
182 } |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
183 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
184 return TRUE; |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
185 } |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
186 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
187 static void |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
188 unlink_teepad_dynamic(GstPad *srcpad, gboolean release_pad) |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
189 { |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
190 guint id = gst_pad_add_event_probe(srcpad, G_CALLBACK(event_probe_cb), NULL); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
191 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
192 if (GST_IS_GHOST_PAD(srcpad)) |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
193 srcpad = gst_ghost_pad_get_target(GST_GHOST_PAD(srcpad)); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
194 |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
195 gst_element_send_event(gst_pad_get_parent_element(srcpad), |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
196 gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM, |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
197 gst_structure_new("purple-unlink-tee", |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
198 "release-pad", G_TYPE_BOOLEAN, release_pad, |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
199 "handler-id", G_TYPE_UINT, id, |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
200 NULL))); |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
201 } |
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
202 |
29540 | 203 static void |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
204 purple_media_backend_fs2_dispose(GObject *obj) |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
205 { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
206 PurpleMediaBackendFs2Private *priv = |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
207 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj); |
29577
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
208 GList *iter = NULL; |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
209 |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
210 purple_debug_info("backend-fs2", "purple_media_backend_fs2_dispose\n"); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
211 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
212 if (priv->confbin) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
213 GstElement *pipeline; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
214 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
215 pipeline = purple_media_manager_get_pipeline( |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
216 purple_media_get_manager(priv->media)); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
217 |
31553 | 218 /* All connections to media sources should be blocked before confbin is |
219 * removed, to prevent freezing of any other simultaneously running | |
220 * media calls. */ | |
221 if (priv->sessions) { | |
222 GList *sessions = g_hash_table_get_values(priv->sessions); | |
223 for (; sessions; sessions = | |
224 g_list_delete_link(sessions, sessions)) { | |
225 PurpleMediaBackendFs2Session *session = sessions->data; | |
226 if (session->srcpad) { | |
31600
66fe4bda9a85
This is a better way to handle ending one call when multiple calls are in
jakub.adam@ktknet.cz
parents:
31553
diff
changeset
|
227 unlink_teepad_dynamic(session->srcpad, FALSE); |
31553 | 228 gst_object_unref(session->srcpad); |
229 session->srcpad = NULL; | |
230 } | |
231 } | |
232 } | |
233 | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
234 gst_element_set_locked_state(priv->confbin, TRUE); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
235 gst_element_set_state(GST_ELEMENT(priv->confbin), |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
236 GST_STATE_NULL); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
237 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
238 if (pipeline) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
239 GstBus *bus; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
240 gst_bin_remove(GST_BIN(pipeline), priv->confbin); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
241 bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
242 g_signal_handlers_disconnect_matched(G_OBJECT(bus), |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
243 G_SIGNAL_MATCH_FUNC | |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
244 G_SIGNAL_MATCH_DATA, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
245 0, 0, 0, gst_bus_cb, obj); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
246 gst_object_unref(bus); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
247 } else { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
248 purple_debug_warning("backend-fs2", "Unable to " |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
249 "properly dispose the conference. " |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
250 "Couldn't get the pipeline.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
251 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
252 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
253 priv->confbin = NULL; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
254 priv->conference = NULL; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
255 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
256 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
257 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
258 if (priv->sessions) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
259 GList *sessions = g_hash_table_get_values(priv->sessions); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
260 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
261 for (; sessions; sessions = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
262 g_list_delete_link(sessions, sessions)) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
263 PurpleMediaBackendFs2Session *session = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
264 sessions->data; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
265 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
266 if (session->session) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
267 g_object_unref(session->session); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
268 session->session = NULL; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
269 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
270 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
271 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
272 |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
273 if (priv->participants) { |
30872 | 274 g_hash_table_destroy(priv->participants); |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
275 priv->participants = NULL; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
276 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
277 |
29577
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
278 for (iter = priv->streams; iter; iter = g_list_next(iter)) { |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
279 PurpleMediaBackendFs2Stream *stream = iter->data; |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
280 if (stream->stream) { |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
281 g_object_unref(stream->stream); |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
282 stream->stream = NULL; |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
283 } |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
284 } |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
285 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
286 if (priv->media) { |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
287 g_object_remove_weak_pointer(G_OBJECT(priv->media), |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
288 (gpointer*)&priv->media); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
289 priv->media = NULL; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
290 } |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
291 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
292 G_OBJECT_CLASS(purple_media_backend_fs2_parent_class)->dispose(obj); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
293 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
294 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
295 static void |
29540 | 296 purple_media_backend_fs2_finalize(GObject *obj) |
297 { | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
298 PurpleMediaBackendFs2Private *priv = |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
299 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj); |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
300 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
301 purple_debug_info("backend-fs2", "purple_media_backend_fs2_finalize\n"); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
302 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
303 g_free(priv->conference_type); |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
304 |
29577
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
305 for (; priv->streams; priv->streams = |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
306 g_list_delete_link(priv->streams, priv->streams)) { |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
307 PurpleMediaBackendFs2Stream *stream = priv->streams->data; |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
308 free_stream(stream); |
29577
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
309 } |
3bab2237724d
Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents:
29576
diff
changeset
|
310 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
311 if (priv->sessions) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
312 GList *sessions = g_hash_table_get_values(priv->sessions); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
313 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
314 for (; sessions; sessions = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
315 g_list_delete_link(sessions, sessions)) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
316 PurpleMediaBackendFs2Session *session = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
317 sessions->data; |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
318 free_session(session); |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
319 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
320 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
321 g_hash_table_destroy(priv->sessions); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
322 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
323 |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
324 G_OBJECT_CLASS(purple_media_backend_fs2_parent_class)->finalize(obj); |
29540 | 325 } |
326 | |
327 static void | |
328 purple_media_backend_fs2_set_property(GObject *object, guint prop_id, | |
329 const GValue *value, GParamSpec *pspec) | |
330 { | |
331 PurpleMediaBackendFs2Private *priv; | |
332 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object)); | |
333 | |
334 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object); | |
335 | |
336 switch (prop_id) { | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
337 case PROP_CONFERENCE_TYPE: |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
338 priv->conference_type = g_value_dup_string(value); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
339 break; |
29540 | 340 case PROP_MEDIA: |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
341 priv->media = g_value_get_object(value); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
342 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
343 if (priv->media == NULL) |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
344 break; |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
345 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
346 g_object_add_weak_pointer(G_OBJECT(priv->media), |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
347 (gpointer*)&priv->media); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
348 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
349 g_signal_connect(G_OBJECT(priv->media), |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
350 "state-changed", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
351 G_CALLBACK(state_changed_cb), |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
352 PURPLE_MEDIA_BACKEND_FS2(object)); |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
353 g_signal_connect(G_OBJECT(priv->media), "stream-info", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
354 G_CALLBACK(stream_info_cb), |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
355 PURPLE_MEDIA_BACKEND_FS2(object)); |
29540 | 356 break; |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
357 default: |
29540 | 358 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
359 object, prop_id, pspec); | |
360 break; | |
361 } | |
362 } | |
363 | |
364 static void | |
365 purple_media_backend_fs2_get_property(GObject *object, guint prop_id, | |
366 GValue *value, GParamSpec *pspec) | |
367 { | |
368 PurpleMediaBackendFs2Private *priv; | |
369 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object)); | |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
370 |
29540 | 371 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object); |
372 | |
373 switch (prop_id) { | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
374 case PROP_CONFERENCE_TYPE: |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
375 g_value_set_string(value, priv->conference_type); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
376 break; |
29540 | 377 case PROP_MEDIA: |
378 g_value_set_object(value, priv->media); | |
379 break; | |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
380 default: |
29540 | 381 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
382 object, prop_id, pspec); | |
383 break; | |
384 } | |
385 } | |
386 | |
387 static void | |
388 purple_media_backend_fs2_class_init(PurpleMediaBackendFs2Class *klass) | |
389 { | |
390 GObjectClass *gobject_class = (GObjectClass*)klass; | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
391 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
392 gobject_class->dispose = purple_media_backend_fs2_dispose; |
29540 | 393 gobject_class->finalize = purple_media_backend_fs2_finalize; |
394 gobject_class->set_property = purple_media_backend_fs2_set_property; | |
395 gobject_class->get_property = purple_media_backend_fs2_get_property; | |
396 | |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
397 g_object_class_override_property(gobject_class, PROP_CONFERENCE_TYPE, |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
398 "conference-type"); |
29540 | 399 g_object_class_override_property(gobject_class, PROP_MEDIA, "media"); |
400 | |
401 g_type_class_add_private(klass, sizeof(PurpleMediaBackendFs2Private)); | |
402 } | |
403 | |
404 static void | |
405 purple_media_backend_iface_init(PurpleMediaBackendIface *iface) | |
406 { | |
407 iface->add_stream = purple_media_backend_fs2_add_stream; | |
408 iface->add_remote_candidates = | |
409 purple_media_backend_fs2_add_remote_candidates; | |
29581
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
410 iface->codecs_ready = purple_media_backend_fs2_codecs_ready; |
29540 | 411 iface->get_codecs = purple_media_backend_fs2_get_codecs; |
412 iface->get_local_candidates = | |
413 purple_media_backend_fs2_get_local_candidates; | |
414 iface->set_remote_codecs = purple_media_backend_fs2_set_remote_codecs; | |
415 iface->set_send_codec = purple_media_backend_fs2_set_send_codec; | |
416 } | |
417 | |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
418 static FsMediaType |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
419 session_type_to_fs_media_type(PurpleMediaSessionType type) |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
420 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
421 if (type & PURPLE_MEDIA_AUDIO) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
422 return FS_MEDIA_TYPE_AUDIO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
423 else if (type & PURPLE_MEDIA_VIDEO) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
424 return FS_MEDIA_TYPE_VIDEO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
425 else |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
426 return 0; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
427 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
428 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
429 static FsStreamDirection |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
430 session_type_to_fs_stream_direction(PurpleMediaSessionType type) |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
431 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
432 if ((type & PURPLE_MEDIA_AUDIO) == PURPLE_MEDIA_AUDIO || |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
433 (type & PURPLE_MEDIA_VIDEO) == PURPLE_MEDIA_VIDEO) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
434 return FS_DIRECTION_BOTH; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
435 else if ((type & PURPLE_MEDIA_SEND_AUDIO) || |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
436 (type & PURPLE_MEDIA_SEND_VIDEO)) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
437 return FS_DIRECTION_SEND; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
438 else if ((type & PURPLE_MEDIA_RECV_AUDIO) || |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
439 (type & PURPLE_MEDIA_RECV_VIDEO)) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
440 return FS_DIRECTION_RECV; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
441 else |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
442 return FS_DIRECTION_NONE; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
443 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
444 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
445 static PurpleMediaSessionType |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
446 session_type_from_fs(FsMediaType type, FsStreamDirection direction) |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
447 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
448 PurpleMediaSessionType result = PURPLE_MEDIA_NONE; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
449 if (type == FS_MEDIA_TYPE_AUDIO) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
450 if (direction & FS_DIRECTION_SEND) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
451 result |= PURPLE_MEDIA_SEND_AUDIO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
452 if (direction & FS_DIRECTION_RECV) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
453 result |= PURPLE_MEDIA_RECV_AUDIO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
454 } else if (type == FS_MEDIA_TYPE_VIDEO) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
455 if (direction & FS_DIRECTION_SEND) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
456 result |= PURPLE_MEDIA_SEND_VIDEO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
457 if (direction & FS_DIRECTION_RECV) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
458 result |= PURPLE_MEDIA_RECV_VIDEO; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
459 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
460 return result; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
461 } |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
462 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
463 static FsCandidate * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
464 candidate_to_fs(PurpleMediaCandidate *candidate) |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
465 { |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
466 FsCandidate *fscandidate; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
467 gchar *foundation; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
468 guint component_id; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
469 gchar *ip; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
470 guint port; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
471 gchar *base_ip; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
472 guint base_port; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
473 PurpleMediaNetworkProtocol proto; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
474 guint32 priority; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
475 PurpleMediaCandidateType type; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
476 gchar *username; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
477 gchar *password; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
478 guint ttl; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
479 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
480 if (candidate == NULL) |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
481 return NULL; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
482 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
483 g_object_get(G_OBJECT(candidate), |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
484 "foundation", &foundation, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
485 "component-id", &component_id, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
486 "ip", &ip, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
487 "port", &port, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
488 "base-ip", &base_ip, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
489 "base-port", &base_port, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
490 "protocol", &proto, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
491 "priority", &priority, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
492 "type", &type, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
493 "username", &username, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
494 "password", &password, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
495 "ttl", &ttl, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
496 NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
497 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
498 fscandidate = fs_candidate_new(foundation, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
499 component_id, type, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
500 proto, ip, port); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
501 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
502 fscandidate->base_ip = base_ip; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
503 fscandidate->base_port = base_port; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
504 fscandidate->priority = priority; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
505 fscandidate->username = username; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
506 fscandidate->password = password; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
507 fscandidate->ttl = ttl; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
508 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
509 g_free(foundation); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
510 g_free(ip); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
511 return fscandidate; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
512 } |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
513 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
514 static GList * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
515 candidate_list_to_fs(GList *candidates) |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
516 { |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
517 GList *new_list = NULL; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
518 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
519 for (; candidates; candidates = g_list_next(candidates)) { |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
520 new_list = g_list_prepend(new_list, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
521 candidate_to_fs(candidates->data)); |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
522 } |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
523 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
524 new_list = g_list_reverse(new_list); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
525 return new_list; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
526 } |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
527 |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
528 static PurpleMediaCandidate * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
529 candidate_from_fs(FsCandidate *fscandidate) |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
530 { |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
531 PurpleMediaCandidate *candidate; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
532 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
533 if (fscandidate == NULL) |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
534 return NULL; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
535 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
536 candidate = purple_media_candidate_new(fscandidate->foundation, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
537 fscandidate->component_id, fscandidate->type, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
538 fscandidate->proto, fscandidate->ip, fscandidate->port); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
539 g_object_set(candidate, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
540 "base-ip", fscandidate->base_ip, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
541 "base-port", fscandidate->base_port, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
542 "priority", fscandidate->priority, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
543 "username", fscandidate->username, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
544 "password", fscandidate->password, |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
545 "ttl", fscandidate->ttl, NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
546 return candidate; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
547 } |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
548 |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
549 static GList * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
550 candidate_list_from_fs(GList *candidates) |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
551 { |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
552 GList *new_list = NULL; |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
553 |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
554 for (; candidates; candidates = g_list_next(candidates)) { |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
555 new_list = g_list_prepend(new_list, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
556 candidate_from_fs(candidates->data)); |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
557 } |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
558 |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
559 new_list = g_list_reverse(new_list); |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
560 return new_list; |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
561 } |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
562 |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
563 static FsCodec * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
564 codec_to_fs(const PurpleMediaCodec *codec) |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
565 { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
566 FsCodec *new_codec; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
567 gint id; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
568 char *encoding_name; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
569 PurpleMediaSessionType media_type; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
570 guint clock_rate; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
571 guint channels; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
572 GList *iter; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
573 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
574 if (codec == NULL) |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
575 return NULL; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
576 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
577 g_object_get(G_OBJECT(codec), |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
578 "id", &id, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
579 "encoding-name", &encoding_name, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
580 "media-type", &media_type, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
581 "clock-rate", &clock_rate, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
582 "channels", &channels, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
583 "optional-params", &iter, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
584 NULL); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
585 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
586 new_codec = fs_codec_new(id, encoding_name, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
587 session_type_to_fs_media_type(media_type), |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
588 clock_rate); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
589 new_codec->channels = channels; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
590 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
591 for (; iter; iter = g_list_next(iter)) { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
592 PurpleKeyValuePair *param = (PurpleKeyValuePair*)iter->data; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
593 fs_codec_add_optional_parameter(new_codec, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
594 param->key, param->value); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
595 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
596 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
597 g_free(encoding_name); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
598 return new_codec; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
599 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
600 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
601 static PurpleMediaCodec * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
602 codec_from_fs(const FsCodec *codec) |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
603 { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
604 PurpleMediaCodec *new_codec; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
605 GList *iter; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
606 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
607 if (codec == NULL) |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
608 return NULL; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
609 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
610 new_codec = purple_media_codec_new(codec->id, codec->encoding_name, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
611 session_type_from_fs(codec->media_type, |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
612 FS_DIRECTION_BOTH), codec->clock_rate); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
613 g_object_set(new_codec, "channels", codec->channels, NULL); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
614 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
615 for (iter = codec->optional_params; iter; iter = g_list_next(iter)) { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
616 FsCodecParameter *param = (FsCodecParameter*)iter->data; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
617 purple_media_codec_add_optional_parameter(new_codec, |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
618 param->name, param->value); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
619 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
620 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
621 return new_codec; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
622 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
623 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
624 static GList * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
625 codec_list_from_fs(GList *codecs) |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
626 { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
627 GList *new_list = NULL; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
628 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
629 for (; codecs; codecs = g_list_next(codecs)) { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
630 new_list = g_list_prepend(new_list, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
631 codec_from_fs(codecs->data)); |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
632 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
633 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
634 new_list = g_list_reverse(new_list); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
635 return new_list; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
636 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
637 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
638 static GList * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
639 codec_list_to_fs(GList *codecs) |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
640 { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
641 GList *new_list = NULL; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
642 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
643 for (; codecs; codecs = g_list_next(codecs)) { |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
644 new_list = g_list_prepend(new_list, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
645 codec_to_fs(codecs->data)); |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
646 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
647 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
648 new_list = g_list_reverse(new_list); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
649 return new_list; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
650 } |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
651 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
652 static PurpleMediaBackendFs2Session * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
653 get_session(PurpleMediaBackendFs2 *self, const gchar *sess_id) |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
654 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
655 PurpleMediaBackendFs2Private *priv; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
656 PurpleMediaBackendFs2Session *session = NULL; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
657 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
658 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
659 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
660 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
661 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
662 if (priv->sessions != NULL) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
663 session = g_hash_table_lookup(priv->sessions, sess_id); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
664 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
665 return session; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
666 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
667 |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
668 static FsParticipant * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
669 get_participant(PurpleMediaBackendFs2 *self, const gchar *name) |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
670 { |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
671 PurpleMediaBackendFs2Private *priv; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
672 FsParticipant *participant = NULL; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
673 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
674 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
675 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
676 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
677 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
678 if (priv->participants != NULL) |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
679 participant = g_hash_table_lookup(priv->participants, name); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
680 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
681 return participant; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
682 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
683 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
684 static PurpleMediaBackendFs2Stream * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
685 get_stream(PurpleMediaBackendFs2 *self, |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
686 const gchar *sess_id, const gchar *name) |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
687 { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
688 PurpleMediaBackendFs2Private *priv; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
689 GList *streams; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
690 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
691 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
692 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
693 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
694 streams = priv->streams; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
695 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
696 for (; streams; streams = g_list_next(streams)) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
697 PurpleMediaBackendFs2Stream *stream = streams->data; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
698 if (!strcmp(stream->session->id, sess_id) && |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
699 !strcmp(stream->participant, name)) |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
700 return stream; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
701 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
702 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
703 return NULL; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
704 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
705 |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
706 static GList * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
707 get_streams(PurpleMediaBackendFs2 *self, |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
708 const gchar *sess_id, const gchar *name) |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
709 { |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
710 PurpleMediaBackendFs2Private *priv; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
711 GList *streams, *ret = NULL; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
712 |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
713 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
714 |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
715 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
716 streams = priv->streams; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
717 |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
718 for (; streams; streams = g_list_next(streams)) { |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
719 PurpleMediaBackendFs2Stream *stream = streams->data; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
720 |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
721 if (sess_id != NULL && strcmp(stream->session->id, sess_id)) |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
722 continue; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
723 else if (name != NULL && strcmp(stream->participant, name)) |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
724 continue; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
725 else |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
726 ret = g_list_prepend(ret, stream); |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
727 } |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
728 |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
729 ret = g_list_reverse(ret); |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
730 return ret; |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
731 } |
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
732 |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
733 static PurpleMediaBackendFs2Session * |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
734 get_session_from_fs_stream(PurpleMediaBackendFs2 *self, FsStream *stream) |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
735 { |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
736 PurpleMediaBackendFs2Private *priv = |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
737 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
738 FsSession *fssession; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
739 GList *values; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
740 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
741 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
742 g_return_val_if_fail(FS_IS_STREAM(stream), NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
743 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
744 g_object_get(stream, "session", &fssession, NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
745 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
746 values = g_hash_table_get_values(priv->sessions); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
747 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
748 for (; values; values = g_list_delete_link(values, values)) { |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
749 PurpleMediaBackendFs2Session *session = values->data; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
750 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
751 if (session->session == fssession) { |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
752 g_list_free(values); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
753 g_object_unref(fssession); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
754 return session; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
755 } |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
756 } |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
757 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
758 g_object_unref(fssession); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
759 return NULL; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
760 } |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
761 |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
762 static gdouble |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
763 gst_msg_db_to_percent(GstMessage *msg, gchar *value_name) |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
764 { |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
765 const GValue *list; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
766 const GValue *value; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
767 gdouble value_db; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
768 gdouble percent; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
769 |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
770 list = gst_structure_get_value( |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
771 gst_message_get_structure(msg), value_name); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
772 value = gst_value_list_get_value(list, 0); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
773 value_db = g_value_get_double(value); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
774 percent = pow(10, value_db / 20); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
775 return (percent > 1.0) ? 1.0 : percent; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
776 } |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
777 |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
778 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
779 gst_handle_message_element(GstBus *bus, GstMessage *msg, |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
780 PurpleMediaBackendFs2 *self) |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
781 { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
782 PurpleMediaBackendFs2Private *priv = |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
783 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
784 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
785 static guint level_id = 0; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
786 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
787 if (level_id == 0) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
788 level_id = g_signal_lookup("level", PURPLE_TYPE_MEDIA); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
789 |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
790 if (gst_structure_has_name(msg->structure, "level")) { |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
791 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
792 gchar *name; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
793 gchar *participant = NULL; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
794 PurpleMediaBackendFs2Session *session = NULL; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
795 gdouble percent; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
796 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
797 if (!PURPLE_IS_MEDIA(priv->media) || |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
798 GST_ELEMENT_PARENT(src) != priv->confbin) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
799 return; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
800 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
801 name = gst_element_get_name(src); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
802 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
803 if (!strncmp(name, "sendlevel_", 10)) { |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
804 session = get_session(self, name+10); |
31824
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
805 if (priv->silence_threshold > 0) { |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
806 percent = gst_msg_db_to_percent(msg, "decay"); |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
807 g_object_set(session->srcvalve, |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
808 "drop", (percent < priv->silence_threshold), NULL); |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
809 } |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
810 } |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
811 |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
812 g_free(name); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
813 |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
814 if (!g_signal_has_handler_pending(priv->media, level_id, 0, FALSE)) |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
815 return; |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
816 |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
817 if (!session) { |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
818 GList *iter = priv->streams; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
819 PurpleMediaBackendFs2Stream *stream; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
820 for (; iter; iter = g_list_next(iter)) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
821 stream = iter->data; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
822 if (stream->level == src) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
823 session = stream->session; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
824 participant = stream->participant; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
825 break; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
826 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
827 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
828 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
829 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
830 if (!session) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
831 return; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
832 |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
833 percent = gst_msg_db_to_percent(msg, "rms"); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
834 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
835 g_signal_emit(priv->media, level_id, 0, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
836 session->id, participant, percent); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
837 return; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
838 } |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
839 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
840 if (!FS_IS_CONFERENCE(src) || !PURPLE_IS_MEDIA_BACKEND(self) || |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
841 priv->conference != FS_CONFERENCE(src)) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
842 return; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
843 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
844 if (gst_structure_has_name(msg->structure, "farsight-error")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
845 FsError error_no; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
846 gst_structure_get_enum(msg->structure, "error-no", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
847 FS_TYPE_ERROR, (gint*)&error_no); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
848 switch (error_no) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
849 case FS_ERROR_NO_CODECS: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
850 purple_media_error(priv->media, _("No codecs" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
851 " found. Install some" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
852 " GStreamer codecs found" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
853 " in GStreamer plugins" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
854 " packages.")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
855 purple_media_end(priv->media, NULL, NULL); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
856 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
857 case FS_ERROR_NO_CODECS_LEFT: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
858 purple_media_error(priv->media, _("No codecs" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
859 " left. Your codec" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
860 " preferences in" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
861 " fs-codecs.conf are too" |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
862 " strict.")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
863 purple_media_end(priv->media, NULL, NULL); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
864 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
865 case FS_ERROR_UNKNOWN_CNAME: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
866 /* |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
867 * Unknown CName is only a problem for the |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
868 * multicast transmitter which isn't used. |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
869 * It is also deprecated. |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
870 */ |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
871 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
872 default: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
873 purple_debug_error("backend-fs2", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
874 "farsight-error: %i: %s\n", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
875 error_no, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
876 gst_structure_get_string( |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
877 msg->structure, "error-msg")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
878 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
879 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
880 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
881 if (FS_ERROR_IS_FATAL(error_no)) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
882 purple_media_error(priv->media, _("A non-recoverable " |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
883 "Farsight2 error has occurred.")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
884 purple_media_end(priv->media, NULL, NULL); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
885 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
886 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
887 "farsight-new-local-candidate")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
888 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
889 FsStream *stream; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
890 FsCandidate *local_candidate; |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
891 PurpleMediaCandidate *candidate; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
892 FsParticipant *participant; |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
893 PurpleMediaBackendFs2Session *session; |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
894 PurpleMediaBackendFs2Stream *media_stream; |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
895 gchar *name; |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
896 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
897 value = gst_structure_get_value(msg->structure, "stream"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
898 stream = g_value_get_object(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
899 value = gst_structure_get_value(msg->structure, "candidate"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
900 local_candidate = g_value_get_boxed(value); |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
901 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
902 session = get_session_from_fs_stream(self, stream); |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
903 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
904 purple_debug_info("backend-fs2", |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
905 "got new local candidate: %s\n", |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
906 local_candidate->foundation); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
907 |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
908 g_object_get(stream, "participant", &participant, NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
909 g_object_get(participant, "cname", &name, NULL); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
910 g_object_unref(participant); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
911 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
912 media_stream = get_stream(self, session->id, name); |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
913 media_stream->local_candidates = g_list_append( |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
914 media_stream->local_candidates, |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
915 fs_candidate_copy(local_candidate)); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
916 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
917 candidate = candidate_from_fs(local_candidate); |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
918 g_signal_emit_by_name(self, "new-candidate", |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
919 session->id, name, candidate); |
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
920 g_object_unref(candidate); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
921 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
922 "farsight-local-candidates-prepared")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
923 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
924 FsStream *stream; |
29557
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
925 FsParticipant *participant; |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
926 PurpleMediaBackendFs2Session *session; |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
927 gchar *name; |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
928 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
929 value = gst_structure_get_value(msg->structure, "stream"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
930 stream = g_value_get_object(value); |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
931 session = get_session_from_fs_stream(self, stream); |
29557
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
932 |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
933 g_object_get(stream, "participant", &participant, NULL); |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
934 g_object_get(participant, "cname", &name, NULL); |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
935 g_object_unref(participant); |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
936 |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
937 g_signal_emit_by_name(self, "candidates-prepared", |
1fdc75c94c22
Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents:
29556
diff
changeset
|
938 session->id, name); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
939 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
940 "farsight-new-active-candidate-pair")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
941 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
942 FsStream *stream; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
943 FsCandidate *local_candidate; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
944 FsCandidate *remote_candidate; |
29556
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
945 FsParticipant *participant; |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
946 PurpleMediaBackendFs2Session *session; |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
947 PurpleMediaCandidate *lcandidate, *rcandidate; |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
948 gchar *name; |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
949 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
950 value = gst_structure_get_value(msg->structure, "stream"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
951 stream = g_value_get_object(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
952 value = gst_structure_get_value(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
953 "local-candidate"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
954 local_candidate = g_value_get_boxed(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
955 value = gst_structure_get_value(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
956 "remote-candidate"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
957 remote_candidate = g_value_get_boxed(value); |
29556
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
958 |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
959 g_object_get(stream, "participant", &participant, NULL); |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
960 g_object_get(participant, "cname", &name, NULL); |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
961 g_object_unref(participant); |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
962 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
963 session = get_session_from_fs_stream(self, stream); |
29556
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
964 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
965 lcandidate = candidate_from_fs(local_candidate); |
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
966 rcandidate = candidate_from_fs(remote_candidate); |
29556
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
967 |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
968 g_signal_emit_by_name(self, "active-candidate-pair", |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
969 session->id, name, lcandidate, rcandidate); |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
970 |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
971 g_object_unref(lcandidate); |
74e75fc3481e
Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents:
29555
diff
changeset
|
972 g_object_unref(rcandidate); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
973 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
974 "farsight-recv-codecs-changed")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
975 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
976 GList *codecs; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
977 FsCodec *codec; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
978 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
979 value = gst_structure_get_value(msg->structure, "codecs"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
980 codecs = g_value_get_boxed(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
981 codec = codecs->data; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
982 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
983 purple_debug_info("backend-fs2", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
984 "farsight-recv-codecs-changed: %s\n", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
985 codec->encoding_name); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
986 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
987 "farsight-component-state-changed")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
988 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
989 FsStreamState fsstate; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
990 guint component; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
991 const gchar *state; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
992 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
993 value = gst_structure_get_value(msg->structure, "state"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
994 fsstate = g_value_get_enum(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
995 value = gst_structure_get_value(msg->structure, "component"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
996 component = g_value_get_uint(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
997 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
998 switch (fsstate) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
999 case FS_STREAM_STATE_FAILED: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1000 state = "FAILED"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1001 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1002 case FS_STREAM_STATE_DISCONNECTED: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1003 state = "DISCONNECTED"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1004 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1005 case FS_STREAM_STATE_GATHERING: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1006 state = "GATHERING"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1007 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1008 case FS_STREAM_STATE_CONNECTING: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1009 state = "CONNECTING"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1010 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1011 case FS_STREAM_STATE_CONNECTED: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1012 state = "CONNECTED"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1013 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1014 case FS_STREAM_STATE_READY: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1015 state = "READY"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1016 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1017 default: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1018 state = "UNKNOWN"; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1019 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1020 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1021 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1022 purple_debug_info("backend-fs2", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1023 "farsight-component-state-changed: " |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1024 "component: %u state: %s\n", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1025 component, state); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1026 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1027 "farsight-send-codec-changed")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1028 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1029 FsCodec *codec; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1030 gchar *codec_str; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1031 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1032 value = gst_structure_get_value(msg->structure, "codec"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1033 codec = g_value_get_boxed(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1034 codec_str = fs_codec_to_string(codec); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1035 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1036 purple_debug_info("backend-fs2", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1037 "farsight-send-codec-changed: codec: %s\n", |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1038 codec_str); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1039 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1040 g_free(codec_str); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1041 } else if (gst_structure_has_name(msg->structure, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1042 "farsight-codecs-changed")) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1043 const GValue *value; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1044 FsSession *fssession; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1045 GList *sessions; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1046 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1047 value = gst_structure_get_value(msg->structure, "session"); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1048 fssession = g_value_get_object(value); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1049 sessions = g_hash_table_get_values(priv->sessions); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1050 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1051 for (; sessions; sessions = |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1052 g_list_delete_link(sessions, sessions)) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1053 PurpleMediaBackendFs2Session *session = sessions->data; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1054 gchar *session_id; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1055 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1056 if (session->session != fssession) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1057 continue; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1058 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1059 session_id = g_strdup(session->id); |
29555
cc978a1a4bd1
Move handling Farsight 2's codecs-changed signal into the Fs2 media backend.
maiku@pidgin.im
parents:
29554
diff
changeset
|
1060 g_signal_emit_by_name(self, "codecs-changed", |
cc978a1a4bd1
Move handling Farsight 2's codecs-changed signal into the Fs2 media backend.
maiku@pidgin.im
parents:
29554
diff
changeset
|
1061 session_id); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1062 g_free(session_id); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1063 g_list_free(sessions); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1064 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1065 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1066 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1067 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1068 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1069 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1070 gst_handle_message_error(GstBus *bus, GstMessage *msg, |
29554
2460e6774e08
Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents:
29553
diff
changeset
|
1071 PurpleMediaBackendFs2 *self) |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1072 { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1073 PurpleMediaBackendFs2Private *priv = |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1074 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1075 GstElement *element = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1076 GstElement *lastElement = NULL; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1077 GList *sessions; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1078 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1079 while (!GST_IS_PIPELINE(element)) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1080 if (element == priv->confbin) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1081 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1082 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1083 lastElement = element; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1084 element = GST_ELEMENT_PARENT(element); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1085 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1086 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1087 if (!GST_IS_PIPELINE(element)) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1088 return; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1089 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1090 sessions = purple_media_get_session_ids(priv->media); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1091 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1092 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1093 if (purple_media_get_src(priv->media, sessions->data) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1094 != lastElement) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1095 continue; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1096 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1097 if (purple_media_get_session_type(priv->media, sessions->data) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1098 & PURPLE_MEDIA_AUDIO) |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1099 purple_media_error(priv->media, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1100 _("Error with your microphone")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1101 else |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1102 purple_media_error(priv->media, |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1103 _("Error with your webcam")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1104 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1105 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1106 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1107 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1108 g_list_free(sessions); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1109 |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1110 purple_media_error(priv->media, _("Conference error")); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1111 purple_media_end(priv->media, NULL, NULL); |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1112 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1113 |
29540 | 1114 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1115 gst_bus_cb(GstBus *bus, GstMessage *msg, PurpleMediaBackendFs2 *self) |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1116 { |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1117 switch(GST_MESSAGE_TYPE(msg)) { |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1118 case GST_MESSAGE_ELEMENT: |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1119 gst_handle_message_element(bus, msg, self); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1120 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1121 case GST_MESSAGE_ERROR: |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1122 gst_handle_message_error(bus, msg, self); |
29552
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1123 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1124 default: |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1125 break; |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1126 } |
ae81f8baa148
Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29548
diff
changeset
|
1127 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1128 return TRUE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1129 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1130 |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1131 static void |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1132 remove_element(GstElement *element) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1133 { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1134 if (element) { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1135 gst_element_set_locked_state(element, TRUE); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1136 gst_element_set_state(element, GST_STATE_NULL); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1137 gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(element)), element); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1138 } |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1139 } |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1140 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1141 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1142 state_changed_cb(PurpleMedia *media, PurpleMediaState state, |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1143 gchar *sid, gchar *name, PurpleMediaBackendFs2 *self) |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1144 { |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1145 if (state == PURPLE_MEDIA_STATE_END) { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1146 PurpleMediaBackendFs2Private *priv = |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1147 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1148 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1149 if (sid && name) { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1150 PurpleMediaBackendFs2Stream *stream = get_stream(self, sid, name); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1151 gst_object_unref(stream->stream); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1152 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1153 priv->streams = g_list_remove(priv->streams, stream); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1154 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1155 remove_element(stream->src); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1156 remove_element(stream->tee); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1157 remove_element(stream->volume); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1158 remove_element(stream->level); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1159 remove_element(stream->fakesink); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1160 remove_element(stream->queue); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1161 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1162 free_stream(stream); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1163 } else if (sid && !name) { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1164 PurpleMediaBackendFs2Session *session = get_session(self, sid); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1165 GstPad *pad; |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1166 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1167 g_object_get(session->session, "sink-pad", &pad, NULL); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1168 gst_pad_unlink(GST_PAD_PEER(pad), pad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1169 gst_object_unref(pad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1170 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1171 gst_object_unref(session->session); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1172 g_hash_table_remove(priv->sessions, session->id); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1173 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1174 pad = gst_pad_get_peer(session->srcpad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1175 gst_element_remove_pad(GST_ELEMENT_PARENT(pad), pad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1176 gst_object_unref(pad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1177 gst_object_unref(session->srcpad); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1178 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1179 remove_element(session->srcvalve); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1180 remove_element(session->tee); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1181 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1182 free_session(session); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1183 } |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1184 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1185 purple_media_manager_remove_output_windows( |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1186 purple_media_get_manager(media), media, sid, name); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1187 } |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1188 } |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1189 |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1190 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1191 stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type, |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1192 gchar *sid, gchar *name, gboolean local, |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1193 PurpleMediaBackendFs2 *self) |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1194 { |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1195 if (type == PURPLE_MEDIA_INFO_ACCEPT && sid != NULL && name != NULL) { |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1196 PurpleMediaBackendFs2Stream *stream = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1197 get_stream(self, sid, name); |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1198 GError *err = NULL; |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1199 |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1200 g_object_set(G_OBJECT(stream->stream), "direction", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1201 session_type_to_fs_stream_direction( |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1202 stream->session->type), NULL); |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1203 |
29633
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1204 if (stream->remote_candidates == NULL || |
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1205 purple_media_is_initiator(media, sid, name)) |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1206 return; |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1207 |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1208 fs_stream_set_remote_candidates(stream->stream, |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1209 stream->remote_candidates, &err); |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1210 |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1211 if (err == NULL) |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1212 return; |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1213 |
29603
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1214 purple_debug_error("backend-fs2", "Error adding " |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1215 "remote candidates: %s\n", |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1216 err->message); |
d510b0324721
Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents:
29602
diff
changeset
|
1217 g_error_free(err); |
29587
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1218 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_MUTE || |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1219 type == PURPLE_MEDIA_INFO_UNMUTE)) { |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1220 PurpleMediaBackendFs2Private *priv = |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1221 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1222 gboolean active = (type == PURPLE_MEDIA_INFO_MUTE); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1223 GList *sessions; |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1224 |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1225 if (sid == NULL) |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1226 sessions = g_hash_table_get_values(priv->sessions); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1227 else |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1228 sessions = g_list_prepend(NULL, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1229 get_session(self, sid)); |
29587
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1230 |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1231 purple_debug_info("media", "Turning mute %s\n", |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1232 active ? "on" : "off"); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1233 |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1234 for (; sessions; sessions = g_list_delete_link( |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1235 sessions, sessions)) { |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1236 PurpleMediaBackendFs2Session *session = |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1237 sessions->data; |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1238 |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1239 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1240 gchar *name = g_strdup_printf("volume_%s", |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1241 session->id); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1242 GstElement *volume = gst_bin_get_by_name( |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1243 GST_BIN(priv->confbin), name); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1244 g_free(name); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1245 g_object_set(volume, "mute", active, NULL); |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1246 } |
bd6279df50de
Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents:
29585
diff
changeset
|
1247 } |
31523
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1248 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_HOLD || |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1249 type == PURPLE_MEDIA_INFO_UNHOLD)) { |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1250 gboolean active = (type == PURPLE_MEDIA_INFO_HOLD); |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1251 GList *streams = get_streams(self, sid, name); |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1252 for (; streams; streams = |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1253 g_list_delete_link(streams, streams)) { |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1254 PurpleMediaBackendFs2Stream *stream = streams->data; |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1255 if (stream->session->type & PURPLE_MEDIA_SEND_AUDIO) { |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1256 g_object_set(stream->stream, "direction", |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1257 session_type_to_fs_stream_direction( |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1258 stream->session->type & ((active) ? |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1259 ~PURPLE_MEDIA_SEND_AUDIO : |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1260 PURPLE_MEDIA_AUDIO)), NULL); |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1261 } |
a202f4dcbb96
Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents:
30961
diff
changeset
|
1262 } |
29578
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1263 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_PAUSE || |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1264 type == PURPLE_MEDIA_INFO_UNPAUSE)) { |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1265 gboolean active = (type == PURPLE_MEDIA_INFO_PAUSE); |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1266 GList *streams = get_streams(self, sid, name); |
29578
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1267 for (; streams; streams = |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1268 g_list_delete_link(streams, streams)) { |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1269 PurpleMediaBackendFs2Stream *stream = streams->data; |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1270 if (stream->session->type & PURPLE_MEDIA_SEND_VIDEO) { |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1271 g_object_set(stream->stream, "direction", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1272 session_type_to_fs_stream_direction( |
29578
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1273 stream->session->type & ((active) ? |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1274 ~PURPLE_MEDIA_SEND_VIDEO : |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1275 PURPLE_MEDIA_VIDEO)), NULL); |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1276 } |
dfc724880907
Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29577
diff
changeset
|
1277 } |
29576
a27e41f373db
Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents:
29575
diff
changeset
|
1278 } |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1279 } |
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1280 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1281 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1282 init_conference(PurpleMediaBackendFs2 *self) |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1283 { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1284 PurpleMediaBackendFs2Private *priv = |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1285 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1286 GstElement *pipeline; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1287 GstBus *bus; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1288 gchar *name; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1289 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1290 priv->conference = FS_CONFERENCE( |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1291 gst_element_factory_make(priv->conference_type, NULL)); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1292 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1293 if (priv->conference == NULL) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1294 purple_debug_error("backend-fs2", "Conference == NULL\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1295 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1296 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1297 |
31824
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1298 if (purple_account_get_silence_suppression( |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1299 purple_media_get_account(priv->media))) |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1300 priv->silence_threshold = purple_prefs_get_int( |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1301 "/purple/media/audio/silence_threshold") / 100.0; |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1302 else |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1303 priv->silence_threshold = 0; |
4f2aac5967bb
Make the simple silence suppression stuff optional per-account. Fixes #13180.
jakub.adam@ktknet.cz
parents:
31805
diff
changeset
|
1304 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1305 pipeline = purple_media_manager_get_pipeline( |
29548
2f8151fed0ae
Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents:
29543
diff
changeset
|
1306 purple_media_get_manager(priv->media)); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1307 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1308 if (pipeline == NULL) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1309 purple_debug_error("backend-fs2", |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1310 "Couldn't retrieve pipeline.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1311 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1312 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1313 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1314 name = g_strdup_printf("conf_%p", priv->conference); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1315 priv->confbin = gst_bin_new(name); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1316 if (priv->confbin == NULL) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1317 purple_debug_error("backend-fs2", |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1318 "Couldn't create confbin.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1319 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1320 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1321 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1322 g_free(name); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1323 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1324 bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1325 if (bus == NULL) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1326 purple_debug_error("backend-fs2", |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1327 "Couldn't get the pipeline's bus.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1328 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1329 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1330 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1331 g_signal_connect(G_OBJECT(bus), "message", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1332 G_CALLBACK(gst_bus_cb), self); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1333 gst_object_unref(bus); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1334 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1335 if (!gst_bin_add(GST_BIN(pipeline), |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1336 GST_ELEMENT(priv->confbin))) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1337 purple_debug_error("backend-fs2", "Couldn't add confbin " |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1338 "element to the pipeline\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1339 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1340 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1341 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1342 if (!gst_bin_add(GST_BIN(priv->confbin), |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1343 GST_ELEMENT(priv->conference))) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1344 purple_debug_error("backend-fs2", "Couldn't add conference " |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1345 "element to the confbin\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1346 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1347 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1348 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1349 if (gst_element_set_state(GST_ELEMENT(priv->confbin), |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1350 GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) { |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1351 purple_debug_error("backend-fs2", |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1352 "Failed to start conference.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1353 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1354 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1355 |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1356 return TRUE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1357 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1358 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1359 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1360 gst_element_added_cb(FsElementAddedNotifier *self, |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1361 GstBin *bin, GstElement *element, gpointer user_data) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1362 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1363 /* |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1364 * Hack to make H264 work with Gmail video. |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1365 */ |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1366 if (!strncmp(GST_ELEMENT_NAME(element), "x264", 4)) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1367 g_object_set(GST_OBJECT(element), "cabac", FALSE, NULL); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1368 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1369 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1370 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1371 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1372 create_src(PurpleMediaBackendFs2 *self, const gchar *sess_id, |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1373 PurpleMediaSessionType type) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1374 { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1375 PurpleMediaBackendFs2Private *priv = |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1376 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1377 PurpleMediaBackendFs2Session *session; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1378 PurpleMediaSessionType session_type; |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1379 FsMediaType media_type = session_type_to_fs_media_type(type); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1380 FsStreamDirection type_direction = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1381 session_type_to_fs_stream_direction(type); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1382 GstElement *src; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1383 GstPad *sinkpad, *srcpad; |
31553 | 1384 GstPad *ghost = NULL; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1385 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1386 if ((type_direction & FS_DIRECTION_SEND) == 0) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1387 return TRUE; |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1388 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1389 session_type = session_type_from_fs( |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1390 media_type, FS_DIRECTION_SEND); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1391 src = purple_media_manager_get_element( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1392 purple_media_get_manager(priv->media), |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1393 session_type, priv->media, sess_id, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1394 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1395 if (!GST_IS_ELEMENT(src)) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1396 purple_debug_error("backend-fs2", |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1397 "Error creating src for session %s\n", |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1398 sess_id); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1399 return FALSE; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1400 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1401 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1402 session = get_session(self, sess_id); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1403 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1404 if (session == NULL) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1405 purple_debug_warning("backend-fs2", |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1406 "purple_media_set_src: trying to set" |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1407 " src on non-existent session\n"); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1408 return FALSE; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1409 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1410 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1411 if (session->src) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1412 gst_object_unref(session->src); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1413 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1414 session->src = src; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1415 gst_element_set_locked_state(session->src, TRUE); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1416 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1417 session->tee = gst_element_factory_make("tee", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1418 gst_bin_add(GST_BIN(priv->confbin), session->tee); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1419 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1420 /* This supposedly isn't necessary, but it silences some warnings */ |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1421 if (GST_ELEMENT_PARENT(priv->confbin) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1422 == GST_ELEMENT_PARENT(session->src)) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1423 GstPad *pad = gst_element_get_static_pad(session->tee, "sink"); |
31553 | 1424 ghost = gst_ghost_pad_new(NULL, pad); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1425 gst_object_unref(pad); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1426 gst_pad_set_active(ghost, TRUE); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1427 gst_element_add_pad(priv->confbin, ghost); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1428 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1429 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1430 gst_element_set_state(session->tee, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1431 gst_element_link(session->src, priv->confbin); |
31553 | 1432 if (ghost) |
1433 session->srcpad = gst_pad_get_peer(ghost); | |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1434 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1435 g_object_get(session->session, "sink-pad", &sinkpad, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1436 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1437 gchar *name = g_strdup_printf("volume_%s", session->id); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1438 GstElement *level; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1439 GstElement *volume = gst_element_factory_make("volume", name); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1440 double input_volume = purple_prefs_get_int( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1441 "/purple/media/audio/volume/input")/10.0; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1442 g_free(name); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1443 name = g_strdup_printf("sendlevel_%s", session->id); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1444 level = gst_element_factory_make("level", name); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1445 g_free(name); |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
1446 session->srcvalve = gst_element_factory_make("valve", NULL); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1447 gst_bin_add(GST_BIN(priv->confbin), volume); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1448 gst_bin_add(GST_BIN(priv->confbin), level); |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
1449 gst_bin_add(GST_BIN(priv->confbin), session->srcvalve); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1450 gst_element_set_state(level, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1451 gst_element_set_state(volume, GST_STATE_PLAYING); |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
1452 gst_element_set_state(session->srcvalve, GST_STATE_PLAYING); |
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
1453 gst_element_link(level, session->srcvalve); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1454 gst_element_link(volume, level); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1455 gst_element_link(session->tee, volume); |
31805
017b7ff5a894
During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents:
31600
diff
changeset
|
1456 srcpad = gst_element_get_static_pad(session->srcvalve, "src"); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1457 g_object_set(volume, "volume", input_volume, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1458 } else { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1459 srcpad = gst_element_get_request_pad(session->tee, "src%d"); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1460 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1461 |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1462 purple_debug_info("backend-fs2", "connecting pad: %s\n", |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1463 gst_pad_link(srcpad, sinkpad) == GST_PAD_LINK_OK |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1464 ? "success" : "failure"); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1465 gst_element_set_locked_state(session->src, FALSE); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1466 gst_object_unref(session->src); |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1467 gst_object_unref(sinkpad); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1468 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1469 gst_element_set_state(session->src, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1470 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1471 purple_media_manager_create_output_window(purple_media_get_manager( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1472 priv->media), priv->media, sess_id, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1473 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1474 return TRUE; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1475 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1476 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1477 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1478 create_session(PurpleMediaBackendFs2 *self, const gchar *sess_id, |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1479 PurpleMediaSessionType type, gboolean initiator, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1480 const gchar *transmitter) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1481 { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1482 PurpleMediaBackendFs2Private *priv = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1483 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1484 PurpleMediaBackendFs2Session *session; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1485 GError *err = NULL; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1486 GList *codec_conf = NULL, *iter = NULL; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1487 gchar *filename = NULL; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1488 gboolean is_nice = !strcmp(transmitter, "nice"); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1489 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1490 session = g_new0(PurpleMediaBackendFs2Session, 1); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1491 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1492 session->session = fs_conference_new_session(priv->conference, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1493 session_type_to_fs_media_type(type), &err); |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1494 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1495 if (err != NULL) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1496 purple_media_error(priv->media, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1497 _("Error creating session: %s"), |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1498 err->message); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1499 g_error_free(err); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1500 g_free(session); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1501 return FALSE; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1502 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1503 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1504 filename = g_build_filename(purple_user_dir(), "fs-codec.conf", NULL); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1505 codec_conf = fs_codec_list_from_keyfile(filename, &err); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1506 g_free(filename); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1507 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1508 if (err != NULL) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1509 if (err->code == 4) |
29564 | 1510 purple_debug_info("backend-fs2", "Couldn't read " |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1511 "fs-codec.conf: %s\n", |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1512 err->message); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1513 else |
29564 | 1514 purple_debug_error("backend-fs2", "Error reading " |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1515 "fs-codec.conf: %s\n", |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1516 err->message); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1517 g_error_free(err); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1518 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1519 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1520 /* |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1521 * Add SPEEX if the configuration file doesn't exist or |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1522 * there isn't a speex entry. |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1523 */ |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1524 for (iter = codec_conf; iter; iter = g_list_next(iter)) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1525 FsCodec *codec = iter->data; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1526 if (!g_ascii_strcasecmp(codec->encoding_name, "speex")) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1527 break; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1528 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1529 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1530 if (iter == NULL) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1531 codec_conf = g_list_prepend(codec_conf, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1532 fs_codec_new(FS_CODEC_ID_ANY, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1533 "SPEEX", FS_MEDIA_TYPE_AUDIO, 8000)); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1534 codec_conf = g_list_prepend(codec_conf, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1535 fs_codec_new(FS_CODEC_ID_ANY, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1536 "SPEEX", FS_MEDIA_TYPE_AUDIO, 16000)); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1537 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1538 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1539 fs_session_set_codec_preferences(session->session, codec_conf, NULL); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1540 fs_codec_list_destroy(codec_conf); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1541 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1542 /* |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1543 * Removes a 5-7 second delay before |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1544 * receiving the src-pad-added signal. |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1545 * Only works for non-multicast FsRtpSessions. |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1546 */ |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1547 if (is_nice || !strcmp(transmitter, "rawudp")) |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1548 g_object_set(G_OBJECT(session->session), |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1549 "no-rtcp-timeout", 0, NULL); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1550 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1551 /* |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1552 * Hack to make x264 work with Gmail video. |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1553 */ |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1554 if (is_nice && !strcmp(sess_id, "google-video")) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1555 FsElementAddedNotifier *notifier = |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1556 fs_element_added_notifier_new(); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1557 g_signal_connect(G_OBJECT(notifier), "element-added", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1558 G_CALLBACK(gst_element_added_cb), NULL); |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1559 fs_element_added_notifier_add(notifier, |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1560 GST_BIN(priv->conference)); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1561 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1562 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1563 session->id = g_strdup(sess_id); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1564 session->backend = self; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1565 session->type = type; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1566 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1567 if (!priv->sessions) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1568 purple_debug_info("backend-fs2", |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1569 "Creating hash table for sessions\n"); |
30872 | 1570 priv->sessions = g_hash_table_new_full(g_str_hash, g_str_equal, |
1571 g_free, NULL); | |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1572 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1573 |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1574 g_hash_table_insert(priv->sessions, g_strdup(session->id), session); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1575 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1576 if (!create_src(self, sess_id, type)) { |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1577 purple_debug_info("backend-fs2", "Error creating the src\n"); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1578 return FALSE; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1579 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1580 |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1581 return TRUE; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1582 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1583 |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1584 static void |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1585 free_session(PurpleMediaBackendFs2Session *session) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1586 { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1587 g_free(session->id); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1588 g_free(session); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1589 } |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1590 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1591 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1592 create_participant(PurpleMediaBackendFs2 *self, const gchar *name) |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1593 { |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1594 PurpleMediaBackendFs2Private *priv = |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1595 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1596 FsParticipant *participant; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1597 GError *err = NULL; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1598 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1599 participant = fs_conference_new_participant( |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1600 priv->conference, name, &err); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1601 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1602 if (err) { |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1603 purple_debug_error("backend-fs2", |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1604 "Error creating participant: %s\n", |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1605 err->message); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1606 g_error_free(err); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1607 return FALSE; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1608 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1609 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1610 if (!priv->participants) { |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1611 purple_debug_info("backend-fs2", |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1612 "Creating hash table for participants\n"); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1613 priv->participants = g_hash_table_new_full(g_str_hash, |
30872 | 1614 g_str_equal, g_free, g_object_unref); |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1615 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1616 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1617 g_hash_table_insert(priv->participants, g_strdup(name), participant); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1618 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1619 return TRUE; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1620 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1621 |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1622 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1623 src_pad_added_cb_cb(PurpleMediaBackendFs2Stream *stream) |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1624 { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1625 PurpleMediaBackendFs2Private *priv; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1626 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1627 g_return_val_if_fail(stream != NULL, FALSE); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1628 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1629 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(stream->session->backend); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1630 stream->connected_cb_id = 0; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1631 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1632 purple_media_manager_create_output_window( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1633 purple_media_get_manager(priv->media), priv->media, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1634 stream->session->id, stream->participant); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1635 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1636 g_signal_emit_by_name(priv->media, "state-changed", |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1637 PURPLE_MEDIA_STATE_CONNECTED, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1638 stream->session->id, stream->participant); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1639 return FALSE; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1640 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1641 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1642 static void |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1643 src_pad_added_cb(FsStream *fsstream, GstPad *srcpad, |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1644 FsCodec *codec, PurpleMediaBackendFs2Stream *stream) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1645 { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1646 PurpleMediaBackendFs2Private *priv; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1647 GstPad *sinkpad; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1648 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1649 g_return_if_fail(FS_IS_STREAM(fsstream)); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1650 g_return_if_fail(stream != NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1651 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1652 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(stream->session->backend); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1653 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1654 if (stream->src == NULL) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1655 GstElement *sink = NULL; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1656 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1657 if (codec->media_type == FS_MEDIA_TYPE_AUDIO) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1658 double output_volume = purple_prefs_get_int( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1659 "/purple/media/audio/volume/output")/10.0; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1660 /* |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1661 * Should this instead be: |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1662 * audioconvert ! audioresample ! liveadder ! |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1663 * audioresample ! audioconvert ! realsink |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1664 */ |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1665 stream->queue = gst_element_factory_make("queue", NULL); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1666 stream->volume = gst_element_factory_make( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1667 "volume", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1668 g_object_set(stream->volume, "volume", |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1669 output_volume, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1670 stream->level = gst_element_factory_make( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1671 "level", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1672 stream->src = gst_element_factory_make( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1673 "liveadder", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1674 sink = purple_media_manager_get_element( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1675 purple_media_get_manager(priv->media), |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1676 PURPLE_MEDIA_RECV_AUDIO, priv->media, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1677 stream->session->id, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1678 stream->participant); |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1679 gst_bin_add(GST_BIN(priv->confbin), stream->queue); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1680 gst_bin_add(GST_BIN(priv->confbin), stream->volume); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1681 gst_bin_add(GST_BIN(priv->confbin), stream->level); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1682 gst_bin_add(GST_BIN(priv->confbin), sink); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1683 gst_element_set_state(sink, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1684 gst_element_set_state(stream->level, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1685 gst_element_set_state(stream->volume, GST_STATE_PLAYING); |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1686 gst_element_set_state(stream->queue, GST_STATE_PLAYING); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1687 gst_element_link(stream->level, sink); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1688 gst_element_link(stream->volume, stream->level); |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1689 gst_element_link(stream->queue, stream->volume); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1690 sink = stream->queue; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1691 } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1692 stream->src = gst_element_factory_make( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1693 "fsfunnel", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1694 sink = gst_element_factory_make( |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1695 "fakesink", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1696 g_object_set(G_OBJECT(sink), "async", FALSE, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1697 gst_bin_add(GST_BIN(priv->confbin), sink); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1698 gst_element_set_state(sink, GST_STATE_PLAYING); |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1699 stream->fakesink = sink; |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1700 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1701 stream->tee = gst_element_factory_make("tee", NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1702 gst_bin_add_many(GST_BIN(priv->confbin), |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1703 stream->src, stream->tee, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1704 gst_element_set_state(stream->tee, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1705 gst_element_set_state(stream->src, GST_STATE_PLAYING); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1706 gst_element_link_many(stream->src, stream->tee, sink, NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1707 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1708 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1709 sinkpad = gst_element_get_request_pad(stream->src, "sink%d"); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1710 gst_pad_link(srcpad, sinkpad); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1711 gst_object_unref(sinkpad); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1712 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1713 stream->connected_cb_id = purple_timeout_add(0, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1714 (GSourceFunc)src_pad_added_cb_cb, stream); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1715 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1716 |
30875
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1717 static GValueArray * |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1718 append_relay_info(GValueArray *relay_info, const gchar *ip, gint port, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1719 const gchar *username, const gchar *password, const gchar *type) |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1720 { |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1721 GValue value; |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1722 GstStructure *turn_setup = gst_structure_new("relay-info", |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1723 "ip", G_TYPE_STRING, ip, |
30875
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1724 "port", G_TYPE_UINT, port, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1725 "username", G_TYPE_STRING, username, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1726 "password", G_TYPE_STRING, password, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1727 "relay-type", G_TYPE_STRING, type, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1728 NULL); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1729 |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1730 if (turn_setup) { |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1731 memset(&value, 0, sizeof(GValue)); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1732 g_value_init(&value, GST_TYPE_STRUCTURE); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1733 gst_value_set_structure(&value, turn_setup); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1734 relay_info = g_value_array_append(relay_info, &value); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1735 gst_structure_free(turn_setup); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1736 } |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1737 |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1738 return relay_info; |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1739 } |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1740 |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1741 static gboolean |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1742 create_stream(PurpleMediaBackendFs2 *self, |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1743 const gchar *sess_id, const gchar *who, |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1744 PurpleMediaSessionType type, gboolean initiator, |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1745 const gchar *transmitter, |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1746 guint num_params, GParameter *params) |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1747 { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1748 PurpleMediaBackendFs2Private *priv = |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1749 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1750 GError *err = NULL; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1751 FsStream *fsstream = NULL; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1752 const gchar *stun_ip = purple_network_get_stun_ip(); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1753 const gchar *turn_ip = purple_network_get_turn_ip(); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1754 guint _num_params = num_params; |
29744
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1755 GParameter *_params = g_new0(GParameter, num_params + 3); |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1756 FsStreamDirection type_direction = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1757 session_type_to_fs_stream_direction(type); |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1758 PurpleMediaBackendFs2Session *session; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1759 PurpleMediaBackendFs2Stream *stream; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1760 FsParticipant *participant; |
30958
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1761 /* check if the prpl has already specified a relay-info |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1762 we need to do this to allow them to override when using non-standard |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1763 TURN modes, like Google f.ex. */ |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1764 gboolean got_turn_from_prpl = FALSE; |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1765 int i; |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1766 |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1767 for (i = 0 ; i < num_params ; i++) { |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1768 if (purple_strequal(params[i].name, "relay-info")) { |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1769 got_turn_from_prpl = TRUE; |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1770 break; |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1771 } |
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1772 } |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1773 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1774 memcpy(_params, params, sizeof(GParameter) * num_params); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1775 |
29744
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1776 /* set the controlling mode parameter */ |
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1777 _params[_num_params].name = "controlling-mode"; |
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1778 g_value_init(&_params[_num_params].value, G_TYPE_BOOLEAN); |
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1779 g_value_set_boolean(&_params[_num_params].value, initiator); |
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1780 ++_num_params; |
1876a447db11
media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents:
29719
diff
changeset
|
1781 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1782 if (stun_ip) { |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1783 purple_debug_info("backend-fs2", |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1784 "Setting stun-ip on new stream: %s\n", stun_ip); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1785 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1786 _params[_num_params].name = "stun-ip"; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1787 g_value_init(&_params[_num_params].value, G_TYPE_STRING); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1788 g_value_set_string(&_params[_num_params].value, stun_ip); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1789 ++_num_params; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1790 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1791 |
30958
3d08b59ebf59
Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1792 if (turn_ip && !strcmp("nice", transmitter) && !got_turn_from_prpl) { |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1793 GValueArray *relay_info = g_value_array_new(0); |
30875
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1794 gint port; |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1795 const gchar *username = purple_prefs_get_string( |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1796 "/purple/network/turn_username"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1797 const gchar *password = purple_prefs_get_string( |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1798 "/purple/network/turn_password"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1799 |
30875
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1800 /* UDP */ |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1801 port = purple_prefs_get_int("/purple/network/turn_port"); |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1802 if (port > 0) { |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1803 relay_info = append_relay_info(relay_info, turn_ip, port, username, |
603638fad2f1
Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents:
30600
diff
changeset
|
1804 password, "udp"); |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1805 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1806 |
30902
195d034b6cfe
Removed the TCP and TLS TURN relaying options since libnice currently only supports these in Google mode. Added a note about this in fs-backend.c and changed the prefs label to read "UDP Port"
Marcus Lundblad <ml@update.uu.se>
parents:
30877
diff
changeset
|
1807 /* should add TCP and perhaps TLS relaying options when these are |
195d034b6cfe
Removed the TCP and TLS TURN relaying options since libnice currently only supports these in Google mode. Added a note about this in fs-backend.c and changed the prefs label to read "UDP Port"
Marcus Lundblad <ml@update.uu.se>
parents:
30877
diff
changeset
|
1808 supported by libnice using non-google mode */ |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1809 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1810 purple_debug_info("backend-fs2", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1811 "Setting relay-info on new stream\n"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1812 _params[_num_params].name = "relay-info"; |
31534
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
31523
diff
changeset
|
1813 g_value_init(&_params[_num_params].value, |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1814 G_TYPE_VALUE_ARRAY); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1815 g_value_set_boxed(&_params[_num_params].value, |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1816 relay_info); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1817 g_value_array_free(relay_info); |
30600
8cb39e235f39
media: Fix the TURN server setting to actually work again (it was apparently
Marcus Lundblad <ml@update.uu.se>
parents:
29788
diff
changeset
|
1818 _num_params++; |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1819 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1820 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1821 session = get_session(self, sess_id); |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1822 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1823 if (session == NULL) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1824 purple_debug_error("backend-fs2", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1825 "Couldn't find session to create stream.\n"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1826 return FALSE; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1827 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1828 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1829 participant = get_participant(self, who); |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1830 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1831 if (participant == NULL) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1832 purple_debug_error("backend-fs2", "Couldn't find " |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1833 "participant to create stream.\n"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1834 return FALSE; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1835 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1836 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1837 fsstream = fs_session_new_stream(session->session, participant, |
29633
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1838 initiator == TRUE ? type_direction : |
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1839 (type_direction & FS_DIRECTION_RECV), transmitter, |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1840 _num_params, _params, &err); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1841 g_free(_params); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1842 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1843 if (fsstream == NULL) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1844 if (err) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1845 purple_debug_error("backend-fs2", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1846 "Error creating stream: %s\n", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1847 err && err->message ? |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1848 err->message : "NULL"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1849 g_error_free(err); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1850 } else |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1851 purple_debug_error("backend-fs2", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1852 "Error creating stream\n"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1853 return FALSE; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1854 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1855 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1856 stream = g_new0(PurpleMediaBackendFs2Stream, 1); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1857 stream->participant = g_strdup(who); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1858 stream->session = session; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1859 stream->stream = fsstream; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1860 |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1861 priv->streams = g_list_append(priv->streams, stream); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1862 |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1863 g_signal_connect(G_OBJECT(fsstream), "src-pad-added", |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1864 G_CALLBACK(src_pad_added_cb), stream); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
1865 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1866 return TRUE; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1867 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1868 |
31869
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1869 static void |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1870 free_stream(PurpleMediaBackendFs2Stream *stream) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1871 { |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1872 /* Remove the connected_cb timeout */ |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1873 if (stream->connected_cb_id != 0) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1874 purple_timeout_remove(stream->connected_cb_id); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1875 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1876 g_free(stream->participant); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1877 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1878 if (stream->local_candidates) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1879 fs_candidate_list_destroy(stream->local_candidates); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1880 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1881 if (stream->remote_candidates) |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1882 fs_candidate_list_destroy(stream->remote_candidates); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1883 |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1884 g_free(stream); |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1885 } |
3fb443b6460c
Allow adding or removing media sessions (voice or video) on-the-fly. This
jakub.adam@ktknet.cz
parents:
31824
diff
changeset
|
1886 |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1887 static gboolean |
29540 | 1888 purple_media_backend_fs2_add_stream(PurpleMediaBackend *self, |
1889 const gchar *sess_id, const gchar *who, | |
1890 PurpleMediaSessionType type, gboolean initiator, | |
1891 const gchar *transmitter, | |
1892 guint num_params, GParameter *params) | |
1893 { | |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1894 PurpleMediaBackendFs2 *backend = PURPLE_MEDIA_BACKEND_FS2(self); |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1895 PurpleMediaBackendFs2Private *priv = |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1896 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(backend); |
29579
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1897 PurpleMediaBackendFs2Stream *stream; |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1898 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1899 if (priv->conference == NULL && !init_conference(backend)) { |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1900 purple_debug_error("backend-fs2", |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1901 "Error initializing the conference.\n"); |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1902 return FALSE; |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1903 } |
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1904 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1905 if (get_session(backend, sess_id) == NULL && |
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1906 !create_session(backend, sess_id, type, |
29553
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1907 initiator, transmitter)) { |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1908 purple_debug_error("backend-fs2", |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1909 "Error creating the session.\n"); |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1910 return FALSE; |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1911 } |
efeb21092ed2
Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents:
29552
diff
changeset
|
1912 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1913 if (get_participant(backend, who) == NULL && |
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1914 !create_participant(backend, who)) { |
29563
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1915 purple_debug_error("backend-fs2", |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1916 "Error creating the participant.\n"); |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1917 return FALSE; |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1918 } |
98a1b62a0f7e
Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents:
29557
diff
changeset
|
1919 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1920 stream = get_stream(backend, sess_id, who); |
29579
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1921 |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1922 if (stream != NULL) { |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1923 FsStreamDirection type_direction = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1924 session_type_to_fs_stream_direction(type); |
29579
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1925 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1926 if (session_type_to_fs_stream_direction( |
29579
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1927 stream->session->type) != type_direction) { |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1928 /* change direction */ |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1929 g_object_set(stream->stream, "direction", |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1930 type_direction, NULL); |
f65689100cfe
Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29578
diff
changeset
|
1931 } |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1932 } else if (!create_stream(backend, sess_id, who, type, |
29566
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1933 initiator, transmitter, num_params, params)) { |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1934 purple_debug_error("backend-fs2", |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1935 "Error creating the stream.\n"); |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1936 return FALSE; |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1937 } |
f600903f7811
Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents:
29564
diff
changeset
|
1938 |
29543
4aa30863743b
Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents:
29540
diff
changeset
|
1939 return TRUE; |
29540 | 1940 } |
1941 | |
1942 static void | |
1943 purple_media_backend_fs2_add_remote_candidates(PurpleMediaBackend *self, | |
1944 const gchar *sess_id, const gchar *participant, | |
1945 GList *remote_candidates) | |
1946 { | |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1947 PurpleMediaBackendFs2Private *priv; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1948 PurpleMediaBackendFs2Stream *stream; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1949 GError *err = NULL; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1950 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1951 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1952 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1953 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1954 stream = get_stream(PURPLE_MEDIA_BACKEND_FS2(self), |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1955 sess_id, participant); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1956 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1957 if (stream == NULL) { |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1958 purple_debug_error("backend-fs2", |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1959 "purple_media_add_remote_candidates: " |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1960 "couldn't find stream %s %s.\n", |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1961 sess_id ? sess_id : "(null)", |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1962 participant ? participant : "(null)"); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1963 return; |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1964 } |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1965 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1966 stream->remote_candidates = g_list_concat(stream->remote_candidates, |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1967 candidate_list_to_fs(remote_candidates)); |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1968 |
29633
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1969 if (purple_media_is_initiator(priv->media, sess_id, participant) || |
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1970 purple_media_accepted( |
9da83d5f48c3
Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents:
29607
diff
changeset
|
1971 priv->media, sess_id, participant)) { |
29567
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1972 fs_stream_set_remote_candidates(stream->stream, |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1973 stream->remote_candidates, &err); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1974 |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1975 if (err) { |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1976 purple_debug_error("backend-fs2", "Error adding remote" |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1977 " candidates: %s\n", err->message); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1978 g_error_free(err); |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1979 } |
983af0970bb2
Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents:
29566
diff
changeset
|
1980 } |
29540 | 1981 } |
1982 | |
29581
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1983 static gboolean |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1984 purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self, |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1985 const gchar *sess_id) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1986 { |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1987 PurpleMediaBackendFs2Private *priv; |
30847
77449a80fef2
Fix a possible Garbage return value.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30600
diff
changeset
|
1988 gboolean ret = FALSE; |
29581
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1989 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1990 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1991 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1992 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1993 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1994 if (sess_id != NULL) { |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
1995 PurpleMediaBackendFs2Session *session = get_session( |
29581
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1996 PURPLE_MEDIA_BACKEND_FS2(self), sess_id); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1997 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1998 if (session == NULL) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
1999 return FALSE; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2000 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2001 if (session->type & (PURPLE_MEDIA_SEND_AUDIO | |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2002 PURPLE_MEDIA_SEND_VIDEO)) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2003 g_object_get(session->session, |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2004 "codecs-ready", &ret, NULL); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2005 else |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2006 ret = TRUE; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2007 } else { |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2008 GList *values = g_hash_table_get_values(priv->sessions); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2009 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2010 for (; values; values = g_list_delete_link(values, values)) { |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2011 PurpleMediaBackendFs2Session *session = values->data; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2012 if (session->type & (PURPLE_MEDIA_SEND_AUDIO | |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2013 PURPLE_MEDIA_SEND_VIDEO)) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2014 g_object_get(session->session, |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2015 "codecs-ready", &ret, NULL); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2016 else |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2017 ret = TRUE; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2018 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2019 if (ret == FALSE) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2020 break; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2021 } |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2022 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2023 if (values != NULL) |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2024 g_list_free(values); |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2025 } |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2026 |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2027 return ret; |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2028 } |
f351e87b7af0
Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents:
29579
diff
changeset
|
2029 |
29540 | 2030 static GList * |
2031 purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self, | |
2032 const gchar *sess_id) | |
2033 { | |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2034 PurpleMediaBackendFs2Session *session; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2035 GList *fscodecs; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2036 GList *codecs; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2037 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2038 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2039 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2040 session = get_session(PURPLE_MEDIA_BACKEND_FS2(self), sess_id); |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2041 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2042 if (session == NULL) |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2043 return NULL; |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2044 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2045 g_object_get(G_OBJECT(session->session), |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2046 "codecs", &fscodecs, NULL); |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2047 codecs = codec_list_from_fs(fscodecs); |
29569
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2048 fs_codec_list_destroy(fscodecs); |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2049 |
9c1810122f21
Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29567
diff
changeset
|
2050 return codecs; |
29540 | 2051 } |
2052 | |
2053 static GList * | |
2054 purple_media_backend_fs2_get_local_candidates(PurpleMediaBackend *self, | |
2055 const gchar *sess_id, const gchar *participant) | |
2056 { | |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2057 PurpleMediaBackendFs2Stream *stream; |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2058 GList *candidates = NULL; |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2059 |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2060 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), NULL); |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2061 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2062 stream = get_stream(PURPLE_MEDIA_BACKEND_FS2(self), |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2063 sess_id, participant); |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2064 |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2065 if (stream != NULL) |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2066 candidates = candidate_list_from_fs( |
29571
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2067 stream->local_candidates); |
f0966e90ec44
Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents:
29570
diff
changeset
|
2068 return candidates; |
29540 | 2069 } |
2070 | |
29572
a7cad99144f0
Make the backend interface's set_remote_codecs function return gboolean.
maiku@pidgin.im
parents:
29571
diff
changeset
|
2071 static gboolean |
29540 | 2072 purple_media_backend_fs2_set_remote_codecs(PurpleMediaBackend *self, |
2073 const gchar *sess_id, const gchar *participant, | |
2074 GList *codecs) | |
2075 { | |
29573
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2076 PurpleMediaBackendFs2Stream *stream; |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2077 GList *fscodecs; |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2078 GError *err = NULL; |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2079 |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2080 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE); |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2081 stream = get_stream(PURPLE_MEDIA_BACKEND_FS2(self), |
29573
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2082 sess_id, participant); |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2083 |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2084 if (stream == NULL) |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2085 return FALSE; |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2086 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2087 fscodecs = codec_list_to_fs(codecs); |
29573
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2088 fs_stream_set_remote_codecs(stream->stream, fscodecs, &err); |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2089 fs_codec_list_destroy(fscodecs); |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2090 |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2091 if (err) { |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2092 purple_debug_error("backend-fs2", |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2093 "Error setting remote codecs: %s\n", |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2094 err->message); |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2095 g_error_free(err); |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2096 return FALSE; |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2097 } |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2098 |
a39696686dd6
Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29572
diff
changeset
|
2099 return TRUE; |
29540 | 2100 } |
2101 | |
29574
90c48f1e479a
Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents:
29573
diff
changeset
|
2102 static gboolean |
29540 | 2103 purple_media_backend_fs2_set_send_codec(PurpleMediaBackend *self, |
2104 const gchar *sess_id, PurpleMediaCodec *codec) | |
2105 { | |
29575
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2106 PurpleMediaBackendFs2Session *session; |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2107 FsCodec *fscodec; |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2108 GError *err = NULL; |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2109 |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2110 g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE); |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2111 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2112 session = get_session(PURPLE_MEDIA_BACKEND_FS2(self), sess_id); |
29575
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2113 |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2114 if (session == NULL) |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2115 return FALSE; |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2116 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2117 fscodec = codec_to_fs(codec); |
29575
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2118 fs_session_set_send_codec(session->session, fscodec, &err); |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2119 fs_codec_destroy(fscodec); |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2120 |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2121 if (err) { |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2122 purple_debug_error("media", "Error setting send codec\n"); |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2123 g_error_free(err); |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2124 return FALSE; |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2125 } |
ec5ed142f551
Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29574
diff
changeset
|
2126 |
29574
90c48f1e479a
Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents:
29573
diff
changeset
|
2127 return TRUE; |
29540 | 2128 } |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2129 #else |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2130 GType |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2131 purple_media_backend_fs2_get_type(void) |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2132 { |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2133 return G_TYPE_NONE; |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2134 } |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2135 #endif /* USE_VV */ |
29540 | 2136 |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2137 #ifdef USE_GSTREAMER |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2138 GstElement * |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2139 purple_media_backend_fs2_get_src(PurpleMediaBackendFs2 *self, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2140 const gchar *sess_id) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2141 { |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2142 #ifdef USE_VV |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2143 PurpleMediaBackendFs2Session *session = get_session(self, sess_id); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2144 return session != NULL ? session->src : NULL; |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2145 #else |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2146 return NULL; |
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2147 #endif |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2148 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2149 |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2150 GstElement * |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2151 purple_media_backend_fs2_get_tee(PurpleMediaBackendFs2 *self, |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2152 const gchar *sess_id, const gchar *who) |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2153 { |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2154 #ifdef USE_VV |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2155 if (sess_id != NULL && who == NULL) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2156 PurpleMediaBackendFs2Session *session = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2157 get_session(self, sess_id); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2158 return (session != NULL) ? session->tee : NULL; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2159 } else if (sess_id != NULL && who != NULL) { |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2160 PurpleMediaBackendFs2Stream *stream = |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2161 get_stream(self, sess_id, who); |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2162 return (stream != NULL) ? stream->tee : NULL; |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2163 } |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2164 |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2165 #endif /* USE_VV */ |
29583
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2166 g_return_val_if_reached(NULL); |
eadb9e309b87
Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents:
29582
diff
changeset
|
2167 } |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2168 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2169 void |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2170 purple_media_backend_fs2_set_input_volume(PurpleMediaBackendFs2 *self, |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2171 const gchar *sess_id, double level) |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2172 { |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2173 #ifdef USE_VV |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2174 PurpleMediaBackendFs2Private *priv; |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2175 GList *sessions; |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2176 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2177 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2178 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2179 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2180 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2181 purple_prefs_set_int("/purple/media/audio/volume/input", level); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2182 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2183 if (sess_id == NULL) |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2184 sessions = g_hash_table_get_values(priv->sessions); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2185 else |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2186 sessions = g_list_append(NULL, get_session(self, sess_id)); |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2187 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2188 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2189 PurpleMediaBackendFs2Session *session = sessions->data; |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2190 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2191 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2192 gchar *name = g_strdup_printf("volume_%s", |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2193 session->id); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2194 GstElement *volume = gst_bin_get_by_name( |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2195 GST_BIN(priv->confbin), name); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2196 g_free(name); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2197 g_object_set(volume, "volume", level/10.0, NULL); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2198 } |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2199 } |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2200 #endif /* USE_VV */ |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2201 } |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2202 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2203 void |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2204 purple_media_backend_fs2_set_output_volume(PurpleMediaBackendFs2 *self, |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2205 const gchar *sess_id, const gchar *who, double level) |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2206 { |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2207 #ifdef USE_VV |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2208 GList *streams; |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2209 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2210 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2211 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2212 purple_prefs_set_int("/purple/media/audio/volume/output", level); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2213 |
29607
85a7a93cd19a
Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents:
29603
diff
changeset
|
2214 streams = get_streams(self, sess_id, who); |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2215 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2216 for (; streams; streams = g_list_delete_link(streams, streams)) { |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2217 PurpleMediaBackendFs2Stream *stream = streams->data; |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2218 |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2219 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2220 && GST_IS_ELEMENT(stream->volume)) { |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2221 g_object_set(stream->volume, "volume", |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2222 level/10.0, NULL); |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2223 } |
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2224 } |
29714
bd7159aeabc0
Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents:
29633
diff
changeset
|
2225 #endif /* USE_VV */ |
29585
95f918df7f09
Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents:
29584
diff
changeset
|
2226 } |
29719
858d1a47bf83
Fix compile with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
29714
diff
changeset
|
2227 #endif /* USE_GSTREAMER */ |