summaryrefslogtreecommitdiff
path: root/farstream/fs-conference.h
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.com>2011-10-11 16:08:49 -0400
committerOlivier CrĂȘte <olivier.crete@collabora.com>2011-10-11 16:14:10 -0400
commit52a59229d200a8d74d66e02126c290434d3157d8 (patch)
tree1adf3344ad47dbed6c35c42511362b232c703683 /farstream/fs-conference.h
parent7098f40db04b6a32c311b802a2c12f0f450ee7b7 (diff)
downloadfarstream-52a59229d200a8d74d66e02126c290434d3157d8.tar.gz
Move the lib out of gst-libs
Diffstat (limited to 'farstream/fs-conference.h')
-rw-r--r--farstream/fs-conference.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/farstream/fs-conference.h b/farstream/fs-conference.h
new file mode 100644
index 00000000..f35feb23
--- /dev/null
+++ b/farstream/fs-conference.h
@@ -0,0 +1,184 @@
+/*
+ * Farstream - FsConference Class
+ *
+ * Copyright 2007 Collabora Ltd.
+ * @author: Philippe Kalaf <philippe.kalaf@collabora.co.uk>
+ * Copyright 2007 Nokia Corp.
+ *
+ * fs-conference.h - Header file for farstream Conference base class
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __FS_CONFERENCE_H__
+#define __FS_CONFERENCE_H__
+
+#include <gst/gst.h>
+
+#include <farstream/fs-session.h>
+#include <farstream/fs-codec.h>
+#include <farstream/fs-enumtypes.h>
+
+G_BEGIN_DECLS
+
+
+#define FS_TYPE_CONFERENCE \
+ (fs_conference_get_type ())
+#define FS_CONFERENCE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),FS_TYPE_CONFERENCE,FsConference))
+#define FS_CONFERENCE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),FS_TYPE_CONFERENCE,FsConferenceClass))
+#define FS_CONFERENCE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),FS_TYPE_CONFERENCE,FsConferenceClass))
+#define FS_IS_CONFERENCE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),FS_TYPE_CONFERENCE))
+#define FS_IS_CONFERENCE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),FS_TYPE_CONFERENCE))
+#define FS_CONFERENCE_CAST(obj) \
+ ((FsConference *)(obj))
+
+/**
+ * FsConference:
+ *
+ * Opaque #FsConference data structure.
+ */
+typedef struct _FsConference FsConference;
+typedef struct _FsConferenceClass FsConferenceClass;
+
+/**
+ * FsConference
+ *
+ * The #FsConference structure, all the members are private
+ */
+
+struct _FsConference
+{
+ GstBin parent;
+
+ /*< private >*/
+
+ gpointer _padding[8];
+};
+
+
+/**
+ * FsConferenceClass:
+ * @parent: parent GstBin class
+ * @new_session: virtual method to create a new conference session
+ * @new_participant: virtual method to create a new participant
+ *
+ * #FsConferenceClass class structure.
+ */
+struct _FsConferenceClass {
+ GstBinClass parent;
+
+ /* virtual functions */
+ FsSession *(* new_session) (FsConference *conference, FsMediaType media_type,
+ GError **error);
+
+ FsParticipant *(* new_participant) (FsConference *conference,
+ GError **error);
+
+ /*< private > */
+ gpointer _gst_reserved[GST_PADDING];
+};
+
+GType fs_conference_get_type (void);
+
+
+
+/**
+ * FsError:
+ * @FS_ERROR_CONSTRUCTION: Error constructing some of the sub-elements, this
+ * probably denotes an error in the installation of the gstreamer elements.
+ * It is a fatal error.
+ * @FS_ERROR_INVALID_ARGUMENTS: Invalid arguments to the function, this
+ * is a programming error and should not be reported to the user
+ * @FS_ERROR_INTERNAL: An internal error happened in Farstream, it may be in
+ * an inconsistent state. The object from which this error comes should be
+ * discarded.
+ * @FS_ERROR_NETWORK: A network related error, this should probably be
+ * reported to the user.
+ * @FS_ERROR_NOT_IMPLEMENTED: The optional functionality is not implemented by
+ * this plugin.
+ * @FS_ERROR_NEGOTIATION_FAILED: The codec negotiation has failed, this means
+ * that there are no common codecs between the local and remote codecs.
+ * @FS_ERROR_UNKNOWN_CODEC: Data is received on an unknown codec, this most
+ * likely denotes an error on the remote side, the buffers will be ignored.
+ * It can safely be ignored in most cases (but may result in a call with no
+ * media received).
+ * @FS_ERROR_NO_CODECS: There are no codecs detected for that media type.
+ * @FS_ERROR_NO_CODECS_LEFT: All of the codecs have been disabled by the
+ * codec preferences, one should try less strict codec preferences.
+ * @FS_ERROR_CONNECTION_FAILED: Could not connect to the to remote party.
+ * @FS_ERROR_DISPOSED: The object has been disposed.
+ * @FS_ERROR_ALREADY_EXISTS: The object already exists
+ *
+ * This is the enum of error numbers that will come either on the "error"
+ * signal, from the Gst Bus or for error in the FS_ERROR domain in GErrors
+ */
+
+typedef enum _FsError
+{
+ FS_ERROR_CONSTRUCTION = 1,
+ FS_ERROR_INTERNAL,
+ FS_ERROR_INVALID_ARGUMENTS = 100,
+ FS_ERROR_NETWORK,
+ FS_ERROR_NOT_IMPLEMENTED,
+ FS_ERROR_NEGOTIATION_FAILED,
+ FS_ERROR_UNKNOWN_CODEC,
+ FS_ERROR_NO_CODECS,
+ FS_ERROR_NO_CODECS_LEFT,
+ FS_ERROR_CONNECTION_FAILED,
+ FS_ERROR_DISPOSED,
+ FS_ERROR_ALREADY_EXISTS
+} FsError;
+
+/**
+ * FS_ERROR:
+ *
+ * This quark is used to denote errors coming from Farstream objects
+ */
+
+#define FS_ERROR (fs_error_quark ())
+
+/**
+ * FS_ERROR_IS_FATAL:
+ * @error: a #FsError
+ *
+ * Tells the programmer if an error if fatal or not, if it returns %TRUE,
+ * the error is fatal, and the object that created it should
+ * be discarded. It returns %FALSE otherwise.
+ */
+
+#define FS_ERROR_IS_FATAL(error) \
+ (error < 100)
+
+GQuark fs_error_quark (void);
+
+/* virtual class function wrappers */
+FsSession *fs_conference_new_session (FsConference *conference,
+ FsMediaType media_type,
+ GError **error);
+
+FsParticipant *fs_conference_new_participant (FsConference *conference,
+ GError **error);
+
+
+G_END_DECLS
+
+#endif /* __FS_CONFERENCE_H__ */
+
+