annotate libpurple/media/backend-fs2.c @ 31356:017b7ff5a894

During a voice call, Pidgin now sends constant audio traffic, even when there is silence. Especially on slower connections, this can waste considerable amount of bandwidth by transmitting nothing but ambient noise. I used peak level data from GstLevel? in the input branch of media pipeline to control a GstValve? put between audio source and Farsight confbin. Whenever the peak drops below defined threshold, the valve gets closed, when sound level reaches above the threshold, valve opens again. This effectively blocks sending data over network in the silent periods and in my tests this simple method worked quite well. Silence threshold might need to be fine tuned (or switched off at all) depending on microphone hardware and/or the noisiness of surrounding environment. I will propose an user interface for this in a separate ticket. Future improvement can be adding support for comfort noise (RFC3389), as the line now stays completely mute when suppression is active, which can be a bit distracting. I made a tiny change in level parameter that is passed to PurpleMedia?'s "level" signal handlers. The value converted from dB to percent was multiplied by five. Searching through source code history seems this was done to make the value variation displayed on call dialog level meter widgets look bigger. I think it is better not to confuse future developers and pass the unmodified percent value to the handler and multiply only in gtkmedia.c: level_message_cb() where it has reason. committer: John Bailey <rekkanoryo@rekkanoryo.org>
author jakub.adam@ktknet.cz
date Sun, 13 Mar 2011 18:00:58 +0000
parents 66fe4bda9a85
children 4f2aac5967bb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1 /**
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2 * @file backend-fs2.c Farsight 2 backend for media API
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
3 * @ingroup core
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
4 */
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
5
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
6 /* purple
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
7 *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
8 * Purple is the legal property of its developers, whose names are too numerous
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
10 * source distribution.
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
11 *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
15 * (at your option) any later version.
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
16 *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
20 * GNU General Public License for more details.
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
21 *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
25 */
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
39
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
40 /** @copydoc _PurpleMediaBackendFs2Class */
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
41 typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
42 /** @copydoc _PurpleMediaBackendFs2Private */
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
48
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
49 #define PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj) \
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
50 (G_TYPE_INSTANCE_GET_PRIVATE((obj), \
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
51 PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2Private))
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
52
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
53 static void purple_media_backend_iface_init(PurpleMediaBackendIface *iface);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
65 static gboolean purple_media_backend_fs2_add_stream(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
66 const gchar *sess_id, const gchar *who,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
67 PurpleMediaSessionType type, gboolean initiator,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
68 const gchar *transmitter,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
69 guint num_params, GParameter *params);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
70 static void purple_media_backend_fs2_add_remote_candidates(
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
71 PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
72 const gchar *sess_id, const gchar *participant,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
76 static GList *purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
77 const gchar *sess_id);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
78 static GList *purple_media_backend_fs2_get_local_candidates(
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
79 PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
82 PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
83 const gchar *sess_id, const gchar *participant,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
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);
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
88
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
89 struct _PurpleMediaBackendFs2Class
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
90 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
91 GObjectClass parent_class;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
92 };
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
93
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
94 struct _PurpleMediaBackendFs2
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
95 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
96 GObject parent;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
97 };
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
98
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
99 G_DEFINE_TYPE_WITH_CODE(PurpleMediaBackendFs2, purple_media_backend_fs2,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
100 G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
101 PURPLE_TYPE_MEDIA_BACKEND, purple_media_backend_iface_init));
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
102
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
103 struct _PurpleMediaBackendFs2Stream
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
104 {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
105 PurpleMediaBackendFs2Session *session;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
106 gchar *participant;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
107 FsStream *stream;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
108
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
109 GstElement *src;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
110 GstElement *tee;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
111 GstElement *volume;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
112 GstElement *level;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
113
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
114 GList *local_candidates;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
115 GList *remote_candidates;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
116
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
117 guint connected_cb_id;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
118 };
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
119
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
120 struct _PurpleMediaBackendFs2Session
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
121 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
122 PurpleMediaBackendFs2 *backend;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
123 gchar *id;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
124 FsSession *session;
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
125
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
126 GstElement *src;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
127 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
128 GstElement *srcvalve;
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
129
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
130 GstPad *srcpad;
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
131
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
132 PurpleMediaSessionType type;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
133 };
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
134
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
135 struct _PurpleMediaBackendFs2Private
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
136 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
137 PurpleMedia *media;
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
138 GstElement *confbin;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
139 FsConference *conference;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
140 gchar *conference_type;
29159
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 GHashTable *sessions;
29169
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
143 GHashTable *participants;
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
144
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
145 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
146
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
147 gdouble silence_threshold;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
148 };
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
149
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
150 enum {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
151 PROP_0,
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
152 PROP_CONFERENCE_TYPE,
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
153 PROP_MEDIA,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
154 };
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
155
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
156 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
157 purple_media_backend_fs2_init(PurpleMediaBackendFs2 *self)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
158 {
31356
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
159 PurpleMediaBackendFs2Private *priv =
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
160 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
161
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
162 priv->silence_threshold = purple_prefs_get_int(
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
163 "/purple/media/audio/silence_threshold") / 100.0;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
164 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
165
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
166 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
167 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
168 {
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 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
170 && 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
171
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 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
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 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
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_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
177 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
178
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 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
180 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
181
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 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
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
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 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
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
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 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
189 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
190 {
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 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
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 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
194 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
195
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 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
197 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
198 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
199 "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
200 "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
201 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
202 }
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
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
204 static void
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
205 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
206 {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
207 PurpleMediaBackendFs2Private *priv =
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
208 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj);
29183
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
209 GList *iter = NULL;
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
210
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
211 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
212
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
213 if (priv->confbin) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
214 GstElement *pipeline;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
215
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
216 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
217 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
218
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
219 /* All connections to media sources should be blocked before confbin is
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
220 * removed, to prevent freezing of any other simultaneously running
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
221 * media calls. */
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
222 if (priv->sessions) {
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
223 GList *sessions = g_hash_table_get_values(priv->sessions);
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
224 for (; sessions; sessions =
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
225 g_list_delete_link(sessions, sessions)) {
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
226 PurpleMediaBackendFs2Session *session = sessions->data;
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
227 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
228 unlink_teepad_dynamic(session->srcpad, FALSE);
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
229 gst_object_unref(session->srcpad);
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
230 session->srcpad = NULL;
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
231 }
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
232 }
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
233 }
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
234
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
235 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
236 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
237 GST_STATE_NULL);
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
238
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
239 if (pipeline) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
240 GstBus *bus;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
241 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
242 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
243 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
244 G_SIGNAL_MATCH_FUNC |
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
245 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
246 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
247 gst_object_unref(bus);
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
248 } else {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
249 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
250 "properly dispose the conference. "
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
251 "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
252 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
253
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
254 priv->confbin = NULL;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
255 priv->conference = NULL;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
256
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
257 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
258
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
259 if (priv->sessions) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
260 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
261
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
262 for (; sessions; sessions =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
263 g_list_delete_link(sessions, sessions)) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
264 PurpleMediaBackendFs2Session *session =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
265 sessions->data;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
266
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
267 if (session->session) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
268 g_object_unref(session->session);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
269 session->session = NULL;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
270 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
271 }
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
29169
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
274 if (priv->participants) {
30439
1feb2baeac2d Fix some media code leaks.
jakub.adam@ktknet.cz
parents: 30430
diff changeset
275 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
276 priv->participants = NULL;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
277 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
278
29183
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
279 for (iter = priv->streams; iter; iter = g_list_next(iter)) {
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
280 PurpleMediaBackendFs2Stream *stream = iter->data;
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
281 if (stream->stream) {
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
282 g_object_unref(stream->stream);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
283 stream->stream = NULL;
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
284 }
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
285 }
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
286
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
287 if (priv->media) {
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
288 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
289 (gpointer*)&priv->media);
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
290 priv->media = NULL;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
291 }
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
292
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
293 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
294 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
295
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
296 static void
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
297 purple_media_backend_fs2_finalize(GObject *obj)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
298 {
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
299 PurpleMediaBackendFs2Private *priv =
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
300 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
301
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
302 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
303
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
304 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
305
29183
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
306 for (; priv->streams; priv->streams =
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
307 g_list_delete_link(priv->streams, priv->streams)) {
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
308 PurpleMediaBackendFs2Stream *stream = priv->streams->data;
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
309
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
310 /* Remove the connected_cb timeout */
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
311 if (stream->connected_cb_id != 0)
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
312 purple_timeout_remove(stream->connected_cb_id);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
313
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
314 g_free(stream->participant);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
315
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
316 if (stream->local_candidates)
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
317 fs_candidate_list_destroy(stream->local_candidates);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
318
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
319 if (stream->remote_candidates)
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
320 fs_candidate_list_destroy(stream->remote_candidates);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
321
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
322 g_free(stream);
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
323 }
3bab2237724d Properly free PurpleMediaBackendFs2Stream's.
maiku@pidgin.im
parents: 29182
diff changeset
324
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
325 if (priv->sessions) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
326 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
327
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
328 for (; sessions; sessions =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
329 g_list_delete_link(sessions, sessions)) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
330 PurpleMediaBackendFs2Session *session =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
331 sessions->data;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
332 g_free(session->id);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
333 g_free(session);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
334 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
335
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
336 g_hash_table_destroy(priv->sessions);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
337 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
338
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
339 G_OBJECT_CLASS(purple_media_backend_fs2_parent_class)->finalize(obj);
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
340 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
341
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
342 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
343 purple_media_backend_fs2_set_property(GObject *object, guint prop_id,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
344 const GValue *value, GParamSpec *pspec)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
345 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
346 PurpleMediaBackendFs2Private *priv;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
347 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object));
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
348
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
349 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
350
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
351 switch (prop_id) {
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
352 case PROP_CONFERENCE_TYPE:
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
353 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
354 break;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
355 case PROP_MEDIA:
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
356 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
357
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
358 if (priv->media == NULL)
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
359 break;
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
360
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
361 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
362 (gpointer*)&priv->media);
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
363
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
364 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
365 "state-changed",
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
366 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
367 PURPLE_MEDIA_BACKEND_FS2(object));
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
368 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
369 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
370 PURPLE_MEDIA_BACKEND_FS2(object));
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
371 break;
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
372 default:
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
373 G_OBJECT_WARN_INVALID_PROPERTY_ID(
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
374 object, prop_id, pspec);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
375 break;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
376 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
377 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
378
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
379 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
380 purple_media_backend_fs2_get_property(GObject *object, guint prop_id,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
381 GValue *value, GParamSpec *pspec)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
382 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
383 PurpleMediaBackendFs2Private *priv;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
384 g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object));
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
385
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
386 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
387
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
388 switch (prop_id) {
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
389 case PROP_CONFERENCE_TYPE:
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
390 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
391 break;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
392 case PROP_MEDIA:
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
393 g_value_set_object(value, priv->media);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
394 break;
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
395 default:
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
396 G_OBJECT_WARN_INVALID_PROPERTY_ID(
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
397 object, prop_id, pspec);
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
398 break;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
399 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
400 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
401
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
402 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
403 purple_media_backend_fs2_class_init(PurpleMediaBackendFs2Class *klass)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
404 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
405 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
406
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
407 gobject_class->dispose = purple_media_backend_fs2_dispose;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
408 gobject_class->finalize = purple_media_backend_fs2_finalize;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
409 gobject_class->set_property = purple_media_backend_fs2_set_property;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
410 gobject_class->get_property = purple_media_backend_fs2_get_property;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
411
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
412 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
413 "conference-type");
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
414 g_object_class_override_property(gobject_class, PROP_MEDIA, "media");
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
415
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
416 g_type_class_add_private(klass, sizeof(PurpleMediaBackendFs2Private));
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
417 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
418
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
419 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
420 purple_media_backend_iface_init(PurpleMediaBackendIface *iface)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
421 {
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
422 iface->add_stream = purple_media_backend_fs2_add_stream;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
423 iface->add_remote_candidates =
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
424 purple_media_backend_fs2_add_remote_candidates;
29187
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
425 iface->codecs_ready = purple_media_backend_fs2_codecs_ready;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
426 iface->get_codecs = purple_media_backend_fs2_get_codecs;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
427 iface->get_local_candidates =
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
428 purple_media_backend_fs2_get_local_candidates;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
429 iface->set_remote_codecs = purple_media_backend_fs2_set_remote_codecs;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
430 iface->set_send_codec = purple_media_backend_fs2_set_send_codec;
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
431 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
432
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
433 static FsMediaType
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
434 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
435 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
436 if (type & PURPLE_MEDIA_AUDIO)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
437 return FS_MEDIA_TYPE_AUDIO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
438 else if (type & PURPLE_MEDIA_VIDEO)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
439 return FS_MEDIA_TYPE_VIDEO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
440 else
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
441 return 0;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
442 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
443
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
444 static FsStreamDirection
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
445 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
446 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
447 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
448 (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
449 return FS_DIRECTION_BOTH;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
450 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
451 (type & PURPLE_MEDIA_SEND_VIDEO))
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
452 return FS_DIRECTION_SEND;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
453 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
454 (type & PURPLE_MEDIA_RECV_VIDEO))
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
455 return FS_DIRECTION_RECV;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
456 else
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
457 return FS_DIRECTION_NONE;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
458 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
459
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
460 static PurpleMediaSessionType
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
461 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
462 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
463 PurpleMediaSessionType result = PURPLE_MEDIA_NONE;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
464 if (type == FS_MEDIA_TYPE_AUDIO) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
465 if (direction & FS_DIRECTION_SEND)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
466 result |= PURPLE_MEDIA_SEND_AUDIO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
467 if (direction & FS_DIRECTION_RECV)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
468 result |= PURPLE_MEDIA_RECV_AUDIO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
469 } 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
470 if (direction & FS_DIRECTION_SEND)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
471 result |= PURPLE_MEDIA_SEND_VIDEO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
472 if (direction & FS_DIRECTION_RECV)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
473 result |= PURPLE_MEDIA_RECV_VIDEO;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
474 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
475 return result;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
476 }
29160
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
477
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
478 static FsCandidate *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
479 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
480 {
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
481 FsCandidate *fscandidate;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
482 gchar *foundation;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
483 guint component_id;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
484 gchar *ip;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
485 guint port;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
486 gchar *base_ip;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
487 guint base_port;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
488 PurpleMediaNetworkProtocol proto;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
489 guint32 priority;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
490 PurpleMediaCandidateType type;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
491 gchar *username;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
492 gchar *password;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
493 guint ttl;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
494
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
495 if (candidate == NULL)
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
496 return NULL;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
497
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
498 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
499 "foundation", &foundation,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
500 "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
501 "ip", &ip,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
502 "port", &port,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
503 "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
504 "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
505 "protocol", &proto,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
506 "priority", &priority,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
507 "type", &type,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
508 "username", &username,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
509 "password", &password,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
510 "ttl", &ttl,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
511 NULL);
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
512
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
513 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
514 component_id, type,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
515 proto, ip, port);
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
516
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
517 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
518 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
519 fscandidate->priority = priority;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
520 fscandidate->username = username;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
521 fscandidate->password = password;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
522 fscandidate->ttl = ttl;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
523
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
524 g_free(foundation);
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
525 g_free(ip);
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
526 return fscandidate;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
527 }
29173
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 static GList *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
530 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
531 {
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
532 GList *new_list = NULL;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
533
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
534 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
535 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
536 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
537 }
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
538
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
539 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
540 return new_list;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
541 }
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
542
29160
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
543 static PurpleMediaCandidate *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
544 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
545 {
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
546 PurpleMediaCandidate *candidate;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
547
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
548 if (fscandidate == NULL)
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
549 return NULL;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
550
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
551 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
552 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
553 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
554 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
555 "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
556 "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
557 "priority", fscandidate->priority,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
558 "username", fscandidate->username,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
559 "password", fscandidate->password,
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
560 "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
561 return candidate;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
562 }
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
563
29177
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
564 static GList *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
565 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
566 {
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
567 GList *new_list = NULL;
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
568
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
569 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
570 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
571 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
572 }
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
573
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
574 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
575 return new_list;
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
576 }
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
577
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
578 static FsCodec *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
579 codec_to_fs(const PurpleMediaCodec *codec)
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
580 {
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
581 FsCodec *new_codec;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
582 gint id;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
583 char *encoding_name;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
584 PurpleMediaSessionType media_type;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
585 guint clock_rate;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
586 guint channels;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
587 GList *iter;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
588
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
589 if (codec == NULL)
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
590 return NULL;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
591
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
592 g_object_get(G_OBJECT(codec),
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
593 "id", &id,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
594 "encoding-name", &encoding_name,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
595 "media-type", &media_type,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
596 "clock-rate", &clock_rate,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
597 "channels", &channels,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
598 "optional-params", &iter,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
599 NULL);
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 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
602 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
603 clock_rate);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
604 new_codec->channels = channels;
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 for (; iter; iter = g_list_next(iter)) {
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
607 PurpleKeyValuePair *param = (PurpleKeyValuePair*)iter->data;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
608 fs_codec_add_optional_parameter(new_codec,
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
609 param->key, param->value);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
610 }
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 g_free(encoding_name);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
613 return new_codec;
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
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
616 static PurpleMediaCodec *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
617 codec_from_fs(const FsCodec *codec)
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
618 {
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
619 PurpleMediaCodec *new_codec;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
620 GList *iter;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
621
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
622 if (codec == NULL)
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
623 return NULL;
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 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
626 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
627 FS_DIRECTION_BOTH), codec->clock_rate);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
628 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
629
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
630 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
631 FsCodecParameter *param = (FsCodecParameter*)iter->data;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
632 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
633 param->name, param->value);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
634 }
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
635
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
636 return new_codec;
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 static GList *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
640 codec_list_from_fs(GList *codecs)
29175
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 GList *new_list = NULL;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
643
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
644 for (; codecs; codecs = g_list_next(codecs)) {
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
645 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
646 codec_from_fs(codecs->data));
29175
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
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
649 new_list = g_list_reverse(new_list);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
650 return new_list;
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 static GList *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
654 codec_list_to_fs(GList *codecs)
29175
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 GList *new_list = NULL;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
657
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
658 for (; codecs; codecs = g_list_next(codecs)) {
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
659 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
660 codec_to_fs(codecs->data));
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
661 }
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
662
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
663 new_list = g_list_reverse(new_list);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
664 return new_list;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
665 }
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
666
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
667 static PurpleMediaBackendFs2Session *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
668 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
669 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
670 PurpleMediaBackendFs2Private *priv;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
671 PurpleMediaBackendFs2Session *session = NULL;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
672
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
673 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
674
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
675 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
676
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
677 if (priv->sessions != NULL)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
678 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
679
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
680 return session;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
681 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
682
29169
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
683 static FsParticipant *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
684 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
685 {
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
686 PurpleMediaBackendFs2Private *priv;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
687 FsParticipant *participant = NULL;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
688
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
689 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
690
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
691 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
692
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
693 if (priv->participants != NULL)
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
694 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
695
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
696 return participant;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
697 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
698
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
699 static PurpleMediaBackendFs2Stream *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
700 get_stream(PurpleMediaBackendFs2 *self,
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
701 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
702 {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
703 PurpleMediaBackendFs2Private *priv;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
704 GList *streams;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
705
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
706 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
707
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
708 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
709 streams = priv->streams;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
710
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
711 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
712 PurpleMediaBackendFs2Stream *stream = streams->data;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
713 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
714 !strcmp(stream->participant, name))
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
715 return stream;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
716 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
717
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
718 return NULL;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
719 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
720
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
721 static GList *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
722 get_streams(PurpleMediaBackendFs2 *self,
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
723 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
724 {
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
725 PurpleMediaBackendFs2Private *priv;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
726 GList *streams, *ret = NULL;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
727
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
728 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
729
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
730 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
731 streams = priv->streams;
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 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
734 PurpleMediaBackendFs2Stream *stream = streams->data;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
735
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
736 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
737 continue;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
738 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
739 continue;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
740 else
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
741 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
742 }
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
743
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
744 ret = g_list_reverse(ret);
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
745 return ret;
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
746 }
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
747
29160
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
748 static PurpleMediaBackendFs2Session *
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
749 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
750 {
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
751 PurpleMediaBackendFs2Private *priv =
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
752 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
753 FsSession *fssession;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
754 GList *values;
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 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
757 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
758
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
759 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
760
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
761 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
762
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
763 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
764 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
765
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
766 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
767 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
768 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
769 return session;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
770 }
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
771 }
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
772
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
773 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
774 return NULL;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
775 }
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
776
31356
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
777 static gdouble
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
778 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
779 {
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
780 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
781 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
782 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
783 gdouble percent;
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
784
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
785 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
786 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
787 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
788 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
789 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
790 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
791 }
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
792
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
793 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
794 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
795 PurpleMediaBackendFs2 *self)
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
796 {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
797 PurpleMediaBackendFs2Private *priv =
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
798 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
799 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
800 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
801
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
802 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
803 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
804
31356
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
805 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
806 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
807 gchar *name;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
808 gchar *participant = NULL;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
809 PurpleMediaBackendFs2Session *session = NULL;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
810 gdouble percent;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
811
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
812 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
813 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
814 return;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
815
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
816 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
817
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
818 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
819 session = get_session(self, name+10);
31356
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
820 percent = gst_msg_db_to_percent(msg, "decay");
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
821 g_object_set(session->srcvalve,
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
822 "drop", (percent < priv->silence_threshold), NULL);
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
823 }
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
824
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
825 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
826
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
827 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
828 return;
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
829
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
830 if (!session) {
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
831 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
832 PurpleMediaBackendFs2Stream *stream;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
833 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
834 stream = iter->data;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
835 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
836 session = stream->session;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
837 participant = stream->participant;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
838 break;
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 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
841 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
842
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
843 if (!session)
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
844 return;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
845
31356
017b7ff5a894 During a voice call, Pidgin now sends constant audio traffic, even when there
jakub.adam@ktknet.cz
parents: 31152
diff changeset
846 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
847
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
848 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
849 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
850 return;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
851 }
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
852
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
853 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
854 priv->conference != FS_CONFERENCE(src))
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
855 return;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
856
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
857 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
858 FsError error_no;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
859 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
860 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
861 switch (error_no) {
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:
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 " found. Install some"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
865 " GStreamer codecs found"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
866 " in GStreamer plugins"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
867 " packages."));
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_NO_CODECS_LEFT:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
871 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
872 " left. Your codec"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
873 " preferences in"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
874 " fs-codecs.conf are too"
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
875 " strict."));
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
876 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
877 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
878 case FS_ERROR_UNKNOWN_CNAME:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
879 /*
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
880 * 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
881 * 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
882 * It is also deprecated.
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
883 */
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
884 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
885 default:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
886 purple_debug_error("backend-fs2",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
887 "farsight-error: %i: %s\n",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
888 error_no,
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
889 gst_structure_get_string(
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
890 msg->structure, "error-msg"));
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
891 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
892 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
893
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
894 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
895 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
896 "Farsight2 error has occurred."));
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
897 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
898 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
899 } 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
900 "farsight-new-local-candidate")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
901 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
902 FsStream *stream;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
903 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
904 PurpleMediaCandidate *candidate;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
905 FsParticipant *participant;
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
906 PurpleMediaBackendFs2Session *session;
29177
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
907 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
908 gchar *name;
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
909
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
910 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
911 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
912 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
913 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
914
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
915 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
916
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
917 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
918 "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
919 local_candidate->foundation);
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
920
2460e6774e08 Move handling Farsight 2's new-local-candidate signal in Fs2 media backend.
maiku@pidgin.im
parents: 29159
diff changeset
921 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
922 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
923 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
924
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
925 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
926 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
927 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
928 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
929
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
930 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
931 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
932 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
933 g_object_unref(candidate);
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
934 } 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
935 "farsight-local-candidates-prepared")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
936 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
937 FsStream *stream;
29163
1fdc75c94c22 Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents: 29162
diff changeset
938 FsParticipant *participant;
1fdc75c94c22 Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents: 29162
diff changeset
939 PurpleMediaBackendFs2Session *session;
1fdc75c94c22 Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents: 29162
diff changeset
940 gchar *name;
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
941
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
942 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
943 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
944 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
945
1fdc75c94c22 Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents: 29162
diff changeset
946 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
947 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
948 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
949
1fdc75c94c22 Move Farsight 2's local-candidates-prepared signal to the Fs2 media backend.
maiku@pidgin.im
parents: 29162
diff changeset
950 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
951 session->id, name);
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
952 } 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
953 "farsight-new-active-candidate-pair")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
954 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
955 FsStream *stream;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
956 FsCandidate *local_candidate;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
957 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
958 FsParticipant *participant;
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
959 PurpleMediaBackendFs2Session *session;
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
960 PurpleMediaCandidate *lcandidate, *rcandidate;
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
961 gchar *name;
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
962
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
963 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
964 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
965 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
966 "local-candidate");
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
967 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
968 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
969 "remote-candidate");
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
970 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
971
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
972 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
973 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
974 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
975
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
976 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
977
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
978 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
979 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
980
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
981 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
982 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
983
74e75fc3481e Move Farsight 2's new-active-candidate-pair into the Fs2 media backend.
maiku@pidgin.im
parents: 29161
diff changeset
984 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
985 g_object_unref(rcandidate);
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
986 } else if (gst_structure_has_name(msg->structure,
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
987 "farsight-recv-codecs-changed")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
988 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
989 GList *codecs;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
990 FsCodec *codec;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
991
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
992 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
993 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
994 codec = codecs->data;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
995
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
996 purple_debug_info("backend-fs2",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
997 "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
998 codec->encoding_name);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
999 } 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
1000 "farsight-component-state-changed")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1001 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1002 FsStreamState fsstate;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1003 guint component;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1004 const gchar *state;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1005
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1006 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
1007 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
1008 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
1009 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
1010
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1011 switch (fsstate) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1012 case FS_STREAM_STATE_FAILED:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1013 state = "FAILED";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1014 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1015 case FS_STREAM_STATE_DISCONNECTED:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1016 state = "DISCONNECTED";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1017 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1018 case FS_STREAM_STATE_GATHERING:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1019 state = "GATHERING";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1020 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1021 case FS_STREAM_STATE_CONNECTING:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1022 state = "CONNECTING";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1023 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1024 case FS_STREAM_STATE_CONNECTED:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1025 state = "CONNECTED";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1026 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1027 case FS_STREAM_STATE_READY:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1028 state = "READY";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1029 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1030 default:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1031 state = "UNKNOWN";
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1032 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1033 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1034
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1035 purple_debug_info("backend-fs2",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1036 "farsight-component-state-changed: "
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1037 "component: %u state: %s\n",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1038 component, state);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1039 } 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
1040 "farsight-send-codec-changed")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1041 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1042 FsCodec *codec;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1043 gchar *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 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
1046 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
1047 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
1048
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1049 purple_debug_info("backend-fs2",
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1050 "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
1051 codec_str);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1052
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1053 g_free(codec_str);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1054 } 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
1055 "farsight-codecs-changed")) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1056 const GValue *value;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1057 FsSession *fssession;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1058 GList *sessions;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1059
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1060 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
1061 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
1062 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
1063
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1064 for (; sessions; sessions =
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1065 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
1066 PurpleMediaBackendFs2Session *session = sessions->data;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1067 gchar *session_id;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1068
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1069 if (session->session != fssession)
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1070 continue;
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 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
1073 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
1074 session_id);
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1075 g_free(session_id);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1076 g_list_free(sessions);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1077 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1078 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1079 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1080 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1081
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1082 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1083 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
1084 PurpleMediaBackendFs2 *self)
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1085 {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1086 PurpleMediaBackendFs2Private *priv =
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1087 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
1088 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
1089 GstElement *lastElement = NULL;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1090 GList *sessions;
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 while (!GST_IS_PIPELINE(element)) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1093 if (element == priv->confbin)
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1094 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1095
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1096 lastElement = element;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1097 element = GST_ELEMENT_PARENT(element);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1098 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1099
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1100 if (!GST_IS_PIPELINE(element))
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1101 return;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1102
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1103 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
1104
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1105 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
1106 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
1107 != lastElement)
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1108 continue;
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 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
1111 & PURPLE_MEDIA_AUDIO)
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1112 purple_media_error(priv->media,
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1113 _("Error with your microphone"));
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1114 else
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,
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1116 _("Error with your webcam"));
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 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1119 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1120
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1121 g_list_free(sessions);
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1122
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1123 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
1124 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
1125 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1126
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1127 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1128 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
1129 {
29158
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1130 switch(GST_MESSAGE_TYPE(msg)) {
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1131 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
1132 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
1133 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1134 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
1135 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
1136 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1137 default:
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1138 break;
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1139 }
ae81f8baa148 Transfer some GStreamer message handling to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29154
diff changeset
1140
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1141 return TRUE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1142 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1143
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1144 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1145 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
1146 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
1147 {
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1148 }
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1149
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1150 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1151 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
1152 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
1153 PurpleMediaBackendFs2 *self)
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1154 {
29209
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1155 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
1156 PurpleMediaBackendFs2Stream *stream =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1157 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
1158 GError *err = NULL;
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1159
29209
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1160 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
1161 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
1162 stream->session->type), NULL);
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1163
29239
9da83d5f48c3 Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents: 29213
diff changeset
1164 if (stream->remote_candidates == NULL ||
9da83d5f48c3 Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents: 29213
diff changeset
1165 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
1166 return;
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1167
29209
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1168 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
1169 stream->remote_candidates, &err);
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1170
29209
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1171 if (err == NULL)
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1172 return;
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1173
29209
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1174 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
1175 "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
1176 err->message);
d510b0324721 Handle individual streams in the Fs2 backend's stream-info callback for accept
maiku@pidgin.im
parents: 29208
diff changeset
1177 g_error_free(err);
29193
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1178 } 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
1179 type == PURPLE_MEDIA_INFO_UNMUTE)) {
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1180 PurpleMediaBackendFs2Private *priv =
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1181 PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1182 gboolean active = (type == PURPLE_MEDIA_INFO_MUTE);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1183 GList *sessions;
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1184
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1185 if (sid == NULL)
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1186 sessions = g_hash_table_get_values(priv->sessions);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1187 else
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1188 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
1189 get_session(self, sid));
29193
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1190
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1191 purple_debug_info("media", "Turning mute %s\n",
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1192 active ? "on" : "off");
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1193
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1194 for (; sessions; sessions = g_list_delete_link(
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1195 sessions, sessions)) {
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1196 PurpleMediaBackendFs2Session *session =
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1197 sessions->data;
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1198
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1199 if (session->type & PURPLE_MEDIA_SEND_AUDIO) {
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1200 gchar *name = g_strdup_printf("volume_%s",
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1201 session->id);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1202 GstElement *volume = gst_bin_get_by_name(
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1203 GST_BIN(priv->confbin), name);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1204 g_free(name);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1205 g_object_set(volume, "mute", active, NULL);
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1206 }
bd6279df50de Move mute functionality into the Fs2 media backend.
maiku@pidgin.im
parents: 29191
diff changeset
1207 }
31075
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1208 } 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
1209 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
1210 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
1211 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
1212 for (; streams; streams =
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1213 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
1214 PurpleMediaBackendFs2Stream *stream = streams->data;
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1215 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
1216 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
1217 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
1218 stream->session->type & ((active) ?
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1219 ~PURPLE_MEDIA_SEND_AUDIO :
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1220 PURPLE_MEDIA_AUDIO)), NULL);
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1221 }
a202f4dcbb96 Stop sending audio when placing a call on hold. Fixes #13032.
jakub.adam@ktknet.cz
parents: 30528
diff changeset
1222 }
29184
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1223 } 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
1224 type == PURPLE_MEDIA_INFO_UNPAUSE)) {
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1225 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
1226 GList *streams = get_streams(self, sid, name);
29184
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1227 for (; streams; streams =
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1228 g_list_delete_link(streams, streams)) {
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1229 PurpleMediaBackendFs2Stream *stream = streams->data;
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1230 if (stream->session->type & PURPLE_MEDIA_SEND_VIDEO) {
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1231 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
1232 session_type_to_fs_stream_direction(
29184
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1233 stream->session->type & ((active) ?
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1234 ~PURPLE_MEDIA_SEND_VIDEO :
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1235 PURPLE_MEDIA_VIDEO)), NULL);
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1236 }
dfc724880907 Move pause functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29183
diff changeset
1237 }
29182
a27e41f373db Handle part of accepting a stream in the Fs2 media backend.
maiku@pidgin.im
parents: 29181
diff changeset
1238 }
29154
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1239 }
2f8151fed0ae Various tweaks, fixes, and added debug output. Attached some media signals,
maiku@pidgin.im
parents: 29149
diff changeset
1240
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1241 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1242 init_conference(PurpleMediaBackendFs2 *self)
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1243 {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1244 PurpleMediaBackendFs2Private *priv =
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1245 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
1246 GstElement *pipeline;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1247 GstBus *bus;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1248 gchar *name;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1249
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1250 priv->conference = FS_CONFERENCE(
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1251 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
1252
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1253 if (priv->conference == NULL) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1254 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
1255 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1256 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1257
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1258 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
1259 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
1260
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1261 if (pipeline == NULL) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1262 purple_debug_error("backend-fs2",
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1263 "Couldn't retrieve pipeline.\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1264 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1265 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1266
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1267 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
1268 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
1269 if (priv->confbin == NULL) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1270 purple_debug_error("backend-fs2",
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1271 "Couldn't create confbin.\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1272 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1273 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1274
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1275 g_free(name);
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1276
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1277 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
1278 if (bus == NULL) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1279 purple_debug_error("backend-fs2",
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1280 "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
1281 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1282 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1283
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1284 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
1285 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
1286 gst_object_unref(bus);
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1287
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1288 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
1289 GST_ELEMENT(priv->confbin))) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1290 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
1291 "element to the pipeline\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1292 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1293 }
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 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
1296 GST_ELEMENT(priv->conference))) {
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1297 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
1298 "element to the confbin\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1299 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1300 }
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 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
1303 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
1304 purple_debug_error("backend-fs2",
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1305 "Failed to start conference.\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1306 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1307 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1308
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1309 return TRUE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1310 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1311
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1312 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1313 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
1314 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
1315 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1316 /*
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1317 * 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
1318 */
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1319 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
1320 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
1321 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1322 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1323
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1324 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1325 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
1326 PurpleMediaSessionType type)
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1327 {
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1328 PurpleMediaBackendFs2Private *priv =
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1329 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
1330 PurpleMediaBackendFs2Session *session;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1331 PurpleMediaSessionType session_type;
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1332 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
1333 FsStreamDirection type_direction =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1334 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
1335 GstElement *src;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1336 GstPad *sinkpad, *srcpad;
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
1337 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
1338
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1339 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
1340 return TRUE;
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1341
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1342 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
1343 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
1344 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
1345 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
1346 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
1347
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1348 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
1349 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
1350 "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
1351 sess_id);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1352 return FALSE;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1353 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1354
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1355 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
1356
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1357 if (session == NULL) {
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1358 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
1359 "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
1360 " 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
1361 return FALSE;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1362 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1363
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1364 if (session->src)
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1365 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
1366
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1367 session->src = src;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1368 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
1369
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1370 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
1371 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
1372
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1373 /* 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
1374 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
1375 == 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
1376 GstPad *pad = gst_element_get_static_pad(session->tee, "sink");
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
1377 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
1378 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
1379 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
1380 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
1381 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1382
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1383 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
1384 gst_element_link(session->src, priv->confbin);
31105
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
1385 if (ghost)
0485aed45f5b This patch fixes #12758.
jakub.adam@ktknet.cz
parents: 31086
diff changeset
1386 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
1387
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1388 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
1389 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
1390 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
1391 GstElement *level;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1392 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
1393 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
1394 "/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
1395 g_free(name);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1396 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
1397 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
1398 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
1399 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
1400 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
1401 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
1402 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
1403 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
1404 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
1405 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
1406 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
1407 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
1408 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
1409 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
1410 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
1411 } else {
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1412 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
1413 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1414
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1415 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
1416 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
1417 ? "success" : "failure");
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1418 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
1419 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
1420
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1421 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
1422
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1423 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
1424 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
1425
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1426 return TRUE;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1427 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1428
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1429 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1430 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
1431 PurpleMediaSessionType type, gboolean initiator,
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1432 const gchar *transmitter)
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1433 {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1434 PurpleMediaBackendFs2Private *priv =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1435 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
1436 PurpleMediaBackendFs2Session *session;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1437 GError *err = NULL;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1438 GList *codec_conf = NULL, *iter = NULL;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1439 gchar *filename = NULL;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1440 gboolean is_nice = !strcmp(transmitter, "nice");
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1441
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1442 session = g_new0(PurpleMediaBackendFs2Session, 1);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1443
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1444 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
1445 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
1446
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1447 if (err != NULL) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1448 purple_media_error(priv->media,
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1449 _("Error creating session: %s"),
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1450 err->message);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1451 g_error_free(err);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1452 g_free(session);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1453 return FALSE;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1454 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1455
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1456 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
1457 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
1458 g_free(filename);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1459
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1460 if (err != NULL) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1461 if (err->code == 4)
29170
7b0931b3e060 Correct some debug categories.
maiku@pidgin.im
parents: 29169
diff changeset
1462 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
1463 "fs-codec.conf: %s\n",
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1464 err->message);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1465 else
29170
7b0931b3e060 Correct some debug categories.
maiku@pidgin.im
parents: 29169
diff changeset
1466 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
1467 "fs-codec.conf: %s\n",
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1468 err->message);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1469 g_error_free(err);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1470 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1471
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1472 /*
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1473 * 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
1474 * there isn't a speex entry.
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1475 */
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1476 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
1477 FsCodec *codec = iter->data;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1478 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
1479 break;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1480 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1481
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1482 if (iter == NULL) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1483 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
1484 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
1485 "SPEEX", FS_MEDIA_TYPE_AUDIO, 8000));
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1486 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
1487 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
1488 "SPEEX", FS_MEDIA_TYPE_AUDIO, 16000));
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1489 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1490
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1491 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
1492 fs_codec_list_destroy(codec_conf);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1493
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 * 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
1496 * receiving the src-pad-added signal.
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1497 * Only works for non-multicast FsRtpSessions.
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1498 */
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1499 if (is_nice || !strcmp(transmitter, "rawudp"))
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1500 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
1501 "no-rtcp-timeout", 0, NULL);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1502
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1503 /*
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1504 * 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
1505 */
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1506 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
1507 FsElementAddedNotifier *notifier =
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1508 fs_element_added_notifier_new();
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1509 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
1510 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
1511 fs_element_added_notifier_add(notifier,
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1512 GST_BIN(priv->conference));
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1513 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1514
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1515 session->id = g_strdup(sess_id);
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1516 session->backend = self;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1517 session->type = type;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1518
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1519 if (!priv->sessions) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1520 purple_debug_info("backend-fs2",
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1521 "Creating hash table for sessions\n");
30439
1feb2baeac2d Fix some media code leaks.
jakub.adam@ktknet.cz
parents: 30430
diff changeset
1522 priv->sessions = g_hash_table_new_full(g_str_hash, g_str_equal,
1feb2baeac2d Fix some media code leaks.
jakub.adam@ktknet.cz
parents: 30430
diff changeset
1523 g_free, NULL);
29159
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 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
1527
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1528 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
1529 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
1530 return FALSE;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1531 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1532
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1533 return TRUE;
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
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1536 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1537 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
1538 {
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1539 PurpleMediaBackendFs2Private *priv =
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1540 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
1541 FsParticipant *participant;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1542 GError *err = NULL;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1543
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1544 participant = fs_conference_new_participant(
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1545 priv->conference, name, &err);
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1546
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1547 if (err) {
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1548 purple_debug_error("backend-fs2",
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1549 "Error creating participant: %s\n",
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1550 err->message);
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1551 g_error_free(err);
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1552 return FALSE;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1553 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1554
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1555 if (!priv->participants) {
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1556 purple_debug_info("backend-fs2",
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1557 "Creating hash table for participants\n");
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1558 priv->participants = g_hash_table_new_full(g_str_hash,
30439
1feb2baeac2d Fix some media code leaks.
jakub.adam@ktknet.cz
parents: 30430
diff changeset
1559 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
1560 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1561
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1562 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
1563
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1564 return TRUE;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1565 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1566
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1567 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1568 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
1569 {
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1570 PurpleMediaBackendFs2Private *priv;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1571
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1572 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
1573
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1574 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
1575 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
1576
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1577 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
1578 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
1579 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
1580
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1581 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
1582 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
1583 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
1584 return FALSE;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1585 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1586
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1587 static void
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1588 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
1589 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
1590 {
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1591 PurpleMediaBackendFs2Private *priv;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1592 GstPad *sinkpad;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1593
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1594 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
1595 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
1596
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1597 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
1598
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1599 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
1600 GstElement *sink = NULL;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1601
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1602 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
1603 GstElement *queue = NULL;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1604 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
1605 "/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
1606 /*
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1607 * 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
1608 * audioconvert ! audioresample ! liveadder !
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1609 * audioresample ! audioconvert ! realsink
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1610 */
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1611 queue = gst_element_factory_make("queue", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1612 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
1613 "volume", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1614 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
1615 output_volume, NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1616 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
1617 "level", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1618 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
1619 "liveadder", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1620 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
1621 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
1622 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
1623 stream->session->id,
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1624 stream->participant);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1625 gst_bin_add(GST_BIN(priv->confbin), queue);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1626 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
1627 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
1628 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
1629 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
1630 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
1631 gst_element_set_state(stream->volume, GST_STATE_PLAYING);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1632 gst_element_set_state(queue, GST_STATE_PLAYING);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1633 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
1634 gst_element_link(stream->volume, stream->level);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1635 gst_element_link(queue, stream->volume);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1636 sink = queue;
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1637 } 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
1638 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
1639 "fsfunnel", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1640 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
1641 "fakesink", NULL);
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1642 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
1643 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
1644 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
1645 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1646 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
1647 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
1648 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
1649 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
1650 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
1651 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
1652 }
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 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
1655 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
1656 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
1657
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1658 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
1659 (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
1660 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1661
30442
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1662 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
1663 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
1664 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
1665 {
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1666 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
1667 GstStructure *turn_setup = gst_structure_new("relay-info",
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1668 "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
1669 "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
1670 "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
1671 "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
1672 "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
1673 NULL);
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1674
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1675 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
1676 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
1677 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
1678 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
1679 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
1680 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
1681 }
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1682
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1683 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
1684 }
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1685
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1686 static gboolean
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1687 create_stream(PurpleMediaBackendFs2 *self,
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1688 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
1689 PurpleMediaSessionType type, gboolean initiator,
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1690 const gchar *transmitter,
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1691 guint num_params, GParameter *params)
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1692 {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1693 PurpleMediaBackendFs2Private *priv =
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1694 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
1695 GError *err = NULL;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1696 FsStream *fsstream = NULL;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1697 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
1698 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
1699 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
1700 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
1701 FsStreamDirection type_direction =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1702 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
1703 PurpleMediaBackendFs2Session *session;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1704 PurpleMediaBackendFs2Stream *stream;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1705 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
1706 /* 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
1707 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
1708 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
1709 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
1710 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
1711
3d08b59ebf59 Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents: 29394
diff changeset
1712 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
1713 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
1714 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
1715 break;
3d08b59ebf59 Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents: 29394
diff changeset
1716 }
3d08b59ebf59 Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents: 29394
diff changeset
1717 }
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1718
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1719 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
1720
29350
1876a447db11 media: "Backport" the ICE controlling-mode fix in the new media subdirectory
Marcus Lundblad <ml@update.uu.se>
parents: 29325
diff changeset
1721 /* 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
1722 _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
1723 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
1724 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
1725 ++_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
1726
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1727 if (stun_ip) {
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1728 purple_debug_info("backend-fs2",
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1729 "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
1730
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1731 _params[_num_params].name = "stun-ip";
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1732 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
1733 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
1734 ++_num_params;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1735 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1736
30525
3d08b59ebf59 Make the check for PRPL-supplied TURN parameters in the new place
Marcus Lundblad <ml@update.uu.se>
parents: 29394
diff changeset
1737 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
1738 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
1739 gint port;
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1740 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
1741 "/purple/network/turn_username");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1742 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
1743 "/purple/network/turn_password");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1744
30442
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1745 /* UDP */
603638fad2f1 Added ability to relay over TCP and TLS for TURN for media.
Marcus Lundblad <ml@update.uu.se>
parents: 30174
diff changeset
1746 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
1747 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
1748 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
1749 password, "udp");
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1750 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1751
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
1752 /* 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
1753 supported by libnice using non-google mode */
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1754
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1755 purple_debug_info("backend-fs2",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1756 "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
1757 _params[_num_params].name = "relay-info";
31086
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31075
diff changeset
1758 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
1759 G_TYPE_VALUE_ARRAY);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1760 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
1761 relay_info);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1762 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
1763 _num_params++;
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1764 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1765
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1766 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
1767
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1768 if (session == NULL) {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1769 purple_debug_error("backend-fs2",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1770 "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
1771 return FALSE;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1772 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1773
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1774 participant = get_participant(self, who);
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1775
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1776 if (participant == NULL) {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1777 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
1778 "participant to create stream.\n");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1779 return FALSE;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1780 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1781
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1782 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
1783 initiator == TRUE ? type_direction :
9da83d5f48c3 Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents: 29213
diff changeset
1784 (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
1785 _num_params, _params, &err);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1786 g_free(_params);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1787
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1788 if (fsstream == NULL) {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1789 if (err) {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1790 purple_debug_error("backend-fs2",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1791 "Error creating stream: %s\n",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1792 err && err->message ?
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1793 err->message : "NULL");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1794 g_error_free(err);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1795 } else
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1796 purple_debug_error("backend-fs2",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1797 "Error creating stream\n");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1798 return FALSE;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1799 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1800
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1801 stream = g_new0(PurpleMediaBackendFs2Stream, 1);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1802 stream->participant = g_strdup(who);
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1803 stream->session = session;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1804 stream->stream = fsstream;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1805
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1806 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
1807
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
1808 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
1809 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
1810
29172
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1811 return TRUE;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1812 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1813
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1814 static gboolean
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1815 purple_media_backend_fs2_add_stream(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1816 const gchar *sess_id, const gchar *who,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1817 PurpleMediaSessionType type, gboolean initiator,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1818 const gchar *transmitter,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1819 guint num_params, GParameter *params)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1820 {
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1821 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
1822 PurpleMediaBackendFs2Private *priv =
29159
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1823 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
1824 PurpleMediaBackendFs2Stream *stream;
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
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 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
1827 purple_debug_error("backend-fs2",
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1828 "Error initializing the conference.\n");
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1829 return FALSE;
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1830 }
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1831
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1832 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
1833 !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
1834 initiator, transmitter)) {
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1835 purple_debug_error("backend-fs2",
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1836 "Error creating the session.\n");
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1837 return FALSE;
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1838 }
efeb21092ed2 Begin transferring FsSession over to the Farsight 2 media backend.
maiku@pidgin.im
parents: 29158
diff changeset
1839
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1840 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
1841 !create_participant(backend, who)) {
29169
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1842 purple_debug_error("backend-fs2",
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1843 "Error creating the participant.\n");
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1844 return FALSE;
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1845 }
98a1b62a0f7e Add participant creation and destruction to the Fs2 media backend.
maiku@pidgin.im
parents: 29163
diff changeset
1846
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1847 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
1848
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1849 if (stream != NULL) {
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1850 FsStreamDirection type_direction =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1851 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
1852
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1853 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
1854 stream->session->type) != type_direction) {
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1855 /* change direction */
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1856 g_object_set(stream->stream, "direction",
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1857 type_direction, NULL);
f65689100cfe Move odd direction changing functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29184
diff changeset
1858 }
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1859 } 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
1860 initiator, transmitter, num_params, params)) {
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1861 purple_debug_error("backend-fs2",
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1862 "Error creating the stream.\n");
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1863 return FALSE;
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1864 }
f600903f7811 Transfer creating Farsight 2 streams to the Fs2 media backend.
maiku@pidgin.im
parents: 29170
diff changeset
1865
29149
4aa30863743b Create and dispose the conference in the Farsight 2 media backend.
maiku@pidgin.im
parents: 29146
diff changeset
1866 return TRUE;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1867 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1868
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1869 static void
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1870 purple_media_backend_fs2_add_remote_candidates(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1871 const gchar *sess_id, const gchar *participant,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1872 GList *remote_candidates)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1873 {
29173
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1874 PurpleMediaBackendFs2Private *priv;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1875 PurpleMediaBackendFs2Stream *stream;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1876 GError *err = NULL;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1877
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1878 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
1879
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1880 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
1881 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
1882 sess_id, participant);
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1883
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1884 if (stream == NULL) {
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1885 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
1886 "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
1887 "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
1888 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
1889 participant ? participant : "(null)");
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1890 return;
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1891 }
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1892
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1893 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
1894 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
1895
29239
9da83d5f48c3 Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents: 29213
diff changeset
1896 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
1897 purple_media_accepted(
9da83d5f48c3 Allow connection checks before acceptance. Fixes Empathy<->Pidgin.
maiku@pidgin.im
parents: 29213
diff changeset
1898 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
1899 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
1900 stream->remote_candidates, &err);
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1901
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1902 if (err) {
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1903 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
1904 " 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
1905 g_error_free(err);
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1906 }
983af0970bb2 Transfer setting Farsight 2's remote candidates to the Fs2 media backend.
maiku@pidgin.im
parents: 29172
diff changeset
1907 }
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1908 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1909
29187
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1910 static gboolean
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1911 purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self,
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1912 const gchar *sess_id)
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1913 {
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1914 PurpleMediaBackendFs2Private *priv;
30414
77449a80fef2 Fix a possible Garbage return value.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30174
diff changeset
1915 gboolean ret = FALSE;
29187
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1916
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1917 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
1918
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1919 priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self);
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1920
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1921 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
1922 PurpleMediaBackendFs2Session *session = get_session(
29187
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1923 PURPLE_MEDIA_BACKEND_FS2(self), sess_id);
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1924
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1925 if (session == NULL)
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1926 return FALSE;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1927
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1928 if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1929 PURPLE_MEDIA_SEND_VIDEO))
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1930 g_object_get(session->session,
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1931 "codecs-ready", &ret, NULL);
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1932 else
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1933 ret = TRUE;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1934 } else {
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1935 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
1936
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1937 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
1938 PurpleMediaBackendFs2Session *session = values->data;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1939 if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1940 PURPLE_MEDIA_SEND_VIDEO))
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1941 g_object_get(session->session,
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1942 "codecs-ready", &ret, NULL);
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1943 else
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1944 ret = TRUE;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1945
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1946 if (ret == FALSE)
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1947 break;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1948 }
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1949
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1950 if (values != NULL)
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1951 g_list_free(values);
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1952 }
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1953
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1954 return ret;
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1955 }
f351e87b7af0 Add codecs_ready to the media backend interface.
maiku@pidgin.im
parents: 29185
diff changeset
1956
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1957 static GList *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1958 purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1959 const gchar *sess_id)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1960 {
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1961 PurpleMediaBackendFs2Session *session;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1962 GList *fscodecs;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1963 GList *codecs;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1964
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1965 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
1966
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1967 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
1968
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1969 if (session == NULL)
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1970 return NULL;
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1971
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1972 g_object_get(G_OBJECT(session->session),
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1973 "codecs", &fscodecs, NULL);
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1974 codecs = codec_list_from_fs(fscodecs);
29175
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1975 fs_codec_list_destroy(fscodecs);
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1976
9c1810122f21 Transfer get_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29173
diff changeset
1977 return codecs;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1978 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1979
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1980 static GList *
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1981 purple_media_backend_fs2_get_local_candidates(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1982 const gchar *sess_id, const gchar *participant)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1983 {
29177
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1984 PurpleMediaBackendFs2Stream *stream;
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1985 GList *candidates = NULL;
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1986
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1987 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
1988
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1989 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
1990 sess_id, participant);
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1991
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1992 if (stream != NULL)
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
1993 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
1994 stream->local_candidates);
f0966e90ec44 Move get_local_candidates functionality over to the Fs2 media backend.
maiku@pidgin.im
parents: 29176
diff changeset
1995 return candidates;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1996 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1997
29178
a7cad99144f0 Make the backend interface's set_remote_codecs function return gboolean.
maiku@pidgin.im
parents: 29177
diff changeset
1998 static gboolean
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
1999 purple_media_backend_fs2_set_remote_codecs(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2000 const gchar *sess_id, const gchar *participant,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2001 GList *codecs)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2002 {
29179
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2003 PurpleMediaBackendFs2Stream *stream;
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2004 GList *fscodecs;
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2005 GError *err = NULL;
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2006
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2007 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
2008 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
2009 sess_id, participant);
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2010
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2011 if (stream == NULL)
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2012 return FALSE;
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2013
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2014 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
2015 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
2016 fs_codec_list_destroy(fscodecs);
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2017
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2018 if (err) {
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2019 purple_debug_error("backend-fs2",
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2020 "Error setting remote codecs: %s\n",
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2021 err->message);
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2022 g_error_free(err);
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2023 return FALSE;
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2024 }
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2025
a39696686dd6 Move set_remote_codecs functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29178
diff changeset
2026 return TRUE;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2027 }
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2028
29180
90c48f1e479a Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents: 29179
diff changeset
2029 static gboolean
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2030 purple_media_backend_fs2_set_send_codec(PurpleMediaBackend *self,
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2031 const gchar *sess_id, PurpleMediaCodec *codec)
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2032 {
29181
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2033 PurpleMediaBackendFs2Session *session;
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2034 FsCodec *fscodec;
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2035 GError *err = NULL;
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2036
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2037 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
2038
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2039 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
2040
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2041 if (session == NULL)
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2042 return FALSE;
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2043
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2044 fscodec = codec_to_fs(codec);
29181
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2045 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
2046 fs_codec_destroy(fscodec);
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2047
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2048 if (err) {
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2049 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
2050 g_error_free(err);
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2051 return FALSE;
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2052 }
ec5ed142f551 Move set_remote_codec functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29180
diff changeset
2053
29180
90c48f1e479a Change the media backend interface's set_send_codec to return gboolean to
maiku@pidgin.im
parents: 29179
diff changeset
2054 return TRUE;
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2055 }
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2056 #else
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2057 GType
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2058 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
2059 {
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2060 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
2061 }
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2062 #endif /* USE_VV */
29146
f46979436c78 Skeleton of the Farsight 2 media backend.
maiku@pidgin.im
parents:
diff changeset
2063
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2064 #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
2065 GstElement *
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2066 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
2067 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
2068 {
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2069 #ifdef USE_VV
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2070 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
2071 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
2072 #else
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2073 return NULL;
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2074 #endif
29189
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2075 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2076
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2077 GstElement *
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2078 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
2079 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
2080 {
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2081 #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
2082 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
2083 PurpleMediaBackendFs2Session *session =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2084 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
2085 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
2086 } 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
2087 PurpleMediaBackendFs2Stream *stream =
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2088 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
2089 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
2090 }
eadb9e309b87 Move all src and sink creation in PurpleMedia to the Fs2 media backend.
maiku@pidgin.im
parents: 29188
diff changeset
2091
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2092 #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
2093 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
2094 }
29191
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2095
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2096 void
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2097 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
2098 const gchar *sess_id, double level)
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2099 {
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2100 #ifdef USE_VV
29191
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2101 PurpleMediaBackendFs2Private *priv;
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2102 GList *sessions;
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2103
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2104 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
2105
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2106 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
2107
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2108 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
2109
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2110 if (sess_id == NULL)
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2111 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
2112 else
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2113 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
2114
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2115 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
2116 PurpleMediaBackendFs2Session *session = sessions->data;
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2117
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2118 if (session->type & PURPLE_MEDIA_SEND_AUDIO) {
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2119 gchar *name = g_strdup_printf("volume_%s",
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2120 session->id);
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2121 GstElement *volume = gst_bin_get_by_name(
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2122 GST_BIN(priv->confbin), name);
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2123 g_free(name);
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2124 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
2125 }
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2126 }
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2127 #endif /* USE_VV */
29191
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2128 }
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2129
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2130 void
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2131 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
2132 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
2133 {
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2134 #ifdef USE_VV
29191
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2135 GList *streams;
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2136
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2137 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
2138
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2139 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
2140
29213
85a7a93cd19a Remove the underscore from functions as the underscore is reserved for compilers
maiku@pidgin.im
parents: 29209
diff changeset
2141 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
2142
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2143 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
2144 PurpleMediaBackendFs2Stream *stream = streams->data;
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2145
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2146 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
2147 && GST_IS_ELEMENT(stream->volume)) {
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2148 g_object_set(stream->volume, "volume",
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2149 level/10.0, NULL);
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2150 }
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2151 }
29320
bd7159aeabc0 Wraps backend-fs2.c in #ifdefs for when VV or GSTREAMER is disabled.
maiku@pidgin.im
parents: 29239
diff changeset
2152 #endif /* USE_VV */
29191
95f918df7f09 Move volume setting functionality to the Fs2 media backend.
maiku@pidgin.im
parents: 29190
diff changeset
2153 }
29325
858d1a47bf83 Fix compile with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 29320
diff changeset
2154 #endif /* USE_GSTREAMER */