Gentoo Archives: gentoo-commits

From: "Olivier Crete (tester)" <tester@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in net-im/pidgin/files: port-to-farstream-v5.patch
Date: Sat, 31 Mar 2012 21:02:21
Message-Id: 20120331210156.79C6A2004C@flycatcher.gentoo.org
1 tester 12/03/31 21:01:56
2
3 Added: port-to-farstream-v5.patch
4 Log:
5 Add package.masked version that uses farstream instead of farsight2
6
7 (Portage version: 2.1.10.49/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.1 net-im/pidgin/files/port-to-farstream-v5.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-im/pidgin/files/port-to-farstream-v5.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-im/pidgin/files/port-to-farstream-v5.patch?rev=1.1&content-type=text/plain
14
15 Index: port-to-farstream-v5.patch
16 ===================================================================
17 diff -aur pidgin-2.10.3-orig//configure.ac pidgin-2.10.3/configure.ac
18 --- pidgin-2.10.3-orig//configure.ac 2012-03-25 23:49:14.000000000 -0400
19 +++ pidgin-2.10.3/configure.ac 2012-03-31 16:23:09.772818869 -0400
20 @@ -786,18 +786,18 @@
21 fi
22
23 dnl #######################################################################
24 -dnl # Check for Farsight
25 +dnl # Check for Farstream
26 dnl #######################################################################
27 -AC_ARG_ENABLE(farsight,
28 - [AC_HELP_STRING([--disable-farsight], [compile without farsight support])],
29 - enable_farsight="$enableval", enable_farsight="yes")
30 -if test "x$enable_farsight" != "xno"; then
31 - PKG_CHECK_MODULES(FARSIGHT, [farsight2-0.10 >= 0.0.9], [
32 - AC_DEFINE(USE_FARSIGHT, 1, [Use Farsight for voice and video])
33 - AC_SUBST(FARSIGHT_CFLAGS)
34 - AC_SUBST(FARSIGHT_LIBS)
35 +AC_ARG_ENABLE(farstream,
36 + [AC_HELP_STRING([--disable-farstream], [compile without farstream support])],
37 + enable_farstream="$enableval", enable_farstream="yes")
38 +if test "x$enable_farstream" != "xno"; then
39 + PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [
40 + AC_DEFINE(USE_FARSTREAM, 1, [Use Farstream for voice and video])
41 + AC_SUBST(FARSTREAM_CFLAGS)
42 + AC_SUBST(FARSTREAM_LIBS)
43 ], [
44 - enable_farsight="no"
45 + enable_farstream="no"
46 ])
47 fi
48
49 @@ -808,20 +808,20 @@
50 [AC_HELP_STRING([--disable-vv], [compile without voice and video support])],
51 enable_vv="$enableval", enable_vv="yes")
52 if test "x$enable_vv" != "xno"; then
53 - if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno"; then
54 + if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then
55 AC_DEFINE(USE_VV, 1, [Use voice and video])
56 else
57 enable_vv="no"
58 if test "x$force_deps" = "xyes"; then
59 AC_MSG_ERROR([
60 Dependencies for voice/video were not met.
61 -Install the necessary gstreamer and farsight packages first.
62 +Install the necessary gstreamer and farstream packages first.
63 Or use --disable-vv if you do not need voice/video support.
64 ])
65 fi
66 fi
67 fi
68 -AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno")
69 +AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno")
70
71 dnl #######################################################################
72 dnl # Check for Internationalized Domain Name support
73 Only in pidgin-2.10.3: configure.ac.orig
74 diff -aur pidgin-2.10.3-orig//libpurple/Makefile.am pidgin-2.10.3/libpurple/Makefile.am
75 --- pidgin-2.10.3-orig//libpurple/Makefile.am 2012-03-25 23:49:15.000000000 -0400
76 +++ pidgin-2.10.3/libpurple/Makefile.am 2012-03-31 16:23:09.776152155 -0400
77 @@ -306,7 +306,7 @@
78 $(LIBXML_LIBS) \
79 $(NETWORKMANAGER_LIBS) \
80 $(INTLLIBS) \
81 - $(FARSIGHT_LIBS) \
82 + $(FARSTREAM_LIBS) \
83 $(GSTREAMER_LIBS) \
84 $(GSTINTERFACES_LIBS) \
85 $(IDN_LIBS) \
86 @@ -322,7 +322,7 @@
87 $(DEBUG_CFLAGS) \
88 $(DBUS_CFLAGS) \
89 $(LIBXML_CFLAGS) \
90 - $(FARSIGHT_CFLAGS) \
91 + $(FARSTREAM_CFLAGS) \
92 $(GSTREAMER_CFLAGS) \
93 $(GSTINTERFACES_CFLAGS) \
94 $(IDN_CFLAGS) \
95 diff -aur pidgin-2.10.3-orig//libpurple/media/backend-fs2.c pidgin-2.10.3/libpurple/media/backend-fs2.c
96 --- pidgin-2.10.3-orig//libpurple/media/backend-fs2.c 2012-03-25 23:49:16.000000000 -0400
97 +++ pidgin-2.10.3/libpurple/media/backend-fs2.c 2012-03-31 16:41:52.840615660 -0400
98 @@ -1,5 +1,5 @@
99 /**
100 - * @file backend-fs2.c Farsight 2 backend for media API
101 + * @file backend-fs2.c Farstream backend for media API
102 * @ingroup core
103 */
104
105 @@ -34,8 +34,9 @@
106 #include "network.h"
107 #include "media-gst.h"
108
109 -#include <gst/farsight/fs-conference-iface.h>
110 -#include <gst/farsight/fs-element-added-notifier.h>
111 +#include <farstream/fs-conference.h>
112 +#include <farstream/fs-element-added-notifier.h>
113 +#include <farstream/fs-utils.h>
114
115 /** @copydoc _PurpleMediaBackendFs2Class */
116 typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class;
117 @@ -112,6 +113,8 @@
118 gchar *participant;
119 FsStream *stream;
120
121 + gboolean supports_add;
122 +
123 GstElement *src;
124 GstElement *tee;
125 GstElement *volume;
126 @@ -147,6 +150,8 @@
127 FsConference *conference;
128 gchar *conference_type;
129
130 + FsElementAddedNotifier *notifier;
131 +
132 GHashTable *sessions;
133 GHashTable *participants;
134
135 @@ -212,6 +217,11 @@
136
137 purple_debug_info("backend-fs2", "purple_media_backend_fs2_dispose\n");
138
139 + if (priv->notifier) {
140 + g_object_unref(priv->notifier);
141 + priv->notifier = NULL;
142 + }
143 +
144 if (priv->confbin) {
145 GstElement *pipeline;
146
147 @@ -846,7 +856,7 @@
148 priv->conference != FS_CONFERENCE(src))
149 return;
150
151 - if (gst_structure_has_name(msg->structure, "farsight-error")) {
152 + if (gst_structure_has_name(msg->structure, "farstream-error")) {
153 FsError error_no;
154 gst_structure_get_enum(msg->structure, "error-no",
155 FS_TYPE_ERROR, (gint*)&error_no);
156 @@ -859,24 +869,9 @@
157 " packages."));
158 purple_media_end(priv->media, NULL, NULL);
159 break;
160 - case FS_ERROR_NO_CODECS_LEFT:
161 - purple_media_error(priv->media, _("No codecs"
162 - " left. Your codec"
163 - " preferences in"
164 - " fs-codecs.conf are too"
165 - " strict."));
166 - purple_media_end(priv->media, NULL, NULL);
167 - break;
168 - case FS_ERROR_UNKNOWN_CNAME:
169 - /*
170 - * Unknown CName is only a problem for the
171 - * multicast transmitter which isn't used.
172 - * It is also deprecated.
173 - */
174 - break;
175 default:
176 purple_debug_error("backend-fs2",
177 - "farsight-error: %i: %s\n",
178 + "farstream-error: %i: %s\n",
179 error_no,
180 gst_structure_get_string(
181 msg->structure, "error-msg"));
182 @@ -885,11 +880,11 @@
183
184 if (FS_ERROR_IS_FATAL(error_no)) {
185 purple_media_error(priv->media, _("A non-recoverable "
186 - "Farsight2 error has occurred."));
187 + "Farstream error has occurred."));
188 purple_media_end(priv->media, NULL, NULL);
189 }
190 } else if (gst_structure_has_name(msg->structure,
191 - "farsight-new-local-candidate")) {
192 + "farstream-new-local-candidate")) {
193 const GValue *value;
194 FsStream *stream;
195 FsCandidate *local_candidate;
196 @@ -924,7 +919,7 @@
197 session->id, name, candidate);
198 g_object_unref(candidate);
199 } else if (gst_structure_has_name(msg->structure,
200 - "farsight-local-candidates-prepared")) {
201 + "farstream-local-candidates-prepared")) {
202 const GValue *value;
203 FsStream *stream;
204 FsParticipant *participant;
205 @@ -942,7 +937,7 @@
206 g_signal_emit_by_name(self, "candidates-prepared",
207 session->id, name);
208 } else if (gst_structure_has_name(msg->structure,
209 - "farsight-new-active-candidate-pair")) {
210 + "farstream-new-active-candidate-pair")) {
211 const GValue *value;
212 FsStream *stream;
213 FsCandidate *local_candidate;
214 @@ -976,7 +971,7 @@
215 g_object_unref(lcandidate);
216 g_object_unref(rcandidate);
217 } else if (gst_structure_has_name(msg->structure,
218 - "farsight-recv-codecs-changed")) {
219 + "farstream-recv-codecs-changed")) {
220 const GValue *value;
221 GList *codecs;
222 FsCodec *codec;
223 @@ -986,10 +981,10 @@
224 codec = codecs->data;
225
226 purple_debug_info("backend-fs2",
227 - "farsight-recv-codecs-changed: %s\n",
228 + "farstream-recv-codecs-changed: %s\n",
229 codec->encoding_name);
230 } else if (gst_structure_has_name(msg->structure,
231 - "farsight-component-state-changed")) {
232 + "farstream-component-state-changed")) {
233 const GValue *value;
234 FsStreamState fsstate;
235 guint component;
236 @@ -1025,11 +1020,11 @@
237 }
238
239 purple_debug_info("backend-fs2",
240 - "farsight-component-state-changed: "
241 + "farstream-component-state-changed: "
242 "component: %u state: %s\n",
243 component, state);
244 } else if (gst_structure_has_name(msg->structure,
245 - "farsight-send-codec-changed")) {
246 + "farstream-send-codec-changed")) {
247 const GValue *value;
248 FsCodec *codec;
249 gchar *codec_str;
250 @@ -1039,12 +1034,12 @@
251 codec_str = fs_codec_to_string(codec);
252
253 purple_debug_info("backend-fs2",
254 - "farsight-send-codec-changed: codec: %s\n",
255 + "farstream-send-codec-changed: codec: %s\n",
256 codec_str);
257
258 g_free(codec_str);
259 } else if (gst_structure_has_name(msg->structure,
260 - "farsight-codecs-changed")) {
261 + "farstream-codecs-changed")) {
262 const GValue *value;
263 FsSession *fssession;
264 GList *sessions;
265 @@ -1220,8 +1215,12 @@
266 purple_media_is_initiator(media, sid, name))
267 return;
268
269 - fs_stream_set_remote_candidates(stream->stream,
270 - stream->remote_candidates, &err);
271 + if (stream->supports_add)
272 + fs_stream_add_remote_candidates(stream->stream,
273 + stream->remote_candidates, &err);
274 + else
275 + fs_stream_force_remote_candidates(stream->stream,
276 + stream->remote_candidates, &err);
277
278 if (err == NULL)
279 return;
280 @@ -1301,6 +1300,7 @@
281 GstElement *pipeline;
282 GstBus *bus;
283 gchar *name;
284 + GKeyFile *default_props;
285
286 priv->conference = FS_CONFERENCE(
287 gst_element_factory_make(priv->conference_type, NULL));
288 @@ -1343,6 +1343,14 @@
289 return FALSE;
290 }
291
292 + default_props = fs_utils_get_default_element_properties(GST_ELEMENT(priv->conference));
293 + if (default_props != NULL) {
294 + priv->notifier = fs_element_added_notifier_new();
295 + fs_element_added_notifier_add(priv->notifier,
296 + GST_BIN(priv->confbin));
297 + fs_element_added_notifier_set_properties_from_keyfile(priv->notifier, default_props);
298 + }
299 +
300 g_signal_connect(G_OBJECT(bus), "message",
301 G_CALLBACK(gst_bus_cb), self);
302 gst_object_unref(bus);
303 @@ -1559,7 +1567,7 @@
304 * receiving the src-pad-added signal.
305 * Only works for non-multicast FsRtpSessions.
306 */
307 - if (is_nice || !strcmp(transmitter, "rawudp"))
308 + if (!!strcmp(transmitter, "multicast"))
309 g_object_set(G_OBJECT(session->session),
310 "no-rtcp-timeout", 0, NULL);
311
312 @@ -1612,7 +1620,7 @@
313 GError *err = NULL;
314
315 participant = fs_conference_new_participant(
316 - priv->conference, name, &err);
317 + priv->conference, &err);
318
319 if (err) {
320 purple_debug_error("backend-fs2",
321 @@ -1622,6 +1630,12 @@
322 return FALSE;
323 }
324
325 + if (g_object_class_find_property(G_OBJECT_GET_CLASS(participant),
326 + "cname")) {
327 + g_object_set(participant, "cname", name, NULL);
328 + }
329 +
330 +
331 if (!priv->participants) {
332 purple_debug_info("backend-fs2",
333 "Creating hash table for participants\n");
334 @@ -1786,6 +1800,40 @@
335 }
336 }
337
338 +
339 + session = get_session(self, sess_id);
340 +
341 + if (session == NULL) {
342 + purple_debug_error("backend-fs2",
343 + "Couldn't find session to create stream.\n");
344 + return FALSE;
345 + }
346 +
347 + participant = get_participant(self, who);
348 +
349 + if (participant == NULL) {
350 + purple_debug_error("backend-fs2", "Couldn't find "
351 + "participant to create stream.\n");
352 + return FALSE;
353 + }
354 +
355 + fsstream = fs_session_new_stream(session->session, participant,
356 + initiator == TRUE ? type_direction :
357 + (type_direction & FS_DIRECTION_RECV), &err);
358 +
359 + if (fsstream == NULL) {
360 + if (err) {
361 + purple_debug_error("backend-fs2",
362 + "Error creating stream: %s\n",
363 + err && err->message ?
364 + err->message : "NULL");
365 + g_error_free(err);
366 + } else
367 + purple_debug_error("backend-fs2",
368 + "Error creating stream\n");
369 + return FALSE;
370 + }
371 +
372 memcpy(_params, params, sizeof(GParameter) * num_params);
373
374 /* set the controlling mode parameter */
375 @@ -1840,45 +1888,22 @@
376 _num_params++;
377 }
378
379 - session = get_session(self, sess_id);
380
381 - if (session == NULL) {
382 - purple_debug_error("backend-fs2",
383 - "Couldn't find session to create stream.\n");
384 - return FALSE;
385 - }
386 -
387 - participant = get_participant(self, who);
388 -
389 - if (participant == NULL) {
390 - purple_debug_error("backend-fs2", "Couldn't find "
391 - "participant to create stream.\n");
392 - return FALSE;
393 + if(!fs_stream_set_transmitter(fsstream, transmitter,
394 + _params, _num_params, &err)) {
395 + purple_debug_error("backend-fs2", "Could not set transmitter %s: %s.\n", transmitter, err->message);
396 + g_clear_error(&err);
397 + g_free(_params);
398 + return FALSE;
399 }
400 -
401 - fsstream = fs_session_new_stream(session->session, participant,
402 - initiator == TRUE ? type_direction :
403 - (type_direction & FS_DIRECTION_RECV), transmitter,
404 - _num_params, _params, &err);
405 g_free(_params);
406
407 - if (fsstream == NULL) {
408 - if (err) {
409 - purple_debug_error("backend-fs2",
410 - "Error creating stream: %s\n",
411 - err && err->message ?
412 - err->message : "NULL");
413 - g_error_free(err);
414 - } else
415 - purple_debug_error("backend-fs2",
416 - "Error creating stream\n");
417 - return FALSE;
418 - }
419
420 stream = g_new0(PurpleMediaBackendFs2Stream, 1);
421 stream->participant = g_strdup(who);
422 stream->session = session;
423 stream->stream = fsstream;
424 + stream->supports_add = !strcmp(transmitter, "nice");
425
426 priv->streams = g_list_append(priv->streams, stream);
427
428 @@ -1991,7 +2016,11 @@
429 if (purple_media_is_initiator(priv->media, sess_id, participant) ||
430 purple_media_accepted(
431 priv->media, sess_id, participant)) {
432 - fs_stream_set_remote_candidates(stream->stream,
433 + if (stream->supports_add)
434 + fs_stream_add_remote_candidates(stream->stream,
435 + stream->remote_candidates, &err);
436 + else
437 + fs_stream_force_remote_candidates(stream->stream,
438 stream->remote_candidates, &err);
439
440 if (err) {
441 @@ -2016,6 +2045,7 @@
442 if (sess_id != NULL) {
443 PurpleMediaBackendFs2Session *session = get_session(
444 PURPLE_MEDIA_BACKEND_FS2(self), sess_id);
445 + GList *codecs = NULL;
446
447 if (session == NULL)
448 return FALSE;
449 @@ -2023,21 +2053,31 @@
450 if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
451 PURPLE_MEDIA_SEND_VIDEO))
452 g_object_get(session->session,
453 - "codecs-ready", &ret, NULL);
454 + "codecs", &codecs, NULL);
455 else
456 ret = TRUE;
457 + if (codecs) {
458 + fs_codec_list_destroy (codecs);
459 + ret = TRUE;
460 + }
461 } else {
462 GList *values = g_hash_table_get_values(priv->sessions);
463
464 for (; values; values = g_list_delete_link(values, values)) {
465 PurpleMediaBackendFs2Session *session = values->data;
466 + GList *codecs = NULL;
467 +
468 if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
469 PURPLE_MEDIA_SEND_VIDEO))
470 g_object_get(session->session,
471 - "codecs-ready", &ret, NULL);
472 + "codecs", &codecs, NULL);
473 else
474 ret = TRUE;
475
476 + if (codecs) {
477 + fs_codec_list_destroy (codecs);
478 + ret = TRUE;
479 + }
480 if (ret == FALSE)
481 break;
482 }
483 Only in pidgin-2.10.3/libpurple/media: backend-fs2.c~
484 diff -aur pidgin-2.10.3-orig//libpurple/media.c pidgin-2.10.3/libpurple/media.c
485 --- pidgin-2.10.3-orig//libpurple/media.c 2012-03-25 23:49:16.000000000 -0400
486 +++ pidgin-2.10.3/libpurple/media.c 2012-03-31 16:23:09.789485312 -0400
487 @@ -1067,7 +1067,6 @@
488 {
489 #ifdef USE_VV
490 PurpleMediaSession *session;
491 - PurpleMediaStream *stream = NULL;
492
493 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
494
495 @@ -1103,7 +1102,7 @@
496 }
497
498 if (purple_media_get_stream(media, sess_id, who) == NULL) {
499 - stream = purple_media_insert_stream(session, who, initiator);
500 + purple_media_insert_stream(session, who, initiator);
501
502 g_signal_emit(media, purple_media_signals[STATE_CHANGED],
503 0, PURPLE_MEDIA_STATE_NEW,
504 diff -aur pidgin-2.10.3-orig//libpurple/mediamanager.c pidgin-2.10.3/libpurple/mediamanager.c
505 --- pidgin-2.10.3-orig//libpurple/mediamanager.c 2012-03-25 23:49:16.000000000 -0400
506 +++ pidgin-2.10.3/libpurple/mediamanager.c 2012-03-31 16:23:09.789485312 -0400
507 @@ -39,7 +39,7 @@
508 #ifdef USE_VV
509 #include <media/backend-fs2.h>
510
511 -#include <gst/farsight/fs-element-added-notifier.h>
512 +#include <farstream/fs-element-added-notifier.h>
513 #include <gst/interfaces/xoverlay.h>
514
515 /** @copydoc _PurpleMediaManagerPrivate */