libpurple/media-gst.h

Mon, 12 Sep 2016 08:55:35 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Mon, 12 Sep 2016 08:55:35 -0500
changeset 38142
1dff6e343f9f
parent 37883
c52fa2813311
child 38632
4cbae4a1bac1
permissions
-rw-r--r--

gg: Protect against issues when closing while connecting

Since the GIOStream is cancelled when data is freed, any cancelled
callbacks are called after such data is freed. This patch guards against
cancelled calls by safely returning without accessing any freed data if
the connection has been cancelled (aka closed).

Futhermore, if GG tries to connect and is quickly disconnected,
ggp_tcpsocket_close() is never called. As far as I can tell, it's an
existing bug, but PurpleSockets both work differently when closing and
are closed by the connection if any leak. So the issue wasn't a major
problem. This patch lessens the issue by guarding against it, but it
should be fixed at some point.

26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
1 /* purple
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
2 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
5 * source distribution.
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
6 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
11 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
16 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
28321
c8d617c408ab Update various header copyrights thanks to licensecheck.
Paul Aurich <darkrain42@pidgin.im>
parents: 26649
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
20 */
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
21
26649
1a6c4fd19355 Add PURPLE to the media header sentinels and reorder includes to fix building gf2
Paul Aurich <darkrain42@pidgin.im>
parents: 26648
diff changeset
22 #ifndef _PURPLE_MEDIA_GST_H_
1a6c4fd19355 Add PURPLE to the media header sentinels and reorder includes to fix building gf2
Paul Aurich <darkrain42@pidgin.im>
parents: 26648
diff changeset
23 #define _PURPLE_MEDIA_GST_H_
35440
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
24 /**
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
25 * SECTION:media-gst
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
26 * @section_id: libpurple-media-gst
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
27 * @short_description: <filename>media-gst.h</filename>
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
28 * @title: Media Element API
467bb21b82a1 Add section blocks for debug.h to prpl.h
Ankit Vani <a@nevitus.org>
parents: 35397
diff changeset
29 */
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
30
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
31 #include "media.h"
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
32 #include "mediamanager.h"
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
33
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
34 #include <gst/gst.h>
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
35
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
36 #define PURPLE_TYPE_MEDIA_ELEMENT_TYPE (purple_media_element_type_get_type())
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
37 #define PURPLE_TYPE_MEDIA_ELEMENT_INFO (purple_media_element_info_get_type())
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
38 #define PURPLE_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
39 #define PURPLE_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
40 #define PURPLE_IS_MEDIA_ELEMENT_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
41 #define PURPLE_IS_MEDIA_ELEMENT_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_ELEMENT_INFO))
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
42 #define PURPLE_MEDIA_ELEMENT_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_ELEMENT_INFO, PurpleMediaElementInfo))
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
43
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
44 /**
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
45 * PurpleMediaElementInfo:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
46 *
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
47 * An opaque structure representing an audio/video source/sink.
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
48 */
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
49 typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo;
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
50 typedef struct _PurpleMediaElementInfoClass PurpleMediaElementInfoClass;
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
51
37880
3f81450a2df5 mediamanager: add info argument to PurpleMediaElementCreateCallback
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37163
diff changeset
52 typedef GstElement *(*PurpleMediaElementCreateCallback)(
3f81450a2df5 mediamanager: add info argument to PurpleMediaElementCreateCallback
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37163
diff changeset
53 PurpleMediaElementInfo *info, PurpleMedia *media,
3f81450a2df5 mediamanager: add info argument to PurpleMediaElementCreateCallback
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37163
diff changeset
54 const gchar *session_id, const gchar *participant);
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
55
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
56 /**
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
57 * PurpleMediaElementType:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
58 * @PURPLE_MEDIA_ELEMENT_NONE: empty element
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
59 * @PURPLE_MEDIA_ELEMENT_AUDIO: supports audio
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
60 * @PURPLE_MEDIA_ELEMENT_VIDEO: supports video
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
61 * @PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO: supports audio and video
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
62 * @PURPLE_MEDIA_ELEMENT_NO_SRCS: has no src pads
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
63 * @PURPLE_MEDIA_ELEMENT_ONE_SRC: has one src pad
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
64 * @PURPLE_MEDIA_ELEMENT_MULTI_SRC: has multiple src pads
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
65 * @PURPLE_MEDIA_ELEMENT_REQUEST_SRC: src pads must be requested
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
66 * @PURPLE_MEDIA_ELEMENT_NO_SINKS: has no sink pads
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
67 * @PURPLE_MEDIA_ELEMENT_ONE_SINK: has one sink pad
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
68 * @PURPLE_MEDIA_ELEMENT_MULTI_SINK: has multiple sink pads
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
69 * @PURPLE_MEDIA_ELEMENT_REQUEST_SINK: sink pads must be requested
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
70 * @PURPLE_MEDIA_ELEMENT_UNIQUE: This element is unique and only one
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
71 * instance of it should be created at a
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
72 * time
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
73 * @PURPLE_MEDIA_ELEMENT_SRC: can be set as an active src
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
74 * @PURPLE_MEDIA_ELEMENT_SINK: can be set as an active sink
36332
9b4a94c113b4 Add application media type and APIs
Youness Alaoui <kakaroto@kakaroto.homelinux.net>
parents: 35487
diff changeset
75 * @PURPLE_MEDIA_ELEMENT_APPLICATION: supports application data
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
76 */
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
77 typedef enum {
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
78 PURPLE_MEDIA_ELEMENT_NONE = 0,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
79 PURPLE_MEDIA_ELEMENT_AUDIO = 1,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
80 PURPLE_MEDIA_ELEMENT_VIDEO = 1 << 1,
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
81 PURPLE_MEDIA_ELEMENT_AUDIO_VIDEO = PURPLE_MEDIA_ELEMENT_AUDIO
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
82 | PURPLE_MEDIA_ELEMENT_VIDEO,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
83 PURPLE_MEDIA_ELEMENT_NO_SRCS = 0,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
84 PURPLE_MEDIA_ELEMENT_ONE_SRC = 1 << 2,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
85 PURPLE_MEDIA_ELEMENT_MULTI_SRC = 1 << 3,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
86 PURPLE_MEDIA_ELEMENT_REQUEST_SRC = 1 << 4,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
87 PURPLE_MEDIA_ELEMENT_NO_SINKS = 0,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
88 PURPLE_MEDIA_ELEMENT_ONE_SINK = 1 << 5,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
89 PURPLE_MEDIA_ELEMENT_MULTI_SINK = 1 << 6,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
90 PURPLE_MEDIA_ELEMENT_REQUEST_SINK = 1 << 7,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
91 PURPLE_MEDIA_ELEMENT_UNIQUE = 1 << 8,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
92 PURPLE_MEDIA_ELEMENT_SRC = 1 << 9,
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
93 PURPLE_MEDIA_ELEMENT_SINK = 1 << 10,
36332
9b4a94c113b4 Add application media type and APIs
Youness Alaoui <kakaroto@kakaroto.homelinux.net>
parents: 35487
diff changeset
94 PURPLE_MEDIA_ELEMENT_APPLICATION = 1 << 11,
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
95 } PurpleMediaElementType;
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
96
32787
7072f190d6ad Use G_BEGIN/END_DECLS in public libpurple files. This was
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32438
diff changeset
97 G_BEGIN_DECLS
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
98
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
99 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
100 * purple_media_element_type_get_type:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
101 *
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
102 * Gets the element type's GType.
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
103 *
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
104 * Returns: The element type's GType.
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
105 */
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
106 GType purple_media_element_type_get_type(void);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
107
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
108 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
109 * purple_media_element_info_get_type:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
110 *
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
111 * Gets the element info's GType.
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
112 *
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
113 * Returns: The element info's GType.
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
114 */
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
115 GType purple_media_element_info_get_type(void);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
116
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
117 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
118 * purple_media_get_src:
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
119 * @media: The media object the session is in.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
120 * @sess_id: The session id of the session to get the source from.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
121 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
122 * Gets the source from a session
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
123 *
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
124 * Returns: The source retrieved.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
125 */
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
126 GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
127
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
128 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
129 * purple_media_get_tee:
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
130 * @media: The instance to get the tee from.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
131 * @session_id: The id of the session to get the tee from.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
132 * @participant: Optionally, the participant of the stream to get the tee from.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
133 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
134 * Gets the tee from a given session/stream.
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
135 *
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
136 * Returns: The GstTee element from the chosen session/stream.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
137 */
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
138 GstElement *purple_media_get_tee(PurpleMedia *media,
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
139 const gchar *session_id, const gchar *participant);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
140
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
141
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
142 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
143 * purple_media_manager_get_pipeline:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
144 * @manager: The media manager to get the pipeline from.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
145 *
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
146 * Gets the pipeline from the media manager.
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
147 *
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
148 * Returns: The pipeline.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
149 */
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
150 GstElement *purple_media_manager_get_pipeline(PurpleMediaManager *manager);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
151
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
152 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
153 * purple_media_manager_get_element:
35393
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
154 * @manager: The media manager to use to obtain the source/sink.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
155 * @type: The type of source/sink to get.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
156 * @media: The media call this element is requested for.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
157 * @session_id: The id of the session this element is requested for or NULL.
00f876b129bc Initial replacements for gtk-doc style comments
Ankit Vani <a@nevitus.org>
parents: 32787
diff changeset
158 * @participant: The remote user this element is requested for or NULL.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
159 *
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35440
diff changeset
160 * Returns: A GStreamer source or sink for audio or video.
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
161 */
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
162 GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
26522
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26480
diff changeset
163 PurpleMediaSessionType type, PurpleMedia *media,
44401eba59a5 Give more information to element creation functions.
Michael Ruprecht <maiku@pidgin.im>
parents: 26480
diff changeset
164 const gchar *session_id, const gchar *participant);
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
165
37883
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
166 /**
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
167 * purple_media_manager_enumerate_elements:
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
168 * @manager: The media manager to use to obtain the element infos.
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
169 * @type: The type of element infos to get.
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
170 *
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
171 * Returns: A #GList of registered #PurpleMediaElementInfo instances that match
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
172 * @type.
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
173 */
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
174 GList *purple_media_manager_enumerate_elements(PurpleMediaManager *manager,
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
175 PurpleMediaElementType type);
c52fa2813311 mediamanager: add purple_media_manager_enumerate_elements()
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37880
diff changeset
176
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
177 PurpleMediaElementInfo *purple_media_manager_get_element_info(
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
178 PurpleMediaManager *manager, const gchar *name);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
179 gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
180 PurpleMediaElementInfo *info);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
181 gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager,
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
182 const gchar *name);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
183 gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
184 PurpleMediaElementInfo *info);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
185 PurpleMediaElementInfo *purple_media_manager_get_active_element(
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
186 PurpleMediaManager *manager, PurpleMediaElementType type);
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
187
31319
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
188 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
189 * purple_media_manager_set_video_caps:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
190 * @manager: The media manager to set the media formats.
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
191 * @caps: Set of allowed media formats.
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
192 *
31319
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
193 * Reduces media formats supported by the video source to given set.
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
194 *
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
195 * Useful to force negotiation of smaller picture resolution more suitable for
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
196 * use with particular codec and communication protocol without rescaling.
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
197 */
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
198 void purple_media_manager_set_video_caps(PurpleMediaManager *manager,
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
199 GstCaps *caps);
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
200
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
201 /**
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
202 * purple_media_manager_get_video_caps:
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
203 * @manager: The media manager to get the media formats from.
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
204 *
31319
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
205 * Returns current set of media formats limiting the output from video source.
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
206 *
35397
31fa3a1aeff5 Move changes from soc.2013.gobjectification.gtkdoc to this branch
Ankit Vani <a@nevitus.org>
parents: 35393
diff changeset
207 * Returns: #GstCaps limiting the video source's formats.
31319
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
208 */
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
209 GstCaps *purple_media_manager_get_video_caps(PurpleMediaManager *manager);
b271e590aaf9 Public API allowing plugins (including prpls) to get/set video capabilities where desired/appropriate. Fixes #13095.
Jakub Adam <jakub.adam@ktknet.cz>
parents: 28420
diff changeset
210
26616
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
211 gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
212 gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
213 PurpleMediaElementType purple_media_element_info_get_element_type(
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
214 PurpleMediaElementInfo *info);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
215 GstElement *purple_media_element_info_call_create(
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
216 PurpleMediaElementInfo *info, PurpleMedia *media,
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
217 const gchar *session_id, const gchar *participant);
4f58db29d346 Hide and gobjectify PurpleMediaElementInfo.
Michael Ruprecht <maiku@pidgin.im>
parents: 26523
diff changeset
218
26479
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
219 G_END_DECLS
47511dae9f81 Move GStreamer related media functions into its own header.
Michael Ruprecht <maiku@pidgin.im>
parents:
diff changeset
220
26649
1a6c4fd19355 Add PURPLE to the media header sentinels and reorder includes to fix building gf2
Paul Aurich <darkrain42@pidgin.im>
parents: 26648
diff changeset
221 #endif /* _PURPLE_MEDIA_GST_H_ */

mercurial