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