Mercurial > pidgin.yaz
annotate libpurple/media.c @ 28914:e14402d6c5e0
jabber: Go back to not overwriting avatars if there is not one locally set.
This isn't quite right yet, because we need to pick up the hash and advertise
it in our presence.
Fixes #10287.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 13 Nov 2009 18:39:23 +0000 |
parents | 867438a30bdd |
children | f1437342cc0e f93ac891ff01 0b5520bf1fe3 |
rev | line source |
---|---|
25546 | 1 /** |
25552 | 2 * @file media.c Media API |
25546 | 3 * @ingroup core |
25715
b8a73b6dc0a4
* Added documentation to media.h and mediamanager.h
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25713
diff
changeset
|
4 */ |
b8a73b6dc0a4
* Added documentation to media.h and mediamanager.h
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25713
diff
changeset
|
5 |
b8a73b6dc0a4
* Added documentation to media.h and mediamanager.h
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25713
diff
changeset
|
6 /* purple |
25546 | 7 * |
8 * Purple is the legal property of its developers, whose names are too numerous | |
9 * to list here. Please refer to the COPYRIGHT file distributed with this | |
10 * source distribution. | |
11 * | |
12 * This program is free software; you can redistribute it and/or modify | |
13 * it under the terms of the GNU General Public License as published by | |
14 * the Free Software Foundation; either version 2 of the License, or | |
15 * (at your option) any later version. | |
16 * | |
17 * This program is distributed in the hope that it will be useful, | |
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 * GNU General Public License for more details. | |
21 * | |
22 * You should have received a copy of the GNU General Public License | |
23 * along with this program; if not, write to the Free Software | |
28397
8c991e09efcb
Update various header copyrights thanks to licensecheck.
Paul Aurich <paul@darkrain42.org>
parents:
28230
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
25546 | 25 */ |
26 | |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
27 #include <string.h> |
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
28 |
25552 | 29 #include "internal.h" |
30 | |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
31 #include "account.h" |
25546 | 32 #include "media.h" |
25727
f10e0ac24595
* Added input/output volume preferences for voice conversations.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25724
diff
changeset
|
33 #include "mediamanager.h" |
26132
ae3d25465d0f
Run an asynchronous DNS lookup for the STUN server IP (to set as a property
Marcus Lundblad <ml@update.uu.se>
parents:
26129
diff
changeset
|
34 #include "network.h" |
25546 | 35 |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25560
diff
changeset
|
36 #include "debug.h" |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25560
diff
changeset
|
37 |
26628
e7861a7978dc
Fix build with --disable-vv --enable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26621
diff
changeset
|
38 #ifdef USE_GSTREAMER |
26645
75b473f216f2
Include the media API on win32 even though it isn't actually enabled.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26628
diff
changeset
|
39 #include "marshallers.h" |
26628
e7861a7978dc
Fix build with --disable-vv --enable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26621
diff
changeset
|
40 #include "media-gst.h" |
e7861a7978dc
Fix build with --disable-vv --enable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26621
diff
changeset
|
41 #endif |
e7861a7978dc
Fix build with --disable-vv --enable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26621
diff
changeset
|
42 |
25654
cbe97caec684
Use USE_VV instead of USE_FARSIGHT.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25651
diff
changeset
|
43 #ifdef USE_VV |
25546 | 44 |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
45 #include <gst/farsight/fs-conference-iface.h> |
27079
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
46 #include <gst/farsight/fs-element-added-notifier.h> |
25546 | 47 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
48 /** @copydoc _PurpleMediaSession */ |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
49 typedef struct _PurpleMediaSession PurpleMediaSession; |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
50 /** @copydoc _PurpleMediaStream */ |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
51 typedef struct _PurpleMediaStream PurpleMediaStream; |
26489
440e999c27ca
Hide these typedefs too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26488
diff
changeset
|
52 /** @copydoc _PurpleMediaClass */ |
440e999c27ca
Hide these typedefs too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26488
diff
changeset
|
53 typedef struct _PurpleMediaClass PurpleMediaClass; |
440e999c27ca
Hide these typedefs too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26488
diff
changeset
|
54 /** @copydoc _PurpleMediaPrivate */ |
440e999c27ca
Hide these typedefs too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26488
diff
changeset
|
55 typedef struct _PurpleMediaPrivate PurpleMediaPrivate; |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
56 /** @copydoc _PurpleMediaCandidateClass */ |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
57 typedef struct _PurpleMediaCandidateClass PurpleMediaCandidateClass; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
58 /** @copydoc _PurpleMediaCandidatePrivate */ |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
59 typedef struct _PurpleMediaCandidatePrivate PurpleMediaCandidatePrivate; |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
60 /** @copydoc _PurpleMediaCodecClass */ |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
61 typedef struct _PurpleMediaCodecClass PurpleMediaCodecClass; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
62 /** @copydoc _PurpleMediaCodecPrivate */ |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
63 typedef struct _PurpleMediaCodecPrivate PurpleMediaCodecPrivate; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
64 |
26481
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
65 /** The media class */ |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
66 struct _PurpleMediaClass |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
67 { |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
68 GObjectClass parent_class; /**< The parent class. */ |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
69 }; |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
70 |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
71 /** The media class's private data */ |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
72 struct _PurpleMedia |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
73 { |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
74 GObject parent; /**< The parent of this object. */ |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
75 PurpleMediaPrivate *priv; /**< The private data of this object. */ |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
76 }; |
341864c1d1f9
Hide the easy structs in media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26475
diff
changeset
|
77 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
78 struct _PurpleMediaSession |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
79 { |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
80 gchar *id; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
81 PurpleMedia *media; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
82 GstElement *src; |
26197
9b0761b77218
Handle the session tee in the session rather than the src bin.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26196
diff
changeset
|
83 GstElement *tee; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
84 FsSession *session; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
85 |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25715
diff
changeset
|
86 PurpleMediaSessionType type; |
26466
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
87 gboolean initiator; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
88 }; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
89 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
90 struct _PurpleMediaStream |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
91 { |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
92 PurpleMediaSession *session; |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
93 gchar *participant; |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
94 FsStream *stream; |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
95 GstElement *src; |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
96 GstElement *tee; |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
97 GstElement *volume; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
98 GstElement *level; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
99 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
100 GList *local_candidates; |
26076
2cf44cc855fe
Add candidates instead of replacing them.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26071
diff
changeset
|
101 GList *remote_candidates; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
102 |
26466
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
103 gboolean initiator; |
26391
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
104 gboolean accepted; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
105 gboolean candidates_prepared; |
28771
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
106 gboolean held; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
107 gboolean paused; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
108 |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
109 GList *active_local_candidates; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
110 GList *active_remote_candidates; |
26135
c334a9e17426
Wait to create the sinks until the frames are ready.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26134
diff
changeset
|
111 |
26200
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
112 guint connected_cb_id; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
113 }; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
114 #endif |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
115 |
25546 | 116 struct _PurpleMediaPrivate |
117 { | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
118 #ifdef USE_VV |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
119 PurpleMediaManager *manager; |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
120 PurpleAccount *account; |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
121 FsConference *conference; |
26063
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
122 gboolean initiator; |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
123 gpointer prpl_data; |
25546 | 124 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
125 GHashTable *sessions; /* PurpleMediaSession table */ |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
126 GHashTable *participants; /* FsParticipant table */ |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
127 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
128 GList *streams; /* PurpleMediaStream table */ |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
129 |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
130 GstElement *confbin; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
131 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
132 gpointer dummy; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
133 #endif |
25546 | 134 }; |
135 | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
136 #ifdef USE_VV |
25546 | 137 #define PURPLE_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA, PurpleMediaPrivate)) |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
138 #define PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_CANDIDATE, PurpleMediaCandidatePrivate)) |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
139 #define PURPLE_MEDIA_CODEC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA_CODEC, PurpleMediaCodecPrivate)) |
25546 | 140 |
141 static void purple_media_class_init (PurpleMediaClass *klass); | |
142 static void purple_media_init (PurpleMedia *media); | |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
143 static void purple_media_dispose (GObject *object); |
25546 | 144 static void purple_media_finalize (GObject *object); |
145 static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); | |
146 static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); | |
147 | |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
148 static void purple_media_new_local_candidate_cb(FsStream *stream, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
149 FsCandidate *local_candidate, PurpleMediaSession *session); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
150 static void purple_media_candidates_prepared_cb(FsStream *stream, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
151 PurpleMediaSession *session); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
152 static void purple_media_candidate_pair_established_cb(FsStream *stream, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
153 FsCandidate *native_candidate, FsCandidate *remote_candidate, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
154 PurpleMediaSession *session); |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
155 static gboolean media_bus_call(GstBus *bus, |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
156 GstMessage *msg, PurpleMedia *media); |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
157 |
25546 | 158 static GObjectClass *parent_class = NULL; |
159 | |
160 | |
161 | |
162 enum { | |
28042
60aab59fb35a
Make media.c compilable on Windows following guidance from Maiku
Stu Tomlinson <stu@nosnilmot.com>
parents:
27081
diff
changeset
|
163 S_ERROR, |
26380
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
164 CANDIDATES_PREPARED, |
26141
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
165 CODECS_CHANGED, |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
166 LEVEL, |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
167 NEW_CANDIDATE, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
168 STATE_CHANGED, |
26402
8b4394e84633
Add stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26401
diff
changeset
|
169 STREAM_INFO, |
25546 | 170 LAST_SIGNAL |
171 }; | |
172 static guint purple_media_signals[LAST_SIGNAL] = {0}; | |
173 | |
174 enum { | |
175 PROP_0, | |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
176 PROP_MANAGER, |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
177 PROP_ACCOUNT, |
26061
ee2a2a9dda01
Rename "fs-conference" to "conference".
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26060
diff
changeset
|
178 PROP_CONFERENCE, |
26063
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
179 PROP_INITIATOR, |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
180 PROP_PRPL_DATA, |
25546 | 181 }; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
182 #endif |
25546 | 183 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
184 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
185 /* |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
186 * PurpleMediaElementType |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
187 */ |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
188 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
189 GType |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
190 purple_media_session_type_get_type() |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
191 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
192 static GType type = 0; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
193 if (type == 0) { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
194 static const GFlagsValue values[] = { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
195 { PURPLE_MEDIA_NONE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
196 "PURPLE_MEDIA_NONE", "none" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
197 { PURPLE_MEDIA_RECV_AUDIO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
198 "PURPLE_MEDIA_RECV_AUDIO", "recv-audio" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
199 { PURPLE_MEDIA_SEND_AUDIO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
200 "PURPLE_MEDIA_SEND_AUDIO", "send-audio" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
201 { PURPLE_MEDIA_RECV_VIDEO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
202 "PURPLE_MEDIA_RECV_VIDEO", "recv-video" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
203 { PURPLE_MEDIA_SEND_VIDEO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
204 "PURPLE_MEDIA_SEND_VIDEO", "send-audio" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
205 { PURPLE_MEDIA_AUDIO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
206 "PURPLE_MEDIA_AUDIO", "audio" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
207 { PURPLE_MEDIA_VIDEO, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
208 "PURPLE_MEDIA_VIDEO", "video" }, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
209 { 0, NULL, NULL } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
210 }; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
211 type = g_flags_register_static( |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
212 "PurpleMediaSessionType", values); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
213 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
214 return type; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
215 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
216 |
25546 | 217 GType |
218 purple_media_get_type() | |
219 { | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
220 #ifdef USE_VV |
25546 | 221 static GType type = 0; |
222 | |
223 if (type == 0) { | |
224 static const GTypeInfo info = { | |
225 sizeof(PurpleMediaClass), | |
226 NULL, | |
227 NULL, | |
228 (GClassInitFunc) purple_media_class_init, | |
229 NULL, | |
230 NULL, | |
231 sizeof(PurpleMedia), | |
232 0, | |
25560
750d700098c1
Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25552
diff
changeset
|
233 (GInstanceInitFunc) purple_media_init, |
750d700098c1
Fix the prplinfo structs and get rid of some compile warnings.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25552
diff
changeset
|
234 NULL |
25546 | 235 }; |
236 type = g_type_register_static(G_TYPE_OBJECT, "PurpleMedia", &info, 0); | |
237 } | |
238 return type; | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
239 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
240 return G_TYPE_NONE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
241 #endif |
25546 | 242 } |
243 | |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
244 GType |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
245 purple_media_state_changed_get_type() |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
246 { |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
247 static GType type = 0; |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
248 if (type == 0) { |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
249 static const GEnumValue values[] = { |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
250 { PURPLE_MEDIA_STATE_NEW, |
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
251 "PURPLE_MEDIA_STATE_NEW", "new" }, |
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
252 { PURPLE_MEDIA_STATE_CONNECTED, |
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
253 "PURPLE_MEDIA_STATE_CONNECTED", "connected" }, |
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
254 { PURPLE_MEDIA_STATE_END, |
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
255 "PURPLE_MEDIA_STATE_END", "end" }, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
256 { 0, NULL, NULL } |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
257 }; |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
258 type = g_enum_register_static("PurpleMediaState", values); |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
259 } |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
260 return type; |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
261 } |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
262 |
26409
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
263 GType |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
264 purple_media_info_type_get_type() |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
265 { |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
266 static GType type = 0; |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
267 if (type == 0) { |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
268 static const GEnumValue values[] = { |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
269 { PURPLE_MEDIA_INFO_HANGUP, |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
270 "PURPLE_MEDIA_INFO_HANGUP", "hangup" }, |
26449
6943d2a41c6e
Add some more PurpleMediaInfo values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26448
diff
changeset
|
271 { PURPLE_MEDIA_INFO_ACCEPT, |
6943d2a41c6e
Add some more PurpleMediaInfo values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26448
diff
changeset
|
272 "PURPLE_MEDIA_INFO_ACCEPT", "accept" }, |
26409
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
273 { PURPLE_MEDIA_INFO_REJECT, |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
274 "PURPLE_MEDIA_INFO_REJECT", "reject" }, |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
275 { PURPLE_MEDIA_INFO_MUTE, |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
276 "PURPLE_MEDIA_INFO_MUTE", "mute" }, |
26449
6943d2a41c6e
Add some more PurpleMediaInfo values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26448
diff
changeset
|
277 { PURPLE_MEDIA_INFO_UNMUTE, |
6943d2a41c6e
Add some more PurpleMediaInfo values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26448
diff
changeset
|
278 "PURPLE_MEDIA_INFO_UNMUTE", "unmute" }, |
28199
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
279 { PURPLE_MEDIA_INFO_PAUSE, |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
280 "PURPLE_MEDIA_INFO_PAUSE", "pause" }, |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
281 { PURPLE_MEDIA_INFO_UNPAUSE, |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
282 "PURPLE_MEDIA_INFO_UNPAUSE", "unpause" }, |
26409
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
283 { PURPLE_MEDIA_INFO_HOLD, |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
284 "PURPLE_MEDIA_INFO_HOLD", "hold" }, |
26449
6943d2a41c6e
Add some more PurpleMediaInfo values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26448
diff
changeset
|
285 { PURPLE_MEDIA_INFO_UNHOLD, |
28770 | 286 "PURPLE_MEDIA_INFO_UNHOLD", "unhold" }, |
26409
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
287 { 0, NULL, NULL } |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
288 }; |
db9d2a760329
Use the right enum for the stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26408
diff
changeset
|
289 type = g_enum_register_static("PurpleMediaInfoType", values); |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
290 } |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
291 return type; |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
292 } |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
293 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
294 #ifdef USE_VV |
25546 | 295 static void |
296 purple_media_class_init (PurpleMediaClass *klass) | |
297 { | |
298 GObjectClass *gobject_class = (GObjectClass*)klass; | |
299 parent_class = g_type_class_peek_parent(klass); | |
300 | |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
301 gobject_class->dispose = purple_media_dispose; |
25546 | 302 gobject_class->finalize = purple_media_finalize; |
303 gobject_class->set_property = purple_media_set_property; | |
304 gobject_class->get_property = purple_media_get_property; | |
305 | |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
306 g_object_class_install_property(gobject_class, PROP_MANAGER, |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
307 g_param_spec_object("manager", |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
308 "Purple Media Manager", |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
309 "The media manager that contains this media session.", |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
310 PURPLE_TYPE_MEDIA_MANAGER, |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
311 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
312 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
313 g_object_class_install_property(gobject_class, PROP_ACCOUNT, |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
314 g_param_spec_pointer("account", |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
315 "PurpleAccount", |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
316 "The account this media session is on.", |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
317 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
318 |
26061
ee2a2a9dda01
Rename "fs-conference" to "conference".
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26060
diff
changeset
|
319 g_object_class_install_property(gobject_class, PROP_CONFERENCE, |
ee2a2a9dda01
Rename "fs-conference" to "conference".
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26060
diff
changeset
|
320 g_param_spec_object("conference", |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
321 "Farsight conference", |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
322 "The FsConference associated with this media.", |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
323 FS_TYPE_CONFERENCE, |
26470
de03cce95e17
Make the conference property write only.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26469
diff
changeset
|
324 G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE)); |
25546 | 325 |
26063
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
326 g_object_class_install_property(gobject_class, PROP_INITIATOR, |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
327 g_param_spec_boolean("initiator", |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
328 "initiator", |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
329 "If the local user initiated the conference.", |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
330 FALSE, |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
331 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
332 |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
333 g_object_class_install_property(gobject_class, PROP_PRPL_DATA, |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
334 g_param_spec_pointer("prpl-data", |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
335 "gpointer", |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
336 "Data the prpl plugin set on the media session.", |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
337 G_PARAM_READWRITE)); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
338 |
28042
60aab59fb35a
Make media.c compilable on Windows following guidance from Maiku
Stu Tomlinson <stu@nosnilmot.com>
parents:
27081
diff
changeset
|
339 purple_media_signals[S_ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass), |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
340 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
341 g_cclosure_marshal_VOID__STRING, |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
342 G_TYPE_NONE, 1, G_TYPE_STRING); |
26380
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
343 purple_media_signals[CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", G_TYPE_FROM_CLASS(klass), |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
344 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
345 purple_smarshal_VOID__STRING_STRING, |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
346 G_TYPE_NONE, 2, G_TYPE_STRING, |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
347 G_TYPE_STRING); |
26141
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
348 purple_media_signals[CODECS_CHANGED] = g_signal_new("codecs-changed", G_TYPE_FROM_CLASS(klass), |
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
349 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
350 g_cclosure_marshal_VOID__STRING, |
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
351 G_TYPE_NONE, 1, G_TYPE_STRING); |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
352 purple_media_signals[LEVEL] = g_signal_new("level", G_TYPE_FROM_CLASS(klass), |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
353 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
354 purple_smarshal_VOID__STRING_STRING_DOUBLE, |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
355 G_TYPE_NONE, 3, G_TYPE_STRING, |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
356 G_TYPE_STRING, G_TYPE_DOUBLE); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
357 purple_media_signals[NEW_CANDIDATE] = g_signal_new("new-candidate", G_TYPE_FROM_CLASS(klass), |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
358 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
359 purple_smarshal_VOID__POINTER_POINTER_OBJECT, |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
360 G_TYPE_NONE, 3, G_TYPE_POINTER, |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
361 G_TYPE_POINTER, PURPLE_TYPE_MEDIA_CANDIDATE); |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
362 purple_media_signals[STATE_CHANGED] = g_signal_new("state-changed", G_TYPE_FROM_CLASS(klass), |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
363 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
364 purple_smarshal_VOID__ENUM_STRING_STRING, |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
365 G_TYPE_NONE, 3, PURPLE_MEDIA_TYPE_STATE, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
366 G_TYPE_STRING, G_TYPE_STRING); |
26402
8b4394e84633
Add stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26401
diff
changeset
|
367 purple_media_signals[STREAM_INFO] = g_signal_new("stream-info", G_TYPE_FROM_CLASS(klass), |
8b4394e84633
Add stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26401
diff
changeset
|
368 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
26448
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
369 purple_smarshal_VOID__ENUM_STRING_STRING_BOOLEAN, |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
370 G_TYPE_NONE, 4, PURPLE_MEDIA_TYPE_INFO_TYPE, |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
371 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
372 g_type_class_add_private(klass, sizeof(PurpleMediaPrivate)); |
25546 | 373 } |
374 | |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
375 |
25546 | 376 static void |
377 purple_media_init (PurpleMedia *media) | |
378 { | |
379 media->priv = PURPLE_MEDIA_GET_PRIVATE(media); | |
26368
d8a7c7d9ac8a
Zero out the proper size for the PurpleMediaPrivate structure.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26216
diff
changeset
|
380 memset(media->priv, 0, sizeof(*media->priv)); |
25546 | 381 } |
382 | |
383 static void | |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
384 purple_media_stream_free(PurpleMediaStream *stream) |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
385 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
386 if (stream == NULL) |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
387 return; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
388 |
26156
1199abde956b
Set the purple_media_connected_cb timeout to a high priority and remove
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26155
diff
changeset
|
389 /* Remove the connected_cb timeout */ |
26200
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
390 if (stream->connected_cb_id != 0) |
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
391 purple_timeout_remove(stream->connected_cb_id); |
26156
1199abde956b
Set the purple_media_connected_cb timeout to a high priority and remove
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26155
diff
changeset
|
392 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
393 g_free(stream->participant); |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
394 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
395 if (stream->local_candidates) |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
396 fs_candidate_list_destroy(stream->local_candidates); |
26076
2cf44cc855fe
Add candidates instead of replacing them.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26071
diff
changeset
|
397 if (stream->remote_candidates) |
2cf44cc855fe
Add candidates instead of replacing them.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26071
diff
changeset
|
398 fs_candidate_list_destroy(stream->remote_candidates); |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
399 |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
400 if (stream->active_local_candidates) |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
401 fs_candidate_list_destroy(stream->active_local_candidates); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
402 if (stream->active_remote_candidates) |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
403 fs_candidate_list_destroy(stream->active_remote_candidates); |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
404 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
405 g_free(stream); |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
406 } |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
407 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
408 static void |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
409 purple_media_session_free(PurpleMediaSession *session) |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
410 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
411 if (session == NULL) |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
412 return; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
413 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
414 g_free(session->id); |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
415 g_free(session); |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
416 } |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
417 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
418 static void |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
419 purple_media_dispose(GObject *media) |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
420 { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
421 PurpleMediaPrivate *priv = PURPLE_MEDIA_GET_PRIVATE(media); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
422 GList *iter = NULL; |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
423 |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
424 purple_debug_info("media","purple_media_dispose\n"); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
425 |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
426 purple_media_manager_remove_media(priv->manager, PURPLE_MEDIA(media)); |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
427 |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
428 if (priv->confbin) { |
26388
5906409c4b69
Fix some GStreamer timing issues.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26387
diff
changeset
|
429 gst_element_set_locked_state(priv->confbin, TRUE); |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
430 gst_element_set_state(GST_ELEMENT(priv->confbin), |
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
431 GST_STATE_NULL); |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
432 gst_bin_remove(GST_BIN(purple_media_manager_get_pipeline( |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
433 priv->manager)), priv->confbin); |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
434 priv->confbin = NULL; |
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
435 priv->conference = NULL; |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
436 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
437 |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
438 for (iter = priv->streams; iter; iter = g_list_next(iter)) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
439 PurpleMediaStream *stream = iter->data; |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
440 if (stream->stream) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
441 g_object_unref(stream->stream); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
442 stream->stream = NULL; |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
443 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
444 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
445 |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
446 if (priv->sessions) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
447 GList *sessions = g_hash_table_get_values(priv->sessions); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
448 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
449 PurpleMediaSession *session = sessions->data; |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
450 if (session->session) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
451 g_object_unref(session->session); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
452 session->session = NULL; |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
453 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
454 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
455 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
456 |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
457 if (priv->participants) { |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
458 GList *participants = g_hash_table_get_values(priv->participants); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
459 for (; participants; participants = g_list_delete_link(participants, participants)) |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
460 g_object_unref(participants->data); |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
461 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
462 |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
463 if (priv->manager) { |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
464 GstElement *pipeline = purple_media_manager_get_pipeline( |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
465 priv->manager); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
466 GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
467 g_signal_handlers_disconnect_matched(G_OBJECT(bus), |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
468 G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
469 0, 0, 0, media_bus_call, media); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
470 gst_object_unref(bus); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
471 |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
472 g_object_unref(priv->manager); |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
473 priv->manager = NULL; |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
474 } |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
475 |
26374 | 476 G_OBJECT_CLASS(parent_class)->dispose(media); |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
477 } |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
478 |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
479 static void |
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
480 purple_media_finalize(GObject *media) |
25546 | 481 { |
25661
d048100a43ab
Free the PurpleMedia object when the media session ends and fix ending
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25654
diff
changeset
|
482 PurpleMediaPrivate *priv = PURPLE_MEDIA_GET_PRIVATE(media); |
d048100a43ab
Free the PurpleMedia object when the media session ends and fix ending
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25654
diff
changeset
|
483 purple_debug_info("media","purple_media_finalize\n"); |
d048100a43ab
Free the PurpleMedia object when the media session ends and fix ending
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25654
diff
changeset
|
484 |
26057
584a4f5ce4dc
Free Farsight objects better.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26056
diff
changeset
|
485 for (; priv->streams; priv->streams = g_list_delete_link(priv->streams, priv->streams)) |
584a4f5ce4dc
Free Farsight objects better.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26056
diff
changeset
|
486 purple_media_stream_free(priv->streams->data); |
584a4f5ce4dc
Free Farsight objects better.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26056
diff
changeset
|
487 |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
488 if (priv->sessions) { |
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
489 GList *sessions = g_hash_table_get_values(priv->sessions); |
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
490 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
491 purple_media_session_free(sessions->data); |
25706
1c68f78414b7
Set the media pipeline to PLAYING immediately after initialization
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25702
diff
changeset
|
492 } |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
493 g_hash_table_destroy(priv->sessions); |
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
494 } |
25706
1c68f78414b7
Set the media pipeline to PLAYING immediately after initialization
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25702
diff
changeset
|
495 |
26087
83704757fa36
Use the dispose method too.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
496 G_OBJECT_CLASS(parent_class)->finalize(media); |
25546 | 497 } |
498 | |
499 static void | |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
500 purple_media_setup_pipeline(PurpleMedia *media) |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
501 { |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
502 GstBus *bus; |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
503 gchar *name; |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
504 GstElement *pipeline; |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
505 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
506 if (media->priv->conference == NULL || media->priv->manager == NULL) |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
507 return; |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
508 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
509 pipeline = purple_media_manager_get_pipeline(media->priv->manager); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
510 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
511 name = g_strdup_printf("conf_%p", |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
512 media->priv->conference); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
513 media->priv->confbin = gst_bin_new(name); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
514 g_free(name); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
515 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
516 bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
517 g_signal_connect(G_OBJECT(bus), "message", |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
518 G_CALLBACK(media_bus_call), media); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
519 gst_object_unref(bus); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
520 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
521 gst_bin_add(GST_BIN(pipeline), |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
522 media->priv->confbin); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
523 gst_bin_add(GST_BIN(media->priv->confbin), |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
524 GST_ELEMENT(media->priv->conference)); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
525 gst_element_set_state(GST_ELEMENT(media->priv->confbin), |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
526 GST_STATE_PLAYING); |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
527 } |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
528 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
529 static void |
25546 | 530 purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) |
531 { | |
532 PurpleMedia *media; | |
533 g_return_if_fail(PURPLE_IS_MEDIA(object)); | |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25560
diff
changeset
|
534 |
25546 | 535 media = PURPLE_MEDIA(object); |
536 | |
537 switch (prop_id) { | |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
538 case PROP_MANAGER: |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
539 media->priv->manager = g_value_get_object(value); |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
540 g_object_ref(media->priv->manager); |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
541 |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
542 purple_media_setup_pipeline(media); |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
543 break; |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
544 case PROP_ACCOUNT: |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
545 media->priv->account = g_value_get_pointer(value); |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
546 break; |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
547 case PROP_CONFERENCE: { |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
548 if (media->priv->conference) |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
549 gst_object_unref(media->priv->conference); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
550 media->priv->conference = g_value_get_object(value); |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
551 gst_object_ref(media->priv->conference); |
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
552 |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
553 purple_media_setup_pipeline(media); |
25546 | 554 break; |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
555 } |
26063
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
556 case PROP_INITIATOR: |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
557 media->priv->initiator = g_value_get_boolean(value); |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
558 break; |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
559 case PROP_PRPL_DATA: |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
560 media->priv->prpl_data = g_value_get_pointer(value); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
561 break; |
25546 | 562 default: |
563 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | |
564 break; | |
565 } | |
566 } | |
567 | |
568 static void | |
569 purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) | |
570 { | |
571 PurpleMedia *media; | |
572 g_return_if_fail(PURPLE_IS_MEDIA(object)); | |
573 | |
574 media = PURPLE_MEDIA(object); | |
575 | |
576 switch (prop_id) { | |
26189
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
577 case PROP_MANAGER: |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
578 g_value_set_object(value, media->priv->manager); |
76104100cb87
Use the media manager that created the media session in media.c.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26185
diff
changeset
|
579 break; |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
580 case PROP_ACCOUNT: |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
581 g_value_set_pointer(value, media->priv->account); |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
582 break; |
26061
ee2a2a9dda01
Rename "fs-conference" to "conference".
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26060
diff
changeset
|
583 case PROP_CONFERENCE: |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
584 g_value_set_object(value, media->priv->conference); |
25546 | 585 break; |
26063
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
586 case PROP_INITIATOR: |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
587 g_value_set_boolean(value, media->priv->initiator); |
c7d4b67b3332
Add initiator property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26061
diff
changeset
|
588 break; |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
589 case PROP_PRPL_DATA: |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
590 g_value_set_pointer(value, media->priv->prpl_data); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
591 break; |
25546 | 592 default: |
593 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); | |
594 break; | |
595 } | |
596 | |
597 } | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
598 #endif |
25546 | 599 |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
600 /* |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
601 * PurpleMediaCandidateType |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
602 */ |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
603 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
604 GType |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
605 purple_media_candidate_type_get_type() |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
606 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
607 static GType type = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
608 if (type == 0) { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
609 static const GEnumValue values[] = { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
610 { PURPLE_MEDIA_CANDIDATE_TYPE_HOST, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
611 "PURPLE_MEDIA_CANDIDATE_TYPE_HOST", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
612 "host" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
613 { PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
614 "PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
615 "srflx" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
616 { PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
617 "PURPLE_MEDIA_CANDIDATE_TYPE_PRFLX", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
618 "prflx" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
619 { PURPLE_MEDIA_CANDIDATE_TYPE_RELAY, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
620 "PPURPLE_MEDIA_CANDIDATE_TYPE_RELAY", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
621 "relay" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
622 { PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
623 "PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
624 "multicast" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
625 { 0, NULL, NULL } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
626 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
627 type = g_enum_register_static("PurpleMediaCandidateType", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
628 values); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
629 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
630 return type; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
631 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
632 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
633 /* |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
634 * PurpleMediaNetworkProtocol |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
635 */ |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
636 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
637 GType |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
638 purple_media_network_protocol_get_type() |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
639 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
640 static GType type = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
641 if (type == 0) { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
642 static const GEnumValue values[] = { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
643 { PURPLE_MEDIA_NETWORK_PROTOCOL_UDP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
644 "PURPLE_MEDIA_NETWORK_PROTOCOL_UDP", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
645 "udp" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
646 { PURPLE_MEDIA_NETWORK_PROTOCOL_TCP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
647 "PURPLE_MEDIA_NETWORK_PROTOCOL_TCP", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
648 "tcp" }, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
649 { 0, NULL, NULL } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
650 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
651 type = g_enum_register_static("PurpleMediaNetworkProtocol", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
652 values); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
653 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
654 return type; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
655 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
656 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
657 /* |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
658 * PurpleMediaCandidate |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
659 */ |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
660 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
661 struct _PurpleMediaCandidateClass |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
662 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
663 GObjectClass parent_class; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
664 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
665 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
666 struct _PurpleMediaCandidate |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
667 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
668 GObject parent; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
669 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
670 |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
671 #ifdef USE_VV |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
672 struct _PurpleMediaCandidatePrivate |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
673 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
674 gchar *foundation; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
675 guint component_id; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
676 gchar *ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
677 guint16 port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
678 gchar *base_ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
679 guint16 base_port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
680 PurpleMediaNetworkProtocol proto; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
681 guint32 priority; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
682 PurpleMediaCandidateType type; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
683 gchar *username; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
684 gchar *password; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
685 guint ttl; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
686 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
687 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
688 enum { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
689 PROP_CANDIDATE_0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
690 PROP_FOUNDATION, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
691 PROP_COMPONENT_ID, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
692 PROP_IP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
693 PROP_PORT, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
694 PROP_BASE_IP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
695 PROP_BASE_PORT, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
696 PROP_PROTOCOL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
697 PROP_PRIORITY, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
698 PROP_TYPE, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
699 PROP_USERNAME, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
700 PROP_PASSWORD, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
701 PROP_TTL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
702 }; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
703 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
704 static void |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
705 purple_media_candidate_init(PurpleMediaCandidate *info) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
706 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
707 PurpleMediaCandidatePrivate *priv = |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
708 PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(info); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
709 priv->foundation = NULL; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
710 priv->component_id = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
711 priv->ip = NULL; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
712 priv->port = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
713 priv->base_ip = NULL; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
714 priv->proto = PURPLE_MEDIA_NETWORK_PROTOCOL_UDP; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
715 priv->priority = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
716 priv->type = PURPLE_MEDIA_CANDIDATE_TYPE_HOST; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
717 priv->username = NULL; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
718 priv->password = NULL; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
719 priv->ttl = 0; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
720 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
721 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
722 static void |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
723 purple_media_candidate_finalize(GObject *info) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
724 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
725 PurpleMediaCandidatePrivate *priv = |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
726 PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(info); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
727 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
728 g_free(priv->foundation); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
729 g_free(priv->ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
730 g_free(priv->base_ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
731 g_free(priv->username); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
732 g_free(priv->password); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
733 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
734 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
735 static void |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
736 purple_media_candidate_set_property (GObject *object, guint prop_id, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
737 const GValue *value, GParamSpec *pspec) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
738 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
739 PurpleMediaCandidatePrivate *priv; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
740 g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
741 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
742 priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(object); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
743 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
744 switch (prop_id) { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
745 case PROP_FOUNDATION: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
746 g_free(priv->foundation); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
747 priv->foundation = g_value_dup_string(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
748 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
749 case PROP_COMPONENT_ID: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
750 priv->component_id = g_value_get_uint(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
751 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
752 case PROP_IP: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
753 g_free(priv->ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
754 priv->ip = g_value_dup_string(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
755 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
756 case PROP_PORT: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
757 priv->port = g_value_get_uint(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
758 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
759 case PROP_BASE_IP: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
760 g_free(priv->base_ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
761 priv->base_ip = g_value_dup_string(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
762 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
763 case PROP_BASE_PORT: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
764 priv->base_port = g_value_get_uint(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
765 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
766 case PROP_PROTOCOL: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
767 priv->proto = g_value_get_enum(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
768 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
769 case PROP_PRIORITY: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
770 priv->priority = g_value_get_uint(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
771 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
772 case PROP_TYPE: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
773 priv->type = g_value_get_enum(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
774 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
775 case PROP_USERNAME: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
776 g_free(priv->username); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
777 priv->username = g_value_dup_string(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
778 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
779 case PROP_PASSWORD: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
780 g_free(priv->password); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
781 priv->password = g_value_dup_string(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
782 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
783 case PROP_TTL: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
784 priv->ttl = g_value_get_uint(value); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
785 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
786 default: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
787 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
788 object, prop_id, pspec); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
789 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
790 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
791 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
792 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
793 static void |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
794 purple_media_candidate_get_property (GObject *object, guint prop_id, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
795 GValue *value, GParamSpec *pspec) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
796 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
797 PurpleMediaCandidatePrivate *priv; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
798 g_return_if_fail(PURPLE_IS_MEDIA_CANDIDATE(object)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
799 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
800 priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(object); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
801 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
802 switch (prop_id) { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
803 case PROP_FOUNDATION: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
804 g_value_set_string(value, priv->foundation); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
805 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
806 case PROP_COMPONENT_ID: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
807 g_value_set_uint(value, priv->component_id); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
808 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
809 case PROP_IP: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
810 g_value_set_string(value, priv->ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
811 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
812 case PROP_PORT: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
813 g_value_set_uint(value, priv->port); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
814 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
815 case PROP_BASE_IP: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
816 g_value_set_string(value, priv->base_ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
817 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
818 case PROP_BASE_PORT: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
819 g_value_set_uint(value, priv->base_port); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
820 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
821 case PROP_PROTOCOL: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
822 g_value_set_enum(value, priv->proto); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
823 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
824 case PROP_PRIORITY: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
825 g_value_set_uint(value, priv->priority); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
826 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
827 case PROP_TYPE: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
828 g_value_set_enum(value, priv->type); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
829 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
830 case PROP_USERNAME: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
831 g_value_set_string(value, priv->username); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
832 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
833 case PROP_PASSWORD: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
834 g_value_set_string(value, priv->password); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
835 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
836 case PROP_TTL: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
837 g_value_set_uint(value, priv->ttl); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
838 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
839 default: |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
840 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
841 object, prop_id, pspec); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
842 break; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
843 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
844 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
845 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
846 static void |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
847 purple_media_candidate_class_init(PurpleMediaCandidateClass *klass) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
848 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
849 GObjectClass *gobject_class = (GObjectClass*)klass; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
850 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
851 gobject_class->finalize = purple_media_candidate_finalize; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
852 gobject_class->set_property = purple_media_candidate_set_property; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
853 gobject_class->get_property = purple_media_candidate_get_property; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
854 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
855 g_object_class_install_property(gobject_class, PROP_FOUNDATION, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
856 g_param_spec_string("foundation", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
857 "Foundation", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
858 "The foundation of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
859 NULL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
860 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
861 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
862 g_object_class_install_property(gobject_class, PROP_COMPONENT_ID, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
863 g_param_spec_uint("component-id", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
864 "Component ID", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
865 "The component id of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
866 0, G_MAXUINT, 0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
867 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
868 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
869 g_object_class_install_property(gobject_class, PROP_IP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
870 g_param_spec_string("ip", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
871 "IP Address", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
872 "The IP address of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
873 NULL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
874 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
875 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
876 g_object_class_install_property(gobject_class, PROP_PORT, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
877 g_param_spec_uint("port", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
878 "Port", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
879 "The port of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
880 0, G_MAXUINT16, 0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
881 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
882 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
883 g_object_class_install_property(gobject_class, PROP_BASE_IP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
884 g_param_spec_string("base-ip", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
885 "Base IP", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
886 "The internal IP address of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
887 NULL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
888 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
889 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
890 g_object_class_install_property(gobject_class, PROP_BASE_PORT, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
891 g_param_spec_uint("base-port", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
892 "Base Port", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
893 "The internal port of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
894 0, G_MAXUINT16, 0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
895 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
896 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
897 g_object_class_install_property(gobject_class, PROP_PROTOCOL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
898 g_param_spec_enum("protocol", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
899 "Protocol", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
900 "The protocol of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
901 PURPLE_TYPE_MEDIA_NETWORK_PROTOCOL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
902 PURPLE_MEDIA_NETWORK_PROTOCOL_UDP, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
903 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
904 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
905 g_object_class_install_property(gobject_class, PROP_PRIORITY, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
906 g_param_spec_uint("priority", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
907 "Priority", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
908 "The priority of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
909 0, G_MAXUINT32, 0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
910 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
911 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
912 g_object_class_install_property(gobject_class, PROP_TYPE, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
913 g_param_spec_enum("type", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
914 "Type", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
915 "The type of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
916 PURPLE_TYPE_MEDIA_CANDIDATE_TYPE, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
917 PURPLE_MEDIA_CANDIDATE_TYPE_HOST, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
918 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
919 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
920 g_object_class_install_property(gobject_class, PROP_USERNAME, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
921 g_param_spec_string("username", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
922 "Username", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
923 "The username used to connect to the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
924 NULL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
925 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
926 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
927 g_object_class_install_property(gobject_class, PROP_PASSWORD, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
928 g_param_spec_string("password", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
929 "Password", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
930 "The password use to connect to the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
931 NULL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
932 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
933 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
934 g_object_class_install_property(gobject_class, PROP_TTL, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
935 g_param_spec_uint("ttl", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
936 "TTL", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
937 "The TTL of the candidate.", |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
938 0, G_MAXUINT, 0, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
939 G_PARAM_READWRITE)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
940 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
941 g_type_class_add_private(klass, sizeof(PurpleMediaCandidatePrivate)); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
942 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
943 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
944 G_DEFINE_TYPE(PurpleMediaCandidate, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
945 purple_media_candidate, G_TYPE_OBJECT); |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
946 #else |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
947 GType |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
948 purple_media_candidate_get_type() |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
949 { |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
950 return G_TYPE_NONE; |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
951 } |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
952 #endif |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
953 |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
954 PurpleMediaCandidate * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
955 purple_media_candidate_new(const gchar *foundation, guint component_id, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
956 PurpleMediaCandidateType type, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
957 PurpleMediaNetworkProtocol proto, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
958 const gchar *ip, guint port) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
959 { |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
960 return g_object_new(PURPLE_TYPE_MEDIA_CANDIDATE, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
961 "foundation", foundation, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
962 "component-id", component_id, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
963 "type", type, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
964 "protocol", proto, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
965 "ip", ip, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
966 "port", port, NULL); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
967 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
968 |
26397
c0499eb4dd4d
Disapprove part of the revision that shouldn't be there.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26396
diff
changeset
|
969 static PurpleMediaCandidate * |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
970 purple_media_candidate_copy(PurpleMediaCandidate *candidate) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
971 { |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
972 #ifdef USE_VV |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
973 PurpleMediaCandidatePrivate *priv; |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
974 PurpleMediaCandidate *new_candidate; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
975 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
976 if (candidate == NULL) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
977 return NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
978 |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
979 priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(candidate); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
980 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
981 new_candidate = purple_media_candidate_new(priv->foundation, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
982 priv->component_id, priv->type, priv->proto, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
983 priv->ip, priv->port); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
984 g_object_set(new_candidate, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
985 "base-ip", priv->base_ip, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
986 "base-port", priv->base_port, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
987 "priority", priv->priority, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
988 "username", priv->username, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
989 "password", priv->password, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
990 "ttl", priv->ttl, NULL); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
991 return new_candidate; |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
992 #else |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
993 return NULL; |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
994 #endif |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
995 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
996 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
997 #ifdef USE_VV |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
998 static FsCandidate * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
999 purple_media_candidate_to_fs(PurpleMediaCandidate *candidate) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1000 { |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1001 PurpleMediaCandidatePrivate *priv; |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1002 FsCandidate *fscandidate; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1003 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1004 if (candidate == NULL) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1005 return NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1006 |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1007 priv = PURPLE_MEDIA_CANDIDATE_GET_PRIVATE(candidate); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1008 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1009 fscandidate = fs_candidate_new(priv->foundation, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1010 priv->component_id, priv->type, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1011 priv->proto, priv->ip, priv->port); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1012 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1013 fscandidate->base_ip = g_strdup(priv->base_ip); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1014 fscandidate->base_port = priv->base_port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1015 fscandidate->priority = priv->priority; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1016 fscandidate->username = g_strdup(priv->username); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1017 fscandidate->password = g_strdup(priv->password); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1018 fscandidate->ttl = priv->ttl; |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1019 return fscandidate; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1020 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1021 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1022 static PurpleMediaCandidate * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1023 purple_media_candidate_from_fs(FsCandidate *fscandidate) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1024 { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1025 PurpleMediaCandidate *candidate; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1026 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1027 if (fscandidate == NULL) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1028 return NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1029 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1030 candidate = purple_media_candidate_new(fscandidate->foundation, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1031 fscandidate->component_id, fscandidate->type, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1032 fscandidate->proto, fscandidate->ip, fscandidate->port); |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1033 g_object_set(candidate, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1034 "base-ip", fscandidate->base_ip, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1035 "base-port", fscandidate->base_port, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1036 "priority", fscandidate->priority, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1037 "username", fscandidate->username, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1038 "password", fscandidate->password, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1039 "ttl", fscandidate->ttl, NULL); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1040 return candidate; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1041 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1042 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1043 static GList * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1044 purple_media_candidate_list_from_fs(GList *candidates) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1045 { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1046 GList *new_list = NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1047 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1048 for (; candidates; candidates = g_list_next(candidates)) { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1049 new_list = g_list_prepend(new_list, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1050 purple_media_candidate_from_fs( |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1051 candidates->data)); |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1052 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1053 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1054 new_list = g_list_reverse(new_list); |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1055 return new_list; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1056 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1057 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1058 static GList * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1059 purple_media_candidate_list_to_fs(GList *candidates) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1060 { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1061 GList *new_list = NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1062 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1063 for (; candidates; candidates = g_list_next(candidates)) { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1064 new_list = g_list_prepend(new_list, |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1065 purple_media_candidate_to_fs( |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1066 candidates->data)); |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1067 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1068 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1069 new_list = g_list_reverse(new_list); |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1070 return new_list; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1071 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1072 #endif |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1073 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1074 GList * |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1075 purple_media_candidate_list_copy(GList *candidates) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1076 { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1077 GList *new_list = NULL; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1078 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1079 for (; candidates; candidates = g_list_next(candidates)) { |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1080 new_list = g_list_prepend(new_list, |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1081 purple_media_candidate_copy(candidates->data)); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1082 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1083 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1084 new_list = g_list_reverse(new_list); |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1085 return new_list; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1086 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1087 |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1088 void |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1089 purple_media_candidate_list_free(GList *candidates) |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1090 { |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1091 for (; candidates; candidates = |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1092 g_list_delete_link(candidates, candidates)) { |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1093 g_object_unref(candidates->data); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1094 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1095 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1096 |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1097 gchar * |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1098 purple_media_candidate_get_foundation(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1099 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1100 gchar *foundation; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1101 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1102 g_object_get(candidate, "foundation", &foundation, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1103 return foundation; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1104 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1105 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1106 guint |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1107 purple_media_candidate_get_component_id(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1108 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1109 guint component_id; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1110 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1111 g_object_get(candidate, "component-id", &component_id, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1112 return component_id; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1113 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1114 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1115 gchar * |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1116 purple_media_candidate_get_ip(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1117 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1118 gchar *ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1119 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1120 g_object_get(candidate, "ip", &ip, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1121 return ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1122 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1123 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1124 guint16 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1125 purple_media_candidate_get_port(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1126 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1127 guint port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1128 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1129 g_object_get(candidate, "port", &port, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1130 return port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1131 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1132 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1133 gchar * |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1134 purple_media_candidate_get_base_ip(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1135 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1136 gchar *base_ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1137 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1138 g_object_get(candidate, "base-ip", &base_ip, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1139 return base_ip; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1140 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1141 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1142 guint16 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1143 purple_media_candidate_get_base_port(PurpleMediaCandidate *candidate) |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1144 { |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1145 guint base_port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1146 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1147 g_object_get(candidate, "base_port", &base_port, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1148 return base_port; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1149 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1150 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1151 PurpleMediaNetworkProtocol |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1152 purple_media_candidate_get_protocol(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1153 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1154 PurpleMediaNetworkProtocol protocol; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1155 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1156 PURPLE_MEDIA_NETWORK_PROTOCOL_UDP); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1157 g_object_get(candidate, "protocol", &protocol, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1158 return protocol; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1159 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1160 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1161 guint32 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1162 purple_media_candidate_get_priority(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1163 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1164 guint priority; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1165 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1166 g_object_get(candidate, "priority", &priority, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1167 return priority; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1168 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1169 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1170 PurpleMediaCandidateType |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1171 purple_media_candidate_get_candidate_type(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1172 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1173 PurpleMediaCandidateType type; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1174 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1175 PURPLE_MEDIA_CANDIDATE_TYPE_HOST); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1176 g_object_get(candidate, "type", &type, NULL); |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1177 return type; |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1178 } |
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
1179 |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1180 gchar * |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1181 purple_media_candidate_get_username(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1182 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1183 gchar *username; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1184 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1185 g_object_get(candidate, "username", &username, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1186 return username; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1187 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1188 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1189 gchar * |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1190 purple_media_candidate_get_password(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1191 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1192 gchar *password; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1193 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1194 g_object_get(candidate, "password", &password, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1195 return password; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1196 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1197 |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1198 guint |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1199 purple_media_candidate_get_ttl(PurpleMediaCandidate *candidate) |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1200 { |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1201 guint ttl; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1202 g_return_val_if_fail(PURPLE_IS_MEDIA_CANDIDATE(candidate), 0); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1203 g_object_get(candidate, "ttl", &ttl, NULL); |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1204 return ttl; |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1205 } |
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
1206 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1207 #ifdef USE_VV |
26099
b6457b2a8e14
Make FsStreamDirection and FsMediaType conversion functions static.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26097
diff
changeset
|
1208 static FsMediaType |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25715
diff
changeset
|
1209 purple_media_to_fs_media_type(PurpleMediaSessionType type) |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1210 { |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1211 if (type & PURPLE_MEDIA_AUDIO) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1212 return FS_MEDIA_TYPE_AUDIO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1213 else if (type & PURPLE_MEDIA_VIDEO) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1214 return FS_MEDIA_TYPE_VIDEO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1215 else |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1216 return 0; |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1217 } |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1218 |
26099
b6457b2a8e14
Make FsStreamDirection and FsMediaType conversion functions static.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26097
diff
changeset
|
1219 static FsStreamDirection |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25715
diff
changeset
|
1220 purple_media_to_fs_stream_direction(PurpleMediaSessionType type) |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1221 { |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1222 if ((type & PURPLE_MEDIA_AUDIO) == PURPLE_MEDIA_AUDIO || |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1223 (type & PURPLE_MEDIA_VIDEO) == PURPLE_MEDIA_VIDEO) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1224 return FS_DIRECTION_BOTH; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1225 else if ((type & PURPLE_MEDIA_SEND_AUDIO) || |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1226 (type & PURPLE_MEDIA_SEND_VIDEO)) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1227 return FS_DIRECTION_SEND; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1228 else if ((type & PURPLE_MEDIA_RECV_AUDIO) || |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1229 (type & PURPLE_MEDIA_RECV_VIDEO)) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1230 return FS_DIRECTION_RECV; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1231 else |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1232 return FS_DIRECTION_NONE; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1233 } |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1234 |
26099
b6457b2a8e14
Make FsStreamDirection and FsMediaType conversion functions static.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26097
diff
changeset
|
1235 static PurpleMediaSessionType |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1236 purple_media_from_fs(FsMediaType type, FsStreamDirection direction) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1237 { |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25715
diff
changeset
|
1238 PurpleMediaSessionType result = PURPLE_MEDIA_NONE; |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1239 if (type == FS_MEDIA_TYPE_AUDIO) { |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1240 if (direction & FS_DIRECTION_SEND) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1241 result |= PURPLE_MEDIA_SEND_AUDIO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1242 if (direction & FS_DIRECTION_RECV) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1243 result |= PURPLE_MEDIA_RECV_AUDIO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1244 } else if (type == FS_MEDIA_TYPE_VIDEO) { |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1245 if (direction & FS_DIRECTION_SEND) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1246 result |= PURPLE_MEDIA_SEND_VIDEO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1247 if (direction & FS_DIRECTION_RECV) |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1248 result |= PURPLE_MEDIA_RECV_VIDEO; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1249 } |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1250 return result; |
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1251 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1252 #endif |
25674
bfaad8393463
Added some utility functions to convert PurpleMediaStreamType
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25671
diff
changeset
|
1253 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1254 /* |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1255 * PurpleMediaCodec |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1256 */ |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1257 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1258 struct _PurpleMediaCodecClass |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1259 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1260 GObjectClass parent_class; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1261 }; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1262 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1263 struct _PurpleMediaCodec |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1264 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1265 GObject parent; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1266 }; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1267 |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1268 #ifdef USE_VV |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1269 struct _PurpleMediaCodecPrivate |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1270 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1271 gint id; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1272 char *encoding_name; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1273 PurpleMediaSessionType media_type; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1274 guint clock_rate; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1275 guint channels; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1276 GList *optional_params; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1277 }; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1278 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1279 enum { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1280 PROP_CODEC_0, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1281 PROP_ID, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1282 PROP_ENCODING_NAME, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1283 PROP_MEDIA_TYPE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1284 PROP_CLOCK_RATE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1285 PROP_CHANNELS, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1286 PROP_OPTIONAL_PARAMS, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1287 }; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1288 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1289 static void |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1290 purple_media_codec_init(PurpleMediaCodec *info) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1291 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1292 PurpleMediaCodecPrivate *priv = |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1293 PURPLE_MEDIA_CODEC_GET_PRIVATE(info); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1294 priv->encoding_name = NULL; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1295 priv->optional_params = NULL; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1296 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1297 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1298 static void |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1299 purple_media_codec_finalize(GObject *info) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1300 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1301 PurpleMediaCodecPrivate *priv = |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1302 PURPLE_MEDIA_CODEC_GET_PRIVATE(info); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1303 g_free(priv->encoding_name); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1304 for (; priv->optional_params; priv->optional_params = |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1305 g_list_delete_link(priv->optional_params, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1306 priv->optional_params)) { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1307 g_free(priv->optional_params->data); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1308 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1309 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1310 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1311 static void |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1312 purple_media_codec_set_property (GObject *object, guint prop_id, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1313 const GValue *value, GParamSpec *pspec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1314 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1315 PurpleMediaCodecPrivate *priv; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1316 g_return_if_fail(PURPLE_IS_MEDIA_CODEC(object)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1317 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1318 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(object); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1319 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1320 switch (prop_id) { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1321 case PROP_ID: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1322 priv->id = g_value_get_uint(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1323 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1324 case PROP_ENCODING_NAME: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1325 g_free(priv->encoding_name); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1326 priv->encoding_name = g_value_dup_string(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1327 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1328 case PROP_MEDIA_TYPE: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1329 priv->media_type = g_value_get_flags(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1330 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1331 case PROP_CLOCK_RATE: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1332 priv->clock_rate = g_value_get_uint(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1333 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1334 case PROP_CHANNELS: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1335 priv->channels = g_value_get_uint(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1336 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1337 case PROP_OPTIONAL_PARAMS: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1338 priv->optional_params = g_value_get_pointer(value); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1339 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1340 default: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1341 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1342 object, prop_id, pspec); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1343 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1344 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1345 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1346 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1347 static void |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1348 purple_media_codec_get_property (GObject *object, guint prop_id, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1349 GValue *value, GParamSpec *pspec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1350 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1351 PurpleMediaCodecPrivate *priv; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1352 g_return_if_fail(PURPLE_IS_MEDIA_CODEC(object)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1353 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1354 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(object); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1355 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1356 switch (prop_id) { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1357 case PROP_ID: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1358 g_value_set_uint(value, priv->id); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1359 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1360 case PROP_ENCODING_NAME: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1361 g_value_set_string(value, priv->encoding_name); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1362 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1363 case PROP_MEDIA_TYPE: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1364 g_value_set_flags(value, priv->media_type); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1365 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1366 case PROP_CLOCK_RATE: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1367 g_value_set_uint(value, priv->clock_rate); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1368 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1369 case PROP_CHANNELS: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1370 g_value_set_uint(value, priv->channels); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1371 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1372 case PROP_OPTIONAL_PARAMS: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1373 g_value_set_pointer(value, priv->optional_params); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1374 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1375 default: |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1376 G_OBJECT_WARN_INVALID_PROPERTY_ID( |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1377 object, prop_id, pspec); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1378 break; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1379 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1380 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1381 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1382 static void |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1383 purple_media_codec_class_init(PurpleMediaCodecClass *klass) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1384 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1385 GObjectClass *gobject_class = (GObjectClass*)klass; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1386 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1387 gobject_class->finalize = purple_media_codec_finalize; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1388 gobject_class->set_property = purple_media_codec_set_property; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1389 gobject_class->get_property = purple_media_codec_get_property; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1390 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1391 g_object_class_install_property(gobject_class, PROP_ID, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1392 g_param_spec_uint("id", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1393 "ID", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1394 "The numeric identifier of the codec.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1395 0, G_MAXUINT, 0, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1396 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1397 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1398 g_object_class_install_property(gobject_class, PROP_ENCODING_NAME, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1399 g_param_spec_string("encoding-name", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1400 "Encoding Name", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1401 "The name of the codec.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1402 NULL, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1403 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1404 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1405 g_object_class_install_property(gobject_class, PROP_MEDIA_TYPE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1406 g_param_spec_flags("media-type", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1407 "Media Type", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1408 "Whether this is an audio of video codec.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1409 PURPLE_TYPE_MEDIA_SESSION_TYPE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1410 PURPLE_MEDIA_NONE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1411 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1412 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1413 g_object_class_install_property(gobject_class, PROP_CLOCK_RATE, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1414 g_param_spec_uint("clock-rate", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1415 "Create Callback", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1416 "The function called to create this element.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1417 0, G_MAXUINT, 0, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1418 G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1419 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1420 g_object_class_install_property(gobject_class, PROP_CHANNELS, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1421 g_param_spec_uint("channels", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1422 "Channels", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1423 "The number of channels in this codec.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1424 0, G_MAXUINT, 0, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1425 G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1426 g_object_class_install_property(gobject_class, PROP_OPTIONAL_PARAMS, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1427 g_param_spec_pointer("optional-params", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1428 "Optional Params", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1429 "A list of optional parameters for the codec.", |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1430 G_PARAM_READWRITE)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1431 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1432 g_type_class_add_private(klass, sizeof(PurpleMediaCodecPrivate)); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1433 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1434 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1435 G_DEFINE_TYPE(PurpleMediaCodec, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1436 purple_media_codec, G_TYPE_OBJECT); |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1437 #else |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1438 GType |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1439 purple_media_codec_get_type() |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1440 { |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1441 return G_TYPE_NONE; |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1442 } |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1443 #endif |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1444 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1445 guint |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1446 purple_media_codec_get_id(PurpleMediaCodec *codec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1447 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1448 guint id; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1449 g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1450 g_object_get(codec, "id", &id, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1451 return id; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1452 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1453 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1454 gchar * |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1455 purple_media_codec_get_encoding_name(PurpleMediaCodec *codec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1456 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1457 gchar *name; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1458 g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1459 g_object_get(codec, "encoding-name", &name, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1460 return name; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1461 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1462 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1463 guint |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1464 purple_media_codec_get_clock_rate(PurpleMediaCodec *codec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1465 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1466 guint clock_rate; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1467 g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1468 g_object_get(codec, "clock-rate", &clock_rate, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1469 return clock_rate; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1470 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1471 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1472 guint |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1473 purple_media_codec_get_channels(PurpleMediaCodec *codec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1474 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1475 guint channels; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1476 g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), 0); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1477 g_object_get(codec, "channels", &channels, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1478 return channels; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1479 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1480 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1481 GList * |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1482 purple_media_codec_get_optional_parameters(PurpleMediaCodec *codec) |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1483 { |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1484 GList *optional_params; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1485 g_return_val_if_fail(PURPLE_IS_MEDIA_CODEC(codec), NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1486 g_object_get(codec, "optional-params", &optional_params, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1487 return optional_params; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1488 } |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1489 |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1490 void |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1491 purple_media_codec_add_optional_parameter(PurpleMediaCodec *codec, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1492 const gchar *name, const gchar *value) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1493 { |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1494 #ifdef USE_VV |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1495 PurpleMediaCodecPrivate *priv; |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1496 PurpleKeyValuePair *new_param; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1497 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1498 g_return_if_fail(codec != NULL); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1499 g_return_if_fail(name != NULL && value != NULL); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1500 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1501 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1502 |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1503 new_param = g_new0(PurpleKeyValuePair, 1); |
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1504 new_param->key = g_strdup(name); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1505 new_param->value = g_strdup(value); |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1506 priv->optional_params = g_list_append( |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1507 priv->optional_params, new_param); |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1508 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1509 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1510 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1511 void |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1512 purple_media_codec_remove_optional_parameter(PurpleMediaCodec *codec, |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1513 PurpleKeyValuePair *param) |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1514 { |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1515 #ifdef USE_VV |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1516 PurpleMediaCodecPrivate *priv; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1517 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1518 g_return_if_fail(codec != NULL && param != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1519 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1520 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1521 |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1522 g_free(param->key); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1523 g_free(param->value); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1524 g_free(param); |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1525 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1526 priv->optional_params = |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1527 g_list_remove(priv->optional_params, param); |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1528 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1529 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1530 |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1531 PurpleKeyValuePair * |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1532 purple_media_codec_get_optional_parameter(PurpleMediaCodec *codec, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1533 const gchar *name, const gchar *value) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1534 { |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1535 #ifdef USE_VV |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1536 PurpleMediaCodecPrivate *priv; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1537 GList *iter; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1538 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1539 g_return_val_if_fail(codec != NULL, NULL); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1540 g_return_val_if_fail(name != NULL, NULL); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1541 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1542 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1543 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1544 for (iter = priv->optional_params; iter; iter = g_list_next(iter)) { |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1545 PurpleKeyValuePair *param = iter->data; |
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1546 if (!g_ascii_strcasecmp(param->key, name) && |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1547 (value == NULL || |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1548 !g_ascii_strcasecmp(param->value, value))) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1549 return param; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1550 } |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1551 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1552 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1553 return NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1554 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1555 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1556 PurpleMediaCodec * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1557 purple_media_codec_new(int id, const char *encoding_name, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1558 PurpleMediaSessionType media_type, guint clock_rate) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1559 { |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1560 PurpleMediaCodec *codec = |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1561 g_object_new(PURPLE_TYPE_MEDIA_CODEC, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1562 "id", id, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1563 "encoding_name", encoding_name, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1564 "media_type", media_type, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1565 "clock-rate", clock_rate, NULL); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1566 return codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1567 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1568 |
26397
c0499eb4dd4d
Disapprove part of the revision that shouldn't be there.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26396
diff
changeset
|
1569 static PurpleMediaCodec * |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1570 purple_media_codec_copy(PurpleMediaCodec *codec) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1571 { |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1572 #ifdef USE_VV |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1573 PurpleMediaCodecPrivate *priv; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1574 PurpleMediaCodec *new_codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1575 GList *iter; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1576 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1577 if (codec == NULL) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1578 return NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1579 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1580 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1581 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1582 new_codec = purple_media_codec_new(priv->id, priv->encoding_name, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1583 priv->media_type, priv->clock_rate); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1584 g_object_set(codec, "channels", priv->channels, NULL); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1585 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1586 for (iter = priv->optional_params; iter; iter = g_list_next(iter)) { |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1587 PurpleKeyValuePair *param = |
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1588 (PurpleKeyValuePair*)iter->data; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1589 purple_media_codec_add_optional_parameter(new_codec, |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1590 param->key, param->value); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1591 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1592 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1593 return new_codec; |
26507
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1594 #else |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1595 return NULL; |
90c65a8575bf
Make it compile with --disable-vv... again!
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26489
diff
changeset
|
1596 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1597 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1598 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1599 #ifdef USE_VV |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1600 static FsCodec * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1601 purple_media_codec_to_fs(const PurpleMediaCodec *codec) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1602 { |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1603 PurpleMediaCodecPrivate *priv; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1604 FsCodec *new_codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1605 GList *iter; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1606 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1607 if (codec == NULL) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1608 return NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1609 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1610 priv = PURPLE_MEDIA_CODEC_GET_PRIVATE(codec); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1611 |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1612 new_codec = fs_codec_new(priv->id, priv->encoding_name, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1613 purple_media_to_fs_media_type(priv->media_type), |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1614 priv->clock_rate); |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1615 new_codec->channels = priv->channels; |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1616 |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1617 for (iter = priv->optional_params; iter; iter = g_list_next(iter)) { |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1618 PurpleKeyValuePair *param = (PurpleKeyValuePair*)iter->data; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1619 fs_codec_add_optional_parameter(new_codec, |
26485
f0de2405c2f1
Use PurpleMediaKeyPair. Remove PurpleMediaCodecParameter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26481
diff
changeset
|
1620 param->key, param->value); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1621 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1622 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1623 return new_codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1624 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1625 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1626 static PurpleMediaCodec * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1627 purple_media_codec_from_fs(const FsCodec *codec) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1628 { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1629 PurpleMediaCodec *new_codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1630 GList *iter; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1631 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1632 if (codec == NULL) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1633 return NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1634 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1635 new_codec = purple_media_codec_new(codec->id, codec->encoding_name, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1636 purple_media_from_fs(codec->media_type, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1637 FS_DIRECTION_BOTH), codec->clock_rate); |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1638 g_object_set(new_codec, "channels", codec->channels, NULL); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1639 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1640 for (iter = codec->optional_params; iter; iter = g_list_next(iter)) { |
26109
5275c7ef9edf
Manipulate optional parameters properly.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26108
diff
changeset
|
1641 FsCodecParameter *param = (FsCodecParameter*)iter->data; |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1642 purple_media_codec_add_optional_parameter(new_codec, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1643 param->name, param->value); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1644 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1645 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1646 return new_codec; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1647 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1648 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1649 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1650 gchar * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1651 purple_media_codec_to_string(const PurpleMediaCodec *codec) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1652 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1653 #ifdef USE_VV |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1654 FsCodec *fscodec = purple_media_codec_to_fs(codec); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1655 gchar *str = fs_codec_to_string(fscodec); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1656 fs_codec_destroy(fscodec); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1657 return str; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1658 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1659 return g_strdup(""); |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1660 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1661 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1662 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1663 #ifdef USE_VV |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1664 static GList * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1665 purple_media_codec_list_from_fs(GList *codecs) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1666 { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1667 GList *new_list = NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1668 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1669 for (; codecs; codecs = g_list_next(codecs)) { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1670 new_list = g_list_prepend(new_list, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1671 purple_media_codec_from_fs( |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1672 codecs->data)); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1673 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1674 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1675 new_list = g_list_reverse(new_list); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1676 return new_list; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1677 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1678 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1679 static GList * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1680 purple_media_codec_list_to_fs(GList *codecs) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1681 { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1682 GList *new_list = NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1683 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1684 for (; codecs; codecs = g_list_next(codecs)) { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1685 new_list = g_list_prepend(new_list, |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1686 purple_media_codec_to_fs( |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1687 codecs->data)); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1688 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1689 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1690 new_list = g_list_reverse(new_list); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1691 return new_list; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1692 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1693 #endif |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1694 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1695 GList * |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1696 purple_media_codec_list_copy(GList *codecs) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1697 { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1698 GList *new_list = NULL; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1699 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1700 for (; codecs; codecs = g_list_next(codecs)) { |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1701 new_list = g_list_prepend(new_list, |
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1702 purple_media_codec_copy(codecs->data)); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1703 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1704 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1705 new_list = g_list_reverse(new_list); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1706 return new_list; |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1707 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1708 |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1709 void |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1710 purple_media_codec_list_free(GList *codecs) |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1711 { |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1712 for (; codecs; codecs = |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1713 g_list_delete_link(codecs, codecs)) { |
26486
217574ec2a34
Hide and gobjectify PurpleMediaCodec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26485
diff
changeset
|
1714 g_object_unref(codecs->data); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1715 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1716 } |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
1717 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1718 #ifdef USE_VV |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1719 static PurpleMediaSession* |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1720 purple_media_get_session(PurpleMedia *media, const gchar *sess_id) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1721 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1722 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1723 return (PurpleMediaSession*) (media->priv->sessions) ? |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1724 g_hash_table_lookup(media->priv->sessions, sess_id) : NULL; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1725 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1726 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1727 static FsParticipant* |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1728 purple_media_get_participant(PurpleMedia *media, const gchar *name) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1729 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1730 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1731 return (FsParticipant*) (media->priv->participants) ? |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1732 g_hash_table_lookup(media->priv->participants, name) : NULL; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1733 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1734 |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1735 static PurpleMediaStream* |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1736 purple_media_get_stream(PurpleMedia *media, const gchar *session, const gchar *participant) |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1737 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1738 GList *streams; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1739 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1740 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1741 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1742 streams = media->priv->streams; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1743 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1744 for (; streams; streams = g_list_next(streams)) { |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1745 PurpleMediaStream *stream = streams->data; |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1746 if (!strcmp(stream->session->id, session) && |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1747 !strcmp(stream->participant, participant)) |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1748 return stream; |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1749 } |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1750 |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1751 return NULL; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1752 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1753 |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1754 static GList * |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1755 purple_media_get_streams(PurpleMedia *media, const gchar *session, |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1756 const gchar *participant) |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1757 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1758 GList *streams; |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1759 GList *ret = NULL; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1760 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1761 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1762 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1763 streams = media->priv->streams; |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1764 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1765 for (; streams; streams = g_list_next(streams)) { |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1766 PurpleMediaStream *stream = streams->data; |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1767 if ((session == NULL || |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1768 !strcmp(stream->session->id, session)) && |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1769 (participant == NULL || |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1770 !strcmp(stream->participant, participant))) |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1771 ret = g_list_append(ret, stream); |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1772 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1773 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1774 return ret; |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1775 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
1776 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1777 static void |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1778 purple_media_add_session(PurpleMedia *media, PurpleMediaSession *session) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1779 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1780 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1781 g_return_if_fail(session != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1782 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1783 if (!media->priv->sessions) { |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1784 purple_debug_info("media", "Creating hash table for sessions\n"); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1785 media->priv->sessions = g_hash_table_new(g_str_hash, g_str_equal); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1786 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1787 g_hash_table_insert(media->priv->sessions, g_strdup(session->id), session); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1788 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1789 |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1790 static gboolean |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1791 purple_media_remove_session(PurpleMedia *media, PurpleMediaSession *session) |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1792 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1793 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1794 return g_hash_table_remove(media->priv->sessions, session->id); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1795 } |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1796 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1797 static FsParticipant * |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1798 purple_media_add_participant(PurpleMedia *media, const gchar *name) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1799 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1800 FsParticipant *participant; |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1801 GError *err = NULL; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1802 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1803 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1804 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1805 participant = purple_media_get_participant(media, name); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1806 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1807 if (participant) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1808 return participant; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1809 |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1810 participant = fs_conference_new_participant(media->priv->conference, |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
1811 (gchar*)name, &err); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1812 |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1813 if (err) { |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1814 purple_debug_error("media", "Error creating participant: %s\n", |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1815 err->message); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1816 g_error_free(err); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1817 return NULL; |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
1818 } |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1819 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1820 if (!media->priv->participants) { |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1821 purple_debug_info("media", "Creating hash table for participants\n"); |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
1822 media->priv->participants = g_hash_table_new_full(g_str_hash, |
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
1823 g_str_equal, g_free, NULL); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1824 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1825 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1826 g_hash_table_insert(media->priv->participants, g_strdup(name), participant); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1827 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1828 return participant; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1829 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1830 |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
1831 static PurpleMediaStream * |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1832 purple_media_insert_stream(PurpleMediaSession *session, const gchar *name, FsStream *stream) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1833 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1834 PurpleMediaStream *media_stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1835 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1836 g_return_val_if_fail(session != NULL, NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1837 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1838 media_stream = g_new0(PurpleMediaStream, 1); |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1839 media_stream->stream = stream; |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1840 media_stream->participant = g_strdup(name); |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1841 media_stream->session = session; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1842 |
26038
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1843 session->media->priv->streams = |
aa50b1f05145
Added PurpleMediaStream to wrap FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26036
diff
changeset
|
1844 g_list_append(session->media->priv->streams, media_stream); |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
1845 |
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
1846 return media_stream; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1847 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1848 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1849 static void |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1850 purple_media_insert_local_candidate(PurpleMediaSession *session, const gchar *name, |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1851 FsCandidate *candidate) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1852 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1853 PurpleMediaStream *stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1854 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1855 g_return_if_fail(session != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1856 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1857 stream = purple_media_get_stream(session->media, session->id, name); |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
1858 stream->local_candidates = g_list_append(stream->local_candidates, candidate); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1859 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1860 #endif |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1861 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1862 GList * |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
1863 purple_media_get_session_ids(PurpleMedia *media) |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1864 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1865 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1866 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
26208 | 1867 return media->priv->sessions != NULL ? |
1868 g_hash_table_get_keys(media->priv->sessions) : NULL; | |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1869 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1870 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1871 #endif |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1872 } |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1873 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1874 #ifdef USE_VV |
26414
89002b47a0df
Remove purple_media_set_src/sink from the public API.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26413
diff
changeset
|
1875 static void |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1876 purple_media_set_src(PurpleMedia *media, const gchar *sess_id, GstElement *src) |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1877 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1878 PurpleMediaSession *session; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1879 GstPad *sinkpad; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1880 GstPad *srcpad; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1881 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1882 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
26471
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
1883 g_return_if_fail(GST_IS_ELEMENT(src)); |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1884 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1885 session = purple_media_get_session(media, sess_id); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1886 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1887 if (session == NULL) { |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1888 purple_debug_warning("media", "purple_media_set_src: trying" |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1889 " to set src on non-existent session\n"); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1890 return; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1891 } |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1892 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1893 if (session->src) |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1894 gst_object_unref(session->src); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1895 session->src = src; |
26388
5906409c4b69
Fix some GStreamer timing issues.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26387
diff
changeset
|
1896 gst_element_set_locked_state(session->src, TRUE); |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1897 |
26197
9b0761b77218
Handle the session tee in the session rather than the src bin.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26196
diff
changeset
|
1898 session->tee = gst_element_factory_make("tee", NULL); |
9b0761b77218
Handle the session tee in the session rather than the src bin.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26196
diff
changeset
|
1899 gst_bin_add(GST_BIN(session->media->priv->confbin), session->tee); |
26463
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1900 |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1901 /* This supposedly isn't necessary, but it silences some warnings */ |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1902 if (GST_ELEMENT_PARENT(session->media->priv->confbin) |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1903 == GST_ELEMENT_PARENT(session->src)) { |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1904 GstPad *pad = gst_element_get_static_pad(session->tee, "sink"); |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1905 GstPad *ghost = gst_ghost_pad_new(NULL, pad); |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1906 gst_object_unref(pad); |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1907 gst_pad_set_active(ghost, TRUE); |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1908 gst_element_add_pad(session->media->priv->confbin, ghost); |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1909 } |
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1910 |
28230 | 1911 gst_element_set_state(session->tee, GST_STATE_PLAYING); |
26463
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1912 gst_element_link(session->src, session->media->priv->confbin); |
26197
9b0761b77218
Handle the session tee in the session rather than the src bin.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26196
diff
changeset
|
1913 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1914 g_object_get(session->session, "sink-pad", &sinkpad, NULL); |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1915 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1916 gchar *name = g_strdup_printf("volume_%s", session->id); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1917 GstElement *level; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1918 GstElement *volume = gst_element_factory_make("volume", name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1919 double input_volume = purple_prefs_get_int( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1920 "/purple/media/audio/volume/input")/10.0; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1921 g_free(name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1922 name = g_strdup_printf("sendlevel_%s", session->id); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1923 level = gst_element_factory_make("level", name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1924 g_free(name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1925 gst_bin_add(GST_BIN(session->media->priv->confbin), volume); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1926 gst_bin_add(GST_BIN(session->media->priv->confbin), level); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1927 gst_element_set_state(level, GST_STATE_PLAYING); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1928 gst_element_set_state(volume, GST_STATE_PLAYING); |
28230 | 1929 gst_element_link(volume, level); |
1930 gst_element_link(session->tee, volume); | |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1931 srcpad = gst_element_get_static_pad(level, "src"); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1932 g_object_set(volume, "volume", input_volume, NULL); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1933 } else { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1934 srcpad = gst_element_get_request_pad(session->tee, "src%d"); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1935 } |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1936 purple_debug_info("media", "connecting pad: %s\n", |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1937 gst_pad_link(srcpad, sinkpad) == GST_PAD_LINK_OK |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1938 ? "success" : "failure"); |
26388
5906409c4b69
Fix some GStreamer timing issues.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26387
diff
changeset
|
1939 gst_element_set_locked_state(session->src, FALSE); |
26463
6bcf5ad967ea
Make sharing sources between media sessions work.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26454
diff
changeset
|
1940 gst_object_unref(session->src); |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1941 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1942 #endif |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1943 |
26621
4f2f5659aa0d
Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26606
diff
changeset
|
1944 #ifdef USE_GSTREAMER |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1945 GstElement * |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
1946 purple_media_get_src(PurpleMedia *media, const gchar *sess_id) |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1947 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1948 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1949 PurpleMediaSession *session; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1950 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1951 session = purple_media_get_session(media, sess_id); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1952 return (session != NULL) ? session->src : NULL; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1953 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1954 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1955 #endif |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1956 } |
26621
4f2f5659aa0d
Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26606
diff
changeset
|
1957 #endif /* USE_GSTREAMER */ |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
1958 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
1959 #ifdef USE_VV |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1960 static PurpleMediaSession * |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1961 purple_media_session_from_fs_stream(PurpleMedia *media, FsStream *stream) |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1962 { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1963 FsSession *fssession; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1964 GList *values; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1965 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1966 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1967 g_return_val_if_fail(FS_IS_STREAM(stream), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
1968 |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1969 g_object_get(stream, "session", &fssession, NULL); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1970 |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1971 values = g_hash_table_get_values(media->priv->sessions); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1972 |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1973 for (; values; values = g_list_delete_link(values, values)) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1974 PurpleMediaSession *session = values->data; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1975 |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1976 if (session->session == fssession) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1977 g_list_free(values); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1978 g_object_unref(fssession); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1979 return session; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1980 } |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1981 } |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1982 |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1983 g_object_unref(fssession); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1984 return NULL; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1985 } |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
1986 |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
1987 static gboolean |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
1988 media_bus_call(GstBus *bus, GstMessage *msg, PurpleMedia *media) |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
1989 { |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
1990 switch(GST_MESSAGE_TYPE(msg)) { |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
1991 case GST_MESSAGE_ELEMENT: { |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1992 if (g_signal_has_handler_pending(media, |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1993 purple_media_signals[LEVEL], 0, FALSE) |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1994 && gst_structure_has_name( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1995 gst_message_get_structure(msg), "level")) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1996 GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1997 gchar *name; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1998 gchar *participant = NULL; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
1999 PurpleMediaSession *session = NULL; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2000 gdouble rms_db; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2001 gdouble percent; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2002 const GValue *list; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2003 const GValue *value; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2004 |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2005 if (!PURPLE_IS_MEDIA(media) || |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2006 GST_ELEMENT_PARENT(src) != |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2007 media->priv->confbin) |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2008 break; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2009 |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2010 name = gst_element_get_name(src); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2011 if (!strncmp(name, "sendlevel_", 10)) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2012 session = purple_media_get_session( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2013 media, name+10); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2014 } else { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2015 GList *iter = media->priv->streams; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2016 for (; iter; iter = g_list_next(iter)) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2017 PurpleMediaStream *stream = iter->data; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2018 if (stream->level == src) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2019 session = stream->session; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2020 participant = stream->participant; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2021 break; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2022 } |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2023 } |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2024 } |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2025 g_free(name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2026 if (!session) |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2027 break; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2028 |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2029 list = gst_structure_get_value( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2030 gst_message_get_structure(msg), "rms"); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2031 value = gst_value_list_get_value(list, 0); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2032 rms_db = g_value_get_double(value); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2033 percent = pow(10, rms_db / 20) * 5; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2034 if(percent > 1.0) |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2035 percent = 1.0; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2036 |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2037 g_signal_emit(media, purple_media_signals[LEVEL], |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2038 0, session->id, participant, percent); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2039 break; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2040 } |
26196
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
2041 if (!FS_IS_CONFERENCE(GST_MESSAGE_SRC(msg)) || |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
2042 !PURPLE_IS_MEDIA(media) || |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
2043 media->priv->conference != |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
2044 FS_CONFERENCE(GST_MESSAGE_SRC(msg))) |
730e760ca39f
Move pipeline creation into the media manager.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26191
diff
changeset
|
2045 break; |
26152
7be8c88d630c
Have all media sessions use a single pipeline.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26146
diff
changeset
|
2046 |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2047 if (gst_structure_has_name(msg->structure, "farsight-error")) { |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2048 FsError error_no; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2049 gst_structure_get_enum(msg->structure, "error-no", |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2050 FS_TYPE_ERROR, (gint*)&error_no); |
28456
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2051 switch (error_no) { |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2052 case FS_ERROR_NO_CODECS: |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2053 purple_media_error(media, _("No codecs found. Install some GStreamer codecs found in GStreamer plugins packages.")); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2054 purple_media_end(media, NULL, NULL); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2055 break; |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2056 case FS_ERROR_NO_CODECS_LEFT: |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2057 purple_media_error(media, _("No codecs left. Your codec preferences in fs-codecs.conf are too strict.")); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2058 purple_media_end(media, NULL, NULL); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2059 break; |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2060 case FS_ERROR_UNKNOWN_CNAME: |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2061 /* |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2062 * Unknown CName is only a problem for the |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2063 * multicast transmitter which isn't used. |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2064 * It is also deprecated. |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2065 */ |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2066 break; |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2067 default: |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2068 purple_debug_error("media", "farsight-error: %i: %s\n", error_no, |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2069 gst_structure_get_string(msg->structure, "error-msg")); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2070 break; |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2071 } |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2072 |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2073 if (FS_ERROR_IS_FATAL(error_no)) { |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2074 purple_media_error(media, _("A non-recoverable Farsight2 error has occurred.")); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2075 purple_media_end(media, NULL, NULL); |
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2076 } |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2077 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2078 "farsight-new-local-candidate")) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2079 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2080 FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "candidate")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2081 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2082 purple_media_new_local_candidate_cb(stream, local_candidate, session); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2083 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2084 "farsight-local-candidates-prepared")) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2085 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2086 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2087 purple_media_candidates_prepared_cb(stream, session); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2088 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2089 "farsight-new-active-candidate-pair")) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2090 FsStream *stream = g_value_get_object(gst_structure_get_value(msg->structure, "stream")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2091 FsCandidate *local_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "local-candidate")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2092 FsCandidate *remote_candidate = g_value_get_boxed(gst_structure_get_value(msg->structure, "remote-candidate")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2093 PurpleMediaSession *session = purple_media_session_from_fs_stream(media, stream); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2094 purple_media_candidate_pair_established_cb(stream, local_candidate, remote_candidate, session); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2095 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2096 "farsight-recv-codecs-changed")) { |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2097 GList *codecs = g_value_get_boxed(gst_structure_get_value(msg->structure, "codecs")); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2098 FsCodec *codec = codecs->data; |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2099 purple_debug_info("media", "farsight-recv-codecs-changed: %s\n", codec->encoding_name); |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2100 |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2101 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2102 "farsight-component-state-changed")) { |
26173
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2103 FsStreamState fsstate = g_value_get_enum(gst_structure_get_value(msg->structure, "state")); |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2104 guint component = g_value_get_uint(gst_structure_get_value(msg->structure, "component")); |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2105 const gchar *state; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2106 switch (fsstate) { |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2107 case FS_STREAM_STATE_FAILED: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2108 state = "FAILED"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2109 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2110 case FS_STREAM_STATE_DISCONNECTED: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2111 state = "DISCONNECTED"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2112 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2113 case FS_STREAM_STATE_GATHERING: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2114 state = "GATHERING"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2115 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2116 case FS_STREAM_STATE_CONNECTING: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2117 state = "CONNECTING"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2118 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2119 case FS_STREAM_STATE_CONNECTED: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2120 state = "CONNECTED"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2121 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2122 case FS_STREAM_STATE_READY: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2123 state = "READY"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2124 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2125 default: |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2126 state = "UNKNOWN"; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2127 break; |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2128 } |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2129 purple_debug_info("media", "farsight-component-state-changed: component: %u state: %s\n", component, state); |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2130 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2131 "farsight-send-codec-changed")) { |
26173
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2132 FsCodec *codec = g_value_get_boxed(gst_structure_get_value(msg->structure, "codec")); |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2133 gchar *codec_str = fs_codec_to_string(codec); |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2134 purple_debug_info("media", "farsight-send-codec-changed: codec: %s\n", codec_str); |
58071d9f10b1
Add some debug messages for the remaining Farsight signals.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26172
diff
changeset
|
2135 g_free(codec_str); |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2136 } else if (gst_structure_has_name(msg->structure, |
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2137 "farsight-codecs-changed")) { |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2138 GList *sessions = g_hash_table_get_values(PURPLE_MEDIA(media)->priv->sessions); |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2139 FsSession *fssession = g_value_get_object(gst_structure_get_value(msg->structure, "session")); |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2140 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2141 PurpleMediaSession *session = sessions->data; |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2142 if (session->session == fssession) { |
26398
bd9fa96c47dc
Remove the ready-new signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26396
diff
changeset
|
2143 gchar *session_id = g_strdup(session->id); |
26141
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
2144 g_signal_emit(media, purple_media_signals[CODECS_CHANGED], 0, session_id); |
1ff5304f6e9d
Added codecs-changed signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26140
diff
changeset
|
2145 g_free(session_id); |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2146 g_list_free(sessions); |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2147 break; |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2148 } |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
2149 } |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2150 } |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2151 break; |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2152 } |
28428
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2153 case GST_MESSAGE_ERROR: { |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2154 GstElement *element = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2155 GstElement *lastElement = NULL; |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2156 while (!GST_IS_PIPELINE(element)) { |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2157 if (element == media->priv->confbin) { |
28632
bb06f05c7159
I can't see why dots should be usefull here:
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
28489
diff
changeset
|
2158 purple_media_error(media, _("Conference error")); |
28428
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2159 purple_media_end(media, NULL, NULL); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2160 break; |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2161 } |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2162 lastElement = element; |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2163 element = GST_ELEMENT_PARENT(element); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2164 } |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2165 if (GST_IS_PIPELINE(element)) { |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2166 GList *sessions = g_hash_table_get_values(media->priv->sessions); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2167 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2168 PurpleMediaSession *session = sessions->data; |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2169 |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2170 if (session->src == lastElement) { |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2171 if (session->type & PURPLE_MEDIA_AUDIO) |
28632
bb06f05c7159
I can't see why dots should be usefull here:
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
28489
diff
changeset
|
2172 purple_media_error(media, _("Error with your microphone")); |
28428
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2173 else |
28632
bb06f05c7159
I can't see why dots should be usefull here:
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
28489
diff
changeset
|
2174 purple_media_error(media, _("Error with your webcam")); |
28428
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2175 purple_media_end(media, NULL, NULL); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2176 break; |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2177 } |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2178 } |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2179 g_list_free(sessions); |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2180 } |
afa79877d972
Detect that there has been an error in the GStreamer pipeline, output an
maiku@pidgin.im
parents:
28400
diff
changeset
|
2181 } |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2182 default: |
25732
d6bda7b63eac
Remove a bunch of extraneous GstBus messages from the debug output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25731
diff
changeset
|
2183 break; |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2184 } |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2185 |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2186 return TRUE; |
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2187 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2188 #endif |
25692
19e077a4cb62
Move the main voice and video pipeline into media.c and display more debug info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25687
diff
changeset
|
2189 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
2190 PurpleAccount * |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
2191 purple_media_get_account(PurpleMedia *media) |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
2192 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2193 #ifdef USE_VV |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
2194 PurpleAccount *account; |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
2195 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
2196 g_object_get(G_OBJECT(media), "account", &account, NULL); |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26507
diff
changeset
|
2197 return account; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2198 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2199 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2200 #endif |
26203
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
2201 } |
7738f530a967
Added the connection property back to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26200
diff
changeset
|
2202 |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2203 gpointer |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2204 purple_media_get_prpl_data(PurpleMedia *media) |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2205 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2206 #ifdef USE_VV |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2207 gpointer prpl_data; |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2208 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2209 g_object_get(G_OBJECT(media), "prpl-data", &prpl_data, NULL); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2210 return prpl_data; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2211 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2212 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2213 #endif |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2214 } |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2215 |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2216 void |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2217 purple_media_set_prpl_data(PurpleMedia *media, gpointer prpl_data) |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2218 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2219 #ifdef USE_VV |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2220 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2221 g_object_set(G_OBJECT(media), "prpl-data", prpl_data, NULL); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2222 #endif |
26204
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2223 } |
e411aad4346b
Add a prpl-data property to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26203
diff
changeset
|
2224 |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
2225 void |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2226 purple_media_error(PurpleMedia *media, const gchar *error, ...) |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2227 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2228 #ifdef USE_VV |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2229 va_list args; |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2230 gchar *message; |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2231 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2232 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2233 |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2234 va_start(args, error); |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2235 message = g_strdup_vprintf(error, args); |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2236 va_end(args); |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2237 |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2238 purple_debug_error("media", "%s\n", message); |
28042
60aab59fb35a
Make media.c compilable on Windows following guidance from Maiku
Stu Tomlinson <stu@nosnilmot.com>
parents:
27081
diff
changeset
|
2239 g_signal_emit(media, purple_media_signals[S_ERROR], 0, message); |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2240 |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2241 g_free(message); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2242 #endif |
26058
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2243 } |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2244 |
0ad1b8e950d7
Add purple_media_error.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26057
diff
changeset
|
2245 void |
26140
ac56e5707a72
Added purple_media_end and removed the purple_media_got_hangup.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26139
diff
changeset
|
2246 purple_media_end(PurpleMedia *media, |
ac56e5707a72
Added purple_media_end and removed the purple_media_got_hangup.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26139
diff
changeset
|
2247 const gchar *session_id, const gchar *participant) |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
2248 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2249 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2250 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
26145
685c8f5f85c7
Separate PidginMedia from PidginConversation.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26143
diff
changeset
|
2251 if (session_id == NULL && participant == NULL) { |
26140
ac56e5707a72
Added purple_media_end and removed the purple_media_got_hangup.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26139
diff
changeset
|
2252 g_signal_emit(media, purple_media_signals[STATE_CHANGED], |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
2253 0, PURPLE_MEDIA_STATE_END, |
26140
ac56e5707a72
Added purple_media_end and removed the purple_media_got_hangup.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26139
diff
changeset
|
2254 NULL, NULL); |
26145
685c8f5f85c7
Separate PidginMedia from PidginConversation.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26143
diff
changeset
|
2255 g_object_unref(media); |
685c8f5f85c7
Separate PidginMedia from PidginConversation.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26143
diff
changeset
|
2256 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2257 #endif |
25548
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
2258 } |
70cdff43ec76
You can actually receive Google Talk voice calls with crappy UI now
Sean Egan <seanegan@gmail.com>
parents:
25546
diff
changeset
|
2259 |
26448
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2260 void |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2261 purple_media_stream_info(PurpleMedia *media, PurpleMediaInfoType type, |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2262 const gchar *session_id, const gchar *participant, |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2263 gboolean local) |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2264 { |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2265 #ifdef USE_VV |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2266 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2267 |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2268 if (type == PURPLE_MEDIA_INFO_ACCEPT) { |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2269 GList *streams; |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2270 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2271 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2272 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2273 streams = purple_media_get_streams(media, |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2274 session_id, participant); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2275 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2276 for (; streams; streams = |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2277 g_list_delete_link(streams, streams)) { |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2278 PurpleMediaStream *stream = streams->data; |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2279 g_object_set(G_OBJECT(stream->stream), "direction", |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2280 purple_media_to_fs_stream_direction( |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2281 stream->session->type), NULL); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2282 stream->accepted = TRUE; |
28489
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2283 |
28909
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2284 if (stream->remote_candidates != NULL && |
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2285 stream->initiator == FALSE) { |
28489
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2286 GError *err = NULL; |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2287 fs_stream_set_remote_candidates(stream->stream, |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2288 stream->remote_candidates, &err); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2289 |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2290 if (err) { |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2291 purple_debug_error("media", "Error adding remote" |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2292 " candidates: %s\n", err->message); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2293 g_error_free(err); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2294 } |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2295 } |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2296 } |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2297 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_MUTE || |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2298 type == PURPLE_MEDIA_INFO_UNMUTE)) { |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2299 GList *sessions; |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2300 gboolean active = (type == PURPLE_MEDIA_INFO_MUTE); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2301 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2302 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
26448
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2303 |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2304 if (session_id == NULL) |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2305 sessions = g_hash_table_get_values( |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2306 media->priv->sessions); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2307 else |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2308 sessions = g_list_prepend(NULL, |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2309 purple_media_get_session( |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2310 media, session_id)); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2311 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2312 purple_debug_info("media", "Turning mute %s\n", |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2313 active ? "on" : "off"); |
26448
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2314 |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2315 for (; sessions; sessions = g_list_delete_link( |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2316 sessions, sessions)) { |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2317 PurpleMediaSession *session = sessions->data; |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2318 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2319 gchar *name = g_strdup_printf("volume_%s", |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2320 session->id); |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2321 GstElement *volume = gst_bin_get_by_name( |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2322 GST_BIN(session->media-> |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2323 priv->confbin), name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2324 g_free(name); |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2325 g_object_set(volume, "mute", active, NULL); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2326 } |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2327 } |
28199
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2328 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_PAUSE || |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2329 type == PURPLE_MEDIA_INFO_UNPAUSE)) { |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2330 gboolean active = (type == PURPLE_MEDIA_INFO_PAUSE); |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2331 GList *streams = purple_media_get_streams(media, |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2332 session_id, participant); |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2333 for (; streams; streams = g_list_delete_link(streams, streams)) { |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2334 PurpleMediaStream *stream = streams->data; |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2335 if (stream->session->type & PURPLE_MEDIA_SEND_VIDEO) { |
28771
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2336 stream->paused = active; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2337 |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2338 if (!stream->held) |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2339 g_object_set(stream->stream, "direction", |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2340 purple_media_to_fs_stream_direction( |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2341 stream->session->type & ((active) ? |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2342 ~PURPLE_MEDIA_SEND_VIDEO : |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2343 PURPLE_MEDIA_VIDEO)), NULL); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2344 } |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2345 } |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2346 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_HOLD || |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2347 type == PURPLE_MEDIA_INFO_UNHOLD)) { |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2348 GList *streams; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2349 gboolean active = (type == PURPLE_MEDIA_INFO_HOLD); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2350 |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2351 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2352 |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2353 streams = purple_media_get_streams(media, |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2354 session_id, participant); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2355 for (; streams; streams = g_list_delete_link(streams, streams)) { |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2356 PurpleMediaStream *stream = streams->data; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2357 stream->held = active; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2358 if (stream->session->type & PURPLE_MEDIA_VIDEO) { |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2359 FsStreamDirection direction; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2360 |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2361 direction = ((active) ? |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2362 ~PURPLE_MEDIA_VIDEO : |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2363 PURPLE_MEDIA_VIDEO); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2364 if (!active && stream->paused) |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2365 direction &= ~PURPLE_MEDIA_SEND_VIDEO; |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2366 |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2367 g_object_set(stream->stream, "direction", |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2368 purple_media_to_fs_stream_direction( |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2369 stream->session->type & direction), NULL); |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2370 } else if (stream->session->type & PURPLE_MEDIA_AUDIO) { |
28199
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2371 g_object_set(stream->stream, "direction", |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2372 purple_media_to_fs_stream_direction( |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2373 stream->session->type & ((active) ? |
28771
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2374 ~PURPLE_MEDIA_AUDIO : |
2c4a3703324b
Actually emit the PURPLE_MEDIA_INFO_{,UN}HOLD signals.
maiku@pidgin.im
parents:
28770
diff
changeset
|
2375 PURPLE_MEDIA_AUDIO)), NULL); |
28199
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2376 } |
c1687897825f
Add pause capability for local video.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28191
diff
changeset
|
2377 } |
26450
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2378 } |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2379 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2380 g_signal_emit(media, purple_media_signals[STREAM_INFO], |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2381 0, type, session_id, participant, local); |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2382 |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2383 if (type == PURPLE_MEDIA_INFO_HANGUP || |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2384 type == PURPLE_MEDIA_INFO_REJECT) { |
aab0195f997d
Move functionality into purple_media_stream_info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26449
diff
changeset
|
2385 purple_media_end(media, session_id, participant); |
26448
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2386 } |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2387 #endif |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2388 } |
4e1286e76f1f
Create purple_media_stream_info. Add local parameter to stream-info signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26442
diff
changeset
|
2389 |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2390 #ifdef USE_VV |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2391 static void |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2392 purple_media_new_local_candidate_cb(FsStream *stream, |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2393 FsCandidate *local_candidate, |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2394 PurpleMediaSession *session) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2395 { |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2396 gchar *name; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2397 FsParticipant *participant; |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
2398 PurpleMediaCandidate *candidate; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2399 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2400 g_return_if_fail(FS_IS_STREAM(stream)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2401 g_return_if_fail(session != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2402 |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2403 purple_debug_info("media", "got new local candidate: %s\n", local_candidate->foundation); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2404 g_object_get(stream, "participant", &participant, NULL); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2405 g_object_get(participant, "cname", &name, NULL); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2406 g_object_unref(participant); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2407 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2408 purple_media_insert_local_candidate(session, name, fs_candidate_copy(local_candidate)); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2409 |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
2410 candidate = purple_media_candidate_from_fs(local_candidate); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2411 g_signal_emit(session->media, purple_media_signals[NEW_CANDIDATE], |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
2412 0, session->id, name, candidate); |
26488
2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26486
diff
changeset
|
2413 g_object_unref(candidate); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2414 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2415 g_free(name); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2416 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2417 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2418 static void |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2419 purple_media_candidates_prepared_cb(FsStream *stream, PurpleMediaSession *session) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2420 { |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2421 gchar *name; |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2422 FsParticipant *participant; |
26065
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2423 PurpleMediaStream *stream_data; |
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2424 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2425 g_return_if_fail(FS_IS_STREAM(stream)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2426 g_return_if_fail(session != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2427 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2428 g_object_get(stream, "participant", &participant, NULL); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2429 g_object_get(participant, "cname", &name, NULL); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2430 g_object_unref(participant); |
26065
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2431 |
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2432 stream_data = purple_media_get_stream(session->media, session->id, name); |
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2433 stream_data->candidates_prepared = TRUE; |
7caa7e2ce870
Implement a new ready signal.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26063
diff
changeset
|
2434 |
26380
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
2435 g_signal_emit(session->media, |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
2436 purple_media_signals[CANDIDATES_PREPARED], |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
2437 0, session->id, name); |
b892b3cb9dbc
Add candidates-prepared signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26374
diff
changeset
|
2438 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2439 g_free(name); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2440 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2441 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2442 /* callback called when a pair of transport candidates (local and remote) |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2443 * has been established */ |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2444 static void |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2445 purple_media_candidate_pair_established_cb(FsStream *fsstream, |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2446 FsCandidate *native_candidate, |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2447 FsCandidate *remote_candidate, |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
2448 PurpleMediaSession *session) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2449 { |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2450 gchar *name; |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2451 FsParticipant *participant; |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2452 PurpleMediaStream *stream; |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2453 GList *iter; |
25728
c48f5c9600c3
Fixed a ton of memory leaks.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25727
diff
changeset
|
2454 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2455 g_return_if_fail(FS_IS_STREAM(fsstream)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2456 g_return_if_fail(session != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2457 |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2458 g_object_get(fsstream, "participant", &participant, NULL); |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2459 g_object_get(participant, "cname", &name, NULL); |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2460 g_object_unref(participant); |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2461 |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2462 stream = purple_media_get_stream(session->media, session->id, name); |
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2463 |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2464 iter = stream->active_local_candidates; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2465 for(; iter; iter = g_list_next(iter)) { |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2466 FsCandidate *c = iter->data; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2467 if (native_candidate->component_id == c->component_id) { |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2468 fs_candidate_destroy(c); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2469 stream->active_local_candidates = |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2470 g_list_delete_link(iter, iter); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2471 stream->active_local_candidates = g_list_prepend( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2472 stream->active_local_candidates, |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2473 fs_candidate_copy(native_candidate)); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2474 break; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2475 } |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2476 } |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2477 if (iter == NULL) |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2478 stream->active_local_candidates = g_list_prepend( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2479 stream->active_local_candidates, |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2480 fs_candidate_copy(native_candidate)); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2481 |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2482 iter = stream->active_remote_candidates; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2483 for(; iter; iter = g_list_next(iter)) { |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2484 FsCandidate *c = iter->data; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2485 if (native_candidate->component_id == c->component_id) { |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2486 fs_candidate_destroy(c); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2487 stream->active_remote_candidates = |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2488 g_list_delete_link(iter, iter); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2489 stream->active_remote_candidates = g_list_prepend( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2490 stream->active_remote_candidates, |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2491 fs_candidate_copy(remote_candidate)); |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2492 break; |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2493 } |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2494 } |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2495 if (iter == NULL) |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2496 stream->active_remote_candidates = g_list_prepend( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2497 stream->active_remote_candidates, |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2498 fs_candidate_copy(remote_candidate)); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2499 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2500 purple_debug_info("media", "candidate pair established\n"); |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2501 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2502 |
26108
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2503 static gboolean |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2504 purple_media_connected_cb(PurpleMediaStream *stream) |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2505 { |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2506 g_return_val_if_fail(stream != NULL, FALSE); |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2507 |
26200
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
2508 stream->connected_cb_id = 0; |
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
2509 |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2510 purple_media_manager_create_output_window( |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2511 stream->session->media->priv->manager, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2512 stream->session->media, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2513 stream->session->id, stream->participant); |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
2514 |
26108
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2515 g_signal_emit(stream->session->media, |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2516 purple_media_signals[STATE_CHANGED], |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
2517 0, PURPLE_MEDIA_STATE_CONNECTED, |
26108
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2518 stream->session->id, stream->participant); |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2519 return FALSE; |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2520 } |
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2521 |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2522 static void |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
2523 purple_media_src_pad_added_cb(FsStream *fsstream, GstPad *srcpad, |
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
2524 FsCodec *codec, PurpleMediaStream *stream) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2525 { |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2526 PurpleMediaPrivate *priv; |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2527 GstPad *sinkpad; |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
2528 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2529 g_return_if_fail(FS_IS_STREAM(fsstream)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2530 g_return_if_fail(stream != NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2531 |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2532 priv = stream->session->media->priv; |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2533 |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2534 if (stream->src == NULL) { |
26216 | 2535 GstElement *sink = NULL; |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2536 |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2537 if (codec->media_type == FS_MEDIA_TYPE_AUDIO) { |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2538 GstElement *queue = NULL; |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2539 double output_volume = purple_prefs_get_int( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2540 "/purple/media/audio/volume/output")/10.0; |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2541 /* |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2542 * Should this instead be: |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2543 * audioconvert ! audioresample ! liveadder ! |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2544 * audioresample ! audioconvert ! realsink |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2545 */ |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2546 queue = gst_element_factory_make("queue", NULL); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2547 stream->volume = gst_element_factory_make( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2548 "volume", NULL); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2549 g_object_set(stream->volume, "volume", |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2550 output_volume, NULL); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2551 stream->level = gst_element_factory_make( |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2552 "level", NULL); |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2553 stream->src = gst_element_factory_make( |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2554 "liveadder", NULL); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2555 sink = purple_media_manager_get_element(priv->manager, |
26474
9c671fc1b351
Give more information to element creation functions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26471
diff
changeset
|
2556 PURPLE_MEDIA_RECV_AUDIO, |
9c671fc1b351
Give more information to element creation functions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26471
diff
changeset
|
2557 stream->session->media, |
9c671fc1b351
Give more information to element creation functions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26471
diff
changeset
|
2558 stream->session->id, |
9c671fc1b351
Give more information to element creation functions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26471
diff
changeset
|
2559 stream->participant); |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2560 gst_bin_add(GST_BIN(priv->confbin), queue); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2561 gst_bin_add(GST_BIN(priv->confbin), stream->volume); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2562 gst_bin_add(GST_BIN(priv->confbin), stream->level); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2563 gst_bin_add(GST_BIN(priv->confbin), sink); |
28227
d865064a3104
Switch around some GStreamer linking and state setting.
maiku@pidgin.im
parents:
28199
diff
changeset
|
2564 gst_element_set_state(sink, GST_STATE_PLAYING); |
d865064a3104
Switch around some GStreamer linking and state setting.
maiku@pidgin.im
parents:
28199
diff
changeset
|
2565 gst_element_set_state(stream->level, GST_STATE_PLAYING); |
d865064a3104
Switch around some GStreamer linking and state setting.
maiku@pidgin.im
parents:
28199
diff
changeset
|
2566 gst_element_set_state(stream->volume, GST_STATE_PLAYING); |
28230 | 2567 gst_element_set_state(queue, GST_STATE_PLAYING); |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2568 gst_element_link(stream->level, sink); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2569 gst_element_link(stream->volume, stream->level); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2570 gst_element_link(queue, stream->volume); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2571 sink = queue; |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2572 } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) { |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2573 stream->src = gst_element_factory_make( |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2574 "fsfunnel", NULL); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2575 sink = gst_element_factory_make( |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2576 "fakesink", NULL); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2577 g_object_set(G_OBJECT(sink), "async", FALSE, NULL); |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2578 gst_bin_add(GST_BIN(priv->confbin), sink); |
28230 | 2579 gst_element_set_state(sink, GST_STATE_PLAYING); |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2580 } |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2581 stream->tee = gst_element_factory_make("tee", NULL); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2582 gst_bin_add_many(GST_BIN(priv->confbin), |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
2583 stream->src, stream->tee, NULL); |
28227
d865064a3104
Switch around some GStreamer linking and state setting.
maiku@pidgin.im
parents:
28199
diff
changeset
|
2584 gst_element_set_state(stream->tee, GST_STATE_PLAYING); |
d865064a3104
Switch around some GStreamer linking and state setting.
maiku@pidgin.im
parents:
28199
diff
changeset
|
2585 gst_element_set_state(stream->src, GST_STATE_PLAYING); |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2586 gst_element_link_many(stream->src, stream->tee, sink, NULL); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2587 } |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2588 |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2589 sinkpad = gst_element_get_request_pad(stream->src, "sink%d"); |
26108
71eee5468b9d
Fix some crashes from printing debug messages on a separate thread.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26106
diff
changeset
|
2590 gst_pad_link(srcpad, sinkpad); |
26191
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2591 gst_object_unref(sinkpad); |
fcfb7571515c
Have all src_pads for a stream be funneled into the same stream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26189
diff
changeset
|
2592 |
26200
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
2593 stream->connected_cb_id = purple_timeout_add(0, |
0a6f1f796d21
Use purple_timeout_* instead of g_timeout_*.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26199
diff
changeset
|
2594 (GSourceFunc)purple_media_connected_cb, stream); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2595 } |
27079
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2596 |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2597 static void |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2598 purple_media_element_added_cb(FsElementAddedNotifier *self, |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2599 GstBin *bin, GstElement *element, gpointer user_data) |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2600 { |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2601 /* |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2602 * Hack to make H264 work with Gmail video. |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2603 */ |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2604 if (!strncmp(GST_ELEMENT_NAME(element), "x264", 4)) { |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2605 g_object_set(GST_OBJECT(element), "cabac", FALSE, NULL); |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2606 } |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2607 } |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2608 #endif /* USE_VV */ |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2609 |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2610 gboolean |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2611 purple_media_add_stream(PurpleMedia *media, const gchar *sess_id, |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2612 const gchar *who, PurpleMediaSessionType type, |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2613 gboolean initiator, const gchar *transmitter, |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2614 guint num_params, GParameter *params) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2615 { |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2616 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2617 PurpleMediaSession *session; |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2618 FsParticipant *participant = NULL; |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2619 PurpleMediaStream *stream = NULL; |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2620 FsMediaType media_type = purple_media_to_fs_media_type(type); |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2621 FsStreamDirection type_direction = |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2622 purple_media_to_fs_stream_direction(type); |
26387
189ac8d13103
Fix assertion stating FsRawUdpTransmitter doesn't have a relay-info
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26380
diff
changeset
|
2623 gboolean is_nice = !strcmp(transmitter, "nice"); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2624 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2625 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2626 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2627 session = purple_media_get_session(media, sess_id); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2628 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2629 if (!session) { |
25651
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2630 GError *err = NULL; |
27081
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2631 GList *codec_conf = NULL, *iter = NULL; |
26024
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2632 gchar *filename = NULL; |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2633 PurpleMediaSessionType session_type; |
26471
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2634 GstElement *src = NULL; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2635 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2636 session = g_new0(PurpleMediaSession, 1); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2637 |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2638 session->session = fs_conference_new_session( |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2639 media->priv->conference, media_type, &err); |
25651
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2640 |
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2641 if (err != NULL) { |
28456
f628e98e6dff
Add some extra error strings just in case.
maiku@pidgin.im
parents:
28441
diff
changeset
|
2642 purple_media_error(media, _("Error creating session: %s"), err->message); |
25651
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2643 g_error_free(err); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2644 g_free(session); |
25651
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2645 return FALSE; |
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2646 } |
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2647 |
26024
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2648 filename = g_build_filename(purple_user_dir(), "fs-codec.conf", NULL); |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2649 codec_conf = fs_codec_list_from_keyfile(filename, &err); |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2650 g_free(filename); |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2651 |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2652 if (err != NULL) { |
26172
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2653 if (err->code == 4) |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2654 purple_debug_info("media", "Couldn't read " |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2655 "fs-codec.conf: %s\n", |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2656 err->message); |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2657 else |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2658 purple_debug_error("media", "Error reading " |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2659 "fs-codec.conf: %s\n", |
8a402c91fe6f
Don't output an error if fs-codec.conf doesn't exist.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26166
diff
changeset
|
2660 err->message); |
26024
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2661 g_error_free(err); |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2662 } |
78c3e991782a
Use a key file for Farsight 2 codec configuration.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26014
diff
changeset
|
2663 |
27081
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2664 /* |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2665 * Add SPEEX if the configuration file doesn't exist or |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2666 * there isn't a speex entry. |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2667 */ |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2668 for (iter = codec_conf; iter; iter = g_list_next(iter)) { |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2669 FsCodec *codec = iter->data; |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2670 if (!g_ascii_strcasecmp(codec->encoding_name, "speex")) |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2671 break; |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2672 } |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2673 |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2674 if (iter == NULL) { |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2675 codec_conf = g_list_prepend(codec_conf, |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2676 fs_codec_new(FS_CODEC_ID_ANY, |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2677 "SPEEX", FS_MEDIA_TYPE_AUDIO, 8000)); |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2678 codec_conf = g_list_prepend(codec_conf, |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2679 fs_codec_new(FS_CODEC_ID_ANY, |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2680 "SPEEX", FS_MEDIA_TYPE_AUDIO, 16000)); |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2681 } |
5a4451b8fe29
Add speex as a default codec.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27079
diff
changeset
|
2682 |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2683 fs_session_set_codec_preferences(session->session, codec_conf, NULL); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2684 |
26056
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2685 /* |
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2686 * Removes a 5-7 second delay before |
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2687 * receiving the src-pad-added signal. |
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2688 * Only works for non-multicast FsRtpSessions. |
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2689 */ |
26387
189ac8d13103
Fix assertion stating FsRawUdpTransmitter doesn't have a relay-info
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26380
diff
changeset
|
2690 if (is_nice || !strcmp(transmitter, "rawudp")) |
26056
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2691 g_object_set(G_OBJECT(session->session), |
bcbc62bb2496
Set no-rtcp-timeout to 0 only for nice and rawudp transmitters.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26055
diff
changeset
|
2692 "no-rtcp-timeout", 0, NULL); |
25676
157b30b530f4
Temporary fix to remove a 5-7 second delay when initiating a media session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25674
diff
changeset
|
2693 |
27079
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2694 /* |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2695 * Hack to make x264 work with Gmail video. |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2696 */ |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2697 if (is_nice && !strcmp(sess_id, "google-video")) { |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2698 FsElementAddedNotifier *notifier = |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2699 fs_element_added_notifier_new(); |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2700 g_signal_connect(G_OBJECT(notifier), "element-added", |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2701 G_CALLBACK(purple_media_element_added_cb), |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2702 stream); |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2703 fs_element_added_notifier_add(notifier, |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2704 GST_BIN(media->priv->conference)); |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2705 } |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2706 |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2707 fs_codec_list_destroy(codec_conf); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2708 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2709 session->id = g_strdup(sess_id); |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2710 session->media = media; |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2711 session->type = type; |
26466
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
2712 session->initiator = initiator; |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2713 |
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2714 purple_media_add_session(media, session); |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2715 g_signal_emit(media, purple_media_signals[STATE_CHANGED], |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
2716 0, PURPLE_MEDIA_STATE_NEW, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2717 session->id, NULL); |
26146
4f013819e4e3
Create the media srcs inside PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26145
diff
changeset
|
2718 |
28229
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2719 if (type_direction & FS_DIRECTION_SEND) { |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2720 session_type = purple_media_from_fs(media_type, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2721 FS_DIRECTION_SEND); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2722 src = purple_media_manager_get_element( |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2723 media->priv->manager, session_type, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2724 media, session->id, who); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2725 if (!GST_IS_ELEMENT(src)) { |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2726 purple_debug_error("media", |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2727 "Error creating src for session %s\n", |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2728 session->id); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2729 purple_media_end(media, session->id, NULL); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2730 return FALSE; |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2731 } |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2732 |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2733 purple_media_set_src(media, session->id, src); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2734 gst_element_set_state(session->src, GST_STATE_PLAYING); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2735 purple_media_manager_create_output_window( |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2736 media->priv->manager, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2737 session->media, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
2738 session->id, NULL); |
26471
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2739 } |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2740 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2741 |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2742 if (!(participant = purple_media_add_participant(media, who))) { |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2743 purple_media_remove_session(media, session); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2744 g_free(session); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2745 return FALSE; |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2746 } else { |
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2747 g_signal_emit(media, purple_media_signals[STATE_CHANGED], |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
2748 0, PURPLE_MEDIA_STATE_NEW, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2749 NULL, who); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2750 } |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2751 |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2752 stream = purple_media_get_stream(media, sess_id, who); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2753 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2754 if (!stream) { |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2755 GError *err = NULL; |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2756 FsStream *fsstream = NULL; |
26132
ae3d25465d0f
Run an asynchronous DNS lookup for the STUN server IP (to set as a property
Marcus Lundblad <ml@update.uu.se>
parents:
26129
diff
changeset
|
2757 const gchar *stun_ip = purple_network_get_stun_ip(); |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2758 const gchar *turn_ip = purple_network_get_turn_ip(); |
26138
4f0aec6d4ad7
Removed some extra tabs on blank lines
Marcus Lundblad <ml@update.uu.se>
parents:
26137
diff
changeset
|
2759 |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2760 if (stun_ip || turn_ip) { |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2761 guint new_num_params = |
26387
189ac8d13103
Fix assertion stating FsRawUdpTransmitter doesn't have a relay-info
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26380
diff
changeset
|
2762 (stun_ip && is_nice) && turn_ip ? |
189ac8d13103
Fix assertion stating FsRawUdpTransmitter doesn't have a relay-info
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26380
diff
changeset
|
2763 num_params + 2 : num_params + 1; |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2764 guint next_param_index = num_params; |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2765 GParameter *param = g_new0(GParameter, new_num_params); |
26009
6ab96d5d8ac6
Add params to purple_media_add_stream to allow for different libNice
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26008
diff
changeset
|
2766 memcpy(param, params, sizeof(GParameter) * num_params); |
25707
001064185ad4
Use the purple STUN server preference with the rawudp Farsight transmitter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25706
diff
changeset
|
2767 |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2768 if (stun_ip) { |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2769 purple_debug_info("media", |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2770 "setting property stun-ip on new stream: %s\n", stun_ip); |
26138
4f0aec6d4ad7
Removed some extra tabs on blank lines
Marcus Lundblad <ml@update.uu.se>
parents:
26137
diff
changeset
|
2771 |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2772 param[next_param_index].name = "stun-ip"; |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2773 g_value_init(¶m[next_param_index].value, G_TYPE_STRING); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2774 g_value_set_string(¶m[next_param_index].value, stun_ip); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2775 next_param_index++; |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2776 } |
26138
4f0aec6d4ad7
Removed some extra tabs on blank lines
Marcus Lundblad <ml@update.uu.se>
parents:
26137
diff
changeset
|
2777 |
26387
189ac8d13103
Fix assertion stating FsRawUdpTransmitter doesn't have a relay-info
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26380
diff
changeset
|
2778 if (turn_ip && is_nice) { |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2779 GValueArray *relay_info = g_value_array_new(0); |
26139
128a3175668e
Removed a couple of warnings
Marcus Lundblad <ml@update.uu.se>
parents:
26138
diff
changeset
|
2780 GValue value; |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2781 gint turn_port = |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2782 purple_prefs_get_int("/purple/network/turn_port"); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2783 const gchar *username = |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2784 purple_prefs_get_string("/purple/network/turn_username"); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2785 const gchar *password = |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2786 purple_prefs_get_string("/purple/network/turn_password"); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2787 GstStructure *turn_setup = gst_structure_new("relay-info", |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2788 "ip", G_TYPE_STRING, turn_ip, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2789 "port", G_TYPE_UINT, turn_port, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2790 "username", G_TYPE_STRING, username, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2791 "password", G_TYPE_STRING, password, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2792 NULL); |
25707
001064185ad4
Use the purple STUN server preference with the rawudp Farsight transmitter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25706
diff
changeset
|
2793 |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2794 if (turn_setup) { |
26139
128a3175668e
Removed a couple of warnings
Marcus Lundblad <ml@update.uu.se>
parents:
26138
diff
changeset
|
2795 memset(&value, 0, sizeof(GValue)); |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2796 g_value_init(&value, GST_TYPE_STRUCTURE); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2797 gst_value_set_structure(&value, turn_setup); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2798 relay_info = g_value_array_append(relay_info, &value); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2799 gst_structure_free(turn_setup); |
26138
4f0aec6d4ad7
Removed some extra tabs on blank lines
Marcus Lundblad <ml@update.uu.se>
parents:
26137
diff
changeset
|
2800 |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2801 purple_debug_info("media", |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2802 "setting property relay-info on new stream\n"); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2803 param[next_param_index].name = "relay-info"; |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2804 g_value_init(¶m[next_param_index].value, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2805 G_TYPE_VALUE_ARRAY); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2806 g_value_set_boxed(¶m[next_param_index].value, |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2807 relay_info); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2808 g_value_array_free(relay_info); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2809 } else { |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2810 purple_debug_error("media", "Error relay info"); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2811 g_object_unref(participant); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2812 g_hash_table_remove(media->priv->participants, who); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2813 purple_media_remove_session(media, session); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2814 g_free(session); |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2815 return FALSE; |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2816 } |
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2817 } |
26138
4f0aec6d4ad7
Removed some extra tabs on blank lines
Marcus Lundblad <ml@update.uu.se>
parents:
26137
diff
changeset
|
2818 |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2819 fsstream = fs_session_new_stream(session->session, |
28909
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2820 participant, initiator == TRUE ? |
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2821 type_direction : (type_direction & |
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2822 FS_DIRECTION_RECV), transmitter, |
26137
c56e8826fed0
Added support to generate relayed candidates (TURN).
Marcus Lundblad <ml@update.uu.se>
parents:
26135
diff
changeset
|
2823 new_num_params, param, &err); |
26009
6ab96d5d8ac6
Add params to purple_media_add_stream to allow for different libNice
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26008
diff
changeset
|
2824 g_free(param); |
25707
001064185ad4
Use the purple STUN server preference with the rawudp Farsight transmitter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25706
diff
changeset
|
2825 } else { |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2826 fsstream = fs_session_new_stream(session->session, |
28909
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2827 participant, initiator == TRUE ? |
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2828 type_direction : (type_direction & |
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2829 FS_DIRECTION_RECV), transmitter, |
26133
b68a88fb7458
Use the stream's direction to wait to send media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26132
diff
changeset
|
2830 num_params, params, &err); |
25707
001064185ad4
Use the purple STUN server preference with the rawudp Farsight transmitter.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25706
diff
changeset
|
2831 } |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2832 |
28395
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2833 if (fsstream == NULL) { |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2834 purple_debug_error("media", |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2835 "Error creating stream: %s\n", |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2836 err && err->message ? |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2837 err->message : "NULL"); |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2838 if (err) |
98d8c11e4937
Gracefully handle failures to create an FsStream. This was caused by
maiku@pidgin.im
parents:
28230
diff
changeset
|
2839 g_error_free(err); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2840 g_object_unref(participant); |
26005
5c30047f960e
Properly free PurpleMedia when there's an error creating an FsStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25737
diff
changeset
|
2841 g_hash_table_remove(media->priv->participants, who); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2842 purple_media_remove_session(media, session); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2843 g_free(session); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2844 return FALSE; |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2845 } |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2846 |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
2847 stream = purple_media_insert_stream(session, who, fsstream); |
26466
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
2848 stream->initiator = initiator; |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2849 |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2850 /* callback for source pad added (new stream source ready) */ |
26039
33fa549f2399
Move variables to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26038
diff
changeset
|
2851 g_signal_connect(G_OBJECT(fsstream), |
26052
01df0829f054
Move sink from PurpleMediaSession to PurpleMediaStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26050
diff
changeset
|
2852 "src-pad-added", G_CALLBACK(purple_media_src_pad_added_cb), stream); |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2853 |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2854 g_signal_emit(media, purple_media_signals[STATE_CHANGED], |
26411
86bc2d34f689
Rename state-changed enum and values.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26409
diff
changeset
|
2855 0, PURPLE_MEDIA_STATE_NEW, |
26069
7d2e06b29f88
Add state-changed signal to PurpleMedia.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26067
diff
changeset
|
2856 session->id, who); |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2857 } else { |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2858 if (purple_media_to_fs_stream_direction(stream->session->type) |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2859 != type_direction) { |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2860 /* change direction */ |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2861 g_object_set(stream->stream, "direction", |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2862 type_direction, NULL); |
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2863 } |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2864 } |
25651
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2865 |
43b3b9ff6028
Added better Farsight error handling. Fixes several crash bugs related
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25649
diff
changeset
|
2866 return TRUE; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2867 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2868 return FALSE; |
26467
8bc4b9094913
Get rid of the purple_media_add_stream wrapper as it isn't useful.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26466
diff
changeset
|
2869 #endif /* USE_VV */ |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2870 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2871 |
26475
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2872 PurpleMediaManager * |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2873 purple_media_get_manager(PurpleMedia *media) |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2874 { |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2875 PurpleMediaManager *ret; |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2876 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2877 g_object_get(media, "manager", &ret, NULL); |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2878 return ret; |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2879 } |
462e5c27dbd7
Use purple_media_manager_get_pipeline instead.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26474
diff
changeset
|
2880 |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25715
diff
changeset
|
2881 PurpleMediaSessionType |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2882 purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2883 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2884 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2885 PurpleMediaSession *session; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2886 g_return_val_if_fail(PURPLE_IS_MEDIA(media), PURPLE_MEDIA_NONE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2887 session = purple_media_get_session(media, sess_id); |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2888 return session->type; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2889 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2890 return PURPLE_MEDIA_NONE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2891 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2892 } |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2893 /* XXX: Should wait until codecs-ready is TRUE before using this function */ |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2894 GList * |
26036
a5f1804fcb4b
Combine get_*_codecs functions to mirror Farsight 2.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26027
diff
changeset
|
2895 purple_media_get_codecs(PurpleMedia *media, const gchar *sess_id) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2896 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2897 #ifdef USE_VV |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
2898 GList *fscodecs; |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2899 GList *codecs; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2900 PurpleMediaSession *session; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2901 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2902 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2903 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2904 session = purple_media_get_session(media, sess_id); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2905 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2906 if (session == NULL) |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2907 return NULL; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2908 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2909 g_object_get(G_OBJECT(session->session), |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
2910 "codecs", &fscodecs, NULL); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
2911 codecs = purple_media_codec_list_from_fs(fscodecs); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
2912 fs_codec_list_destroy(fscodecs); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2913 return codecs; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2914 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2915 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2916 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2917 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2918 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2919 GList * |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2920 purple_media_get_local_candidates(PurpleMedia *media, const gchar *sess_id, |
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2921 const gchar *participant) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2922 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2923 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2924 PurpleMediaStream *stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2925 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2926 stream = purple_media_get_stream(media, sess_id, participant); |
27079
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2927 return stream ? purple_media_candidate_list_from_fs( |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26819
diff
changeset
|
2928 stream->local_candidates) : NULL; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2929 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2930 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2931 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2932 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2933 |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2934 void |
25671
12a16471f94e
Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25661
diff
changeset
|
2935 purple_media_add_remote_candidates(PurpleMedia *media, const gchar *sess_id, |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2936 const gchar *participant, |
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2937 GList *remote_candidates) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2938 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2939 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2940 PurpleMediaStream *stream; |
26134
997bbae7b80f
Set remote candidates as soon as they are received.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26133
diff
changeset
|
2941 GError *err = NULL; |
997bbae7b80f
Set remote candidates as soon as they are received.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26133
diff
changeset
|
2942 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2943 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2944 stream = purple_media_get_stream(media, sess_id, participant); |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2945 |
26471
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2946 if (stream == NULL) { |
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2947 purple_debug_error("media", |
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2948 "purple_media_add_remote_candidates: " |
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2949 "couldn't find stream %s %s.\n", |
28045
813f2eb3fdc8
Fixes for some potential printf("%s", NULL) type of problems from Maiku
Stu Tomlinson <stu@nosnilmot.com>
parents:
28042
diff
changeset
|
2950 sess_id ? sess_id : "(null)", |
813f2eb3fdc8
Fixes for some potential printf("%s", NULL) type of problems from Maiku
Stu Tomlinson <stu@nosnilmot.com>
parents:
28042
diff
changeset
|
2951 participant ? participant : "(null)"); |
26471
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2952 return; |
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2953 } |
5a7fa2093d1e
Make Finch not crash if someone requests a session with video with you.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26470
diff
changeset
|
2954 |
26076
2cf44cc855fe
Add candidates instead of replacing them.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26071
diff
changeset
|
2955 stream->remote_candidates = g_list_concat(stream->remote_candidates, |
26103
f7cf50180e1d
Duplicate FsCandidate to remove it from the public interface.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26102
diff
changeset
|
2956 purple_media_candidate_list_to_fs(remote_candidates)); |
25733
9632027d3b50
Update to Farsight2 0.0.3.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25732
diff
changeset
|
2957 |
28909
867438a30bdd
Allow the initiator to start connection checks before the remote side accepts.
maiku@pidgin.im
parents:
28771
diff
changeset
|
2958 if (stream->initiator == TRUE || stream->accepted == TRUE) { |
28489
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2959 fs_stream_set_remote_candidates(stream->stream, |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2960 stream->remote_candidates, &err); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2961 |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2962 if (err) { |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2963 purple_debug_error("media", "Error adding remote" |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2964 " candidates: %s\n", err->message); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2965 g_error_free(err); |
614a40c68b88
Wait to set remote candidates until the session has been accepted. This stops
maiku@pidgin.im
parents:
28456
diff
changeset
|
2966 } |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
2967 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2968 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2969 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2970 |
26468
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2971 #if 0 |
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2972 /* |
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2973 * These two functions aren't being used and I'd rather not lock in the API |
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2974 * until they are needed. If they ever are. |
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2975 */ |
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
2976 |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2977 GList * |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2978 purple_media_get_active_local_candidates(PurpleMedia *media, |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2979 const gchar *sess_id, const gchar *participant) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2980 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2981 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2982 PurpleMediaStream *stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2983 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2984 stream = purple_media_get_stream(media, sess_id, participant); |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2985 return purple_media_candidate_list_from_fs( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2986 stream->active_local_candidates); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2987 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2988 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2989 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2990 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2991 |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2992 GList * |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
2993 purple_media_get_active_remote_candidates(PurpleMedia *media, |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2994 const gchar *sess_id, const gchar *participant) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
2995 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
2996 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2997 PurpleMediaStream *stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
2998 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
2999 stream = purple_media_get_stream(media, sess_id, participant); |
26181
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
3000 return purple_media_candidate_list_from_fs( |
dcff28a0415c
Handle having multiple active candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26173
diff
changeset
|
3001 stream->active_remote_candidates); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3002 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3003 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3004 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
3005 } |
26468
6d9f4ca72828
Comment out purple_media_get_active_{local,remote}_candidates.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26467
diff
changeset
|
3006 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
3007 |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3008 gboolean |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
3009 purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id, |
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
3010 const gchar *participant, GList *codecs) |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
3011 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3012 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3013 PurpleMediaStream *stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3014 FsStream *fsstream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3015 GList *fscodecs; |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3016 GError *err = NULL; |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3017 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3018 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
3019 stream = purple_media_get_stream(media, sess_id, participant); |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3020 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3021 if (stream == NULL) |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3022 return FALSE; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3023 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3024 fsstream = stream->stream; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3025 fscodecs = purple_media_codec_list_to_fs(codecs); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3026 fs_stream_set_remote_codecs(fsstream, fscodecs, &err); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
3027 fs_codec_list_destroy(fscodecs); |
25695
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3028 |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3029 if (err) { |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3030 purple_debug_error("media", "Error setting remote codecs: %s\n", |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3031 err->message); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3032 g_error_free(err); |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3033 return FALSE; |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3034 } |
13936e4405b7
Added better Farsight error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25694
diff
changeset
|
3035 return TRUE; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3036 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3037 return FALSE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3038 #endif |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
3039 } |
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25643
diff
changeset
|
3040 |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3041 gboolean |
26392
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3042 purple_media_candidates_prepared(PurpleMedia *media, |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3043 const gchar *session_id, const gchar *participant) |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3044 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3045 #ifdef USE_VV |
26392
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3046 GList *streams; |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3047 gboolean prepared = TRUE; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3048 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3049 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3050 |
26392
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3051 streams = purple_media_get_streams(media, session_id, participant); |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3052 |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3053 for (; streams; streams = g_list_delete_link(streams, streams)) { |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3054 PurpleMediaStream *stream = streams->data; |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3055 if (stream->candidates_prepared == FALSE) { |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3056 g_list_free(streams); |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3057 prepared = FALSE; |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3058 break; |
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3059 } |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3060 } |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3061 |
26392
17929a84c1fb
Change purple_media_candidates_prepared to use wildcards.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26391
diff
changeset
|
3062 return prepared; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3063 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3064 return FALSE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3065 #endif |
25680
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3066 } |
b5a00ddb7077
Jingle sessions now keep track of their transaction state to a degree.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25676
diff
changeset
|
3067 |
25712
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3068 gboolean |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
3069 purple_media_set_send_codec(PurpleMedia *media, const gchar *sess_id, PurpleMediaCodec *codec) |
25712
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3070 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3071 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3072 PurpleMediaSession *session; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3073 FsCodec *fscodec; |
25712
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3074 GError *err = NULL; |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3075 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3076 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3077 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3078 session = purple_media_get_session(media, sess_id); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3079 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3080 if (session != NULL) |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3081 return FALSE; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3082 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3083 fscodec = purple_media_codec_to_fs(codec); |
26106
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
3084 fs_session_set_send_codec(session->session, fscodec, &err); |
ac4d7695dbc7
Wrap FsCodec and remove the Farsight2 include from media.h.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26105
diff
changeset
|
3085 fs_codec_destroy(fscodec); |
25712
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3086 |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3087 if (err) { |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3088 purple_debug_error("media", "Error setting send codec\n"); |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3089 g_error_free(err); |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3090 return FALSE; |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3091 } |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3092 return TRUE; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3093 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3094 return FALSE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3095 #endif |
25712
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3096 } |
3ffe166a355e
Set the proper send codec in Farsight.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25707
diff
changeset
|
3097 |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3098 gboolean |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3099 purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id) |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3100 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3101 #ifdef USE_VV |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3102 gboolean ret; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3103 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3104 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3105 |
26209
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3106 if (sess_id != NULL) { |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3107 PurpleMediaSession *session; |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3108 session = purple_media_get_session(media, sess_id); |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3109 |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3110 if (session == NULL) |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3111 return FALSE; |
28229
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3112 if (session->type & (PURPLE_MEDIA_SEND_AUDIO | |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3113 PURPLE_MEDIA_SEND_VIDEO)) |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3114 g_object_get(session->session, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3115 "codecs-ready", &ret, NULL); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3116 else |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3117 ret = TRUE; |
26209
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3118 } else { |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3119 GList *values = g_hash_table_get_values(media->priv->sessions); |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3120 for (; values; values = g_list_delete_link(values, values)) { |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3121 PurpleMediaSession *session = values->data; |
28229
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3122 if (session->type & (PURPLE_MEDIA_SEND_AUDIO | |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3123 PURPLE_MEDIA_SEND_VIDEO)) |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3124 g_object_get(session->session, |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3125 "codecs-ready", &ret, NULL); |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3126 else |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3127 ret = TRUE; |
f5580e1ca4b1
Fix unidirectional media sessions and add a colorspace before the video sink.
maiku@pidgin.im
parents:
28227
diff
changeset
|
3128 |
26209
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3129 if (ret == FALSE) |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3130 break; |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3131 } |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3132 if (values != NULL) |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3133 g_list_free(values); |
df133a5df391
Have purple_media_codecs_ready handle a session wildcard.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26208
diff
changeset
|
3134 } |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3135 return ret; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3136 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3137 return FALSE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3138 #endif |
26013
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3139 } |
5a774d0817d8
Wait for Farsight 2's codecs-ready property to be TRUE before using codecs.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26011
diff
changeset
|
3140 |
26143
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3141 gboolean |
26466
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3142 purple_media_is_initiator(PurpleMedia *media, |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3143 const gchar *sess_id, const gchar *participant) |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3144 { |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3145 #ifdef USE_VV |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3146 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3147 |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3148 if (sess_id == NULL && participant == NULL) |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3149 return media->priv->initiator; |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3150 else if (sess_id != NULL && participant == NULL) { |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3151 PurpleMediaSession *session = |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3152 purple_media_get_session(media, sess_id); |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3153 return session != NULL ? session->initiator : FALSE; |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3154 } else if (sess_id != NULL && participant != NULL) { |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3155 PurpleMediaStream *stream = purple_media_get_stream( |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3156 media, sess_id, participant); |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3157 return stream != NULL ? stream->initiator : FALSE; |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3158 } |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3159 #endif |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3160 return FALSE; |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3161 } |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3162 |
bea334b214fa
Add purple_media_is_initiator.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26465
diff
changeset
|
3163 gboolean |
26143
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3164 purple_media_accepted(PurpleMedia *media, const gchar *sess_id, |
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3165 const gchar *participant) |
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3166 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3167 #ifdef USE_VV |
26391
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3168 gboolean accepted = TRUE; |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3169 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3170 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3171 |
26391
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3172 if (sess_id == NULL && participant == NULL) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3173 GList *streams = media->priv->streams; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3174 |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3175 for (; streams; streams = g_list_next(streams)) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3176 PurpleMediaStream *stream = streams->data; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3177 if (stream->accepted == FALSE) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3178 accepted = FALSE; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3179 break; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3180 } |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3181 } |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3182 } else if (sess_id != NULL && participant == NULL) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3183 GList *streams = purple_media_get_streams( |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3184 media, sess_id, NULL); |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3185 for (; streams; streams = |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3186 g_list_delete_link(streams, streams)) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3187 PurpleMediaStream *stream = streams->data; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3188 if (stream->accepted == FALSE) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3189 g_list_free(streams); |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3190 accepted = FALSE; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3191 break; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3192 } |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3193 } |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3194 } else if (sess_id != NULL && participant != NULL) { |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3195 PurpleMediaStream *stream = purple_media_get_stream( |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3196 media, sess_id, participant); |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3197 if (stream == NULL || stream->accepted == FALSE) |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3198 accepted = FALSE; |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3199 } |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3200 |
b7b0513604e6
Make acceptance be per stream rather than per session.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26388
diff
changeset
|
3201 return accepted; |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3202 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3203 return FALSE; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3204 #endif |
26143
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3205 } |
f6a98b2b8d92
Add the accepted signal and make the accept button go away immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26142
diff
changeset
|
3206 |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3207 void purple_media_set_input_volume(PurpleMedia *media, |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3208 const gchar *session_id, double level) |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3209 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3210 #ifdef USE_VV |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3211 GList *sessions; |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3212 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3213 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3214 |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3215 purple_prefs_set_int("/purple/media/audio/volume/input", level); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3216 |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3217 if (session_id == NULL) |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3218 sessions = g_hash_table_get_values(media->priv->sessions); |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3219 else |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3220 sessions = g_list_append(NULL, |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3221 purple_media_get_session(media, session_id)); |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3222 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3223 for (; sessions; sessions = g_list_delete_link(sessions, sessions)) { |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3224 PurpleMediaSession *session = sessions->data; |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3225 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3226 if (session->type & PURPLE_MEDIA_SEND_AUDIO) { |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3227 gchar *name = g_strdup_printf("volume_%s", |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3228 session->id); |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3229 GstElement *volume = gst_bin_get_by_name( |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3230 GST_BIN(session->media->priv->confbin), |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3231 name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3232 g_free(name); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3233 g_object_set(volume, "volume", level/10.0, NULL); |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3234 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3235 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3236 #endif |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3237 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3238 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3239 void purple_media_set_output_volume(PurpleMedia *media, |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3240 const gchar *session_id, const gchar *participant, |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3241 double level) |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3242 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3243 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3244 GList *streams; |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3245 |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3246 g_return_if_fail(PURPLE_IS_MEDIA(media)); |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3247 |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3248 purple_prefs_set_int("/purple/media/audio/volume/output", level); |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3249 |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3250 streams = purple_media_get_streams(media, |
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3251 session_id, participant); |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3252 |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3253 for (; streams; streams = g_list_delete_link(streams, streams)) { |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3254 PurpleMediaStream *stream = streams->data; |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3255 |
28191
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3256 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3257 && GST_IS_ELEMENT(stream->volume)) { |
c8ff0a9cf8cc
Unlink the local audio volume and mute between sessions.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
28176
diff
changeset
|
3258 g_object_set(stream->volume, "volume", level/10.0, NULL); |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3259 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3260 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3261 #endif |
26047
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3262 } |
1ce297c8923b
Added media functions to set input and output volume.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26044
diff
changeset
|
3263 |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3264 gulong |
26135
c334a9e17426
Wait to create the sinks until the frames are ready.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26134
diff
changeset
|
3265 purple_media_set_output_window(PurpleMedia *media, const gchar *session_id, |
c334a9e17426
Wait to create the sinks until the frames are ready.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26134
diff
changeset
|
3266 const gchar *participant, gulong window_id) |
c334a9e17426
Wait to create the sinks until the frames are ready.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26134
diff
changeset
|
3267 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3268 #ifdef USE_VV |
26154
4cbf594b2f17
Added a lot of assertions and error handling.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26152
diff
changeset
|
3269 g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); |
26135
c334a9e17426
Wait to create the sinks until the frames are ready.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26134
diff
changeset
|
3270 |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3271 return purple_media_manager_set_output_window(media->priv->manager, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3272 media, session_id, participant, window_id); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3273 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3274 return 0; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3275 #endif |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3276 } |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3277 |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3278 void |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3279 purple_media_remove_output_windows(PurpleMedia *media) |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3280 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3281 #ifdef USE_VV |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3282 GList *iter = media->priv->streams; |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3283 for (; iter; iter = g_list_next(iter)) { |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3284 PurpleMediaStream *stream = iter->data; |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3285 purple_media_manager_remove_output_windows( |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3286 media->priv->manager, media, |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3287 stream->session->id, stream->participant); |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3288 } |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3289 |
26815
6543ecbb0717
Distinguish name and participant in PurpleMedia API
Paul Aurich <paul@darkrain42.org>
parents:
26645
diff
changeset
|
3290 iter = purple_media_get_session_ids(media); |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3291 for (; iter; iter = g_list_delete_link(iter, iter)) { |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3292 gchar *session_name = iter->data; |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3293 purple_media_manager_remove_output_windows( |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3294 media->priv->manager, media, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3295 session_name, NULL); |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3296 } |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3297 #endif |
26157
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3298 } |
1aed9a92b657
Implement *_remove_output_window and *_remove_output_windows.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26156
diff
changeset
|
3299 |
26621
4f2f5659aa0d
Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26606
diff
changeset
|
3300 #ifdef USE_GSTREAMER |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3301 GstElement * |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3302 purple_media_get_tee(PurpleMedia *media, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3303 const gchar *session_id, const gchar *participant) |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3304 { |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3305 #ifdef USE_VV |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3306 g_return_val_if_fail(PURPLE_IS_MEDIA(media), NULL); |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3307 |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3308 if (session_id != NULL && participant == NULL) { |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3309 PurpleMediaSession *session = |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3310 purple_media_get_session(media, session_id); |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3311 return (session != NULL) ? session->tee : NULL; |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3312 } else if (session_id != NULL && participant != NULL) { |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3313 PurpleMediaStream *stream = |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3314 purple_media_get_stream(media, |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3315 session_id, participant); |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3316 return (stream != NULL) ? stream->tee : NULL; |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3317 } |
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3318 g_return_val_if_reached(NULL); |
26432
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3319 #else |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3320 return NULL; |
064657db29c4
Properly wrap media functions so the API doesn't disappear when USE_VV
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26431
diff
changeset
|
3321 #endif |
26199
6cf36f68033c
Only create output windows once there's data to be output.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26197
diff
changeset
|
3322 } |
26621
4f2f5659aa0d
Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26606
diff
changeset
|
3323 #endif /* USE_GSTREAMER */ |
4f2f5659aa0d
Fix build with --disable-gstreamer.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
26606
diff
changeset
|
3324 |