cpw.maiku.media_refactor: 93671071: Skeleton of the Farsight 2 media backend...
maiku at pidgin.im
maiku at pidgin.im
Thu Oct 22 22:36:05 EDT 2009
-----------------------------------------------------------------
Revision: 9367107165f577389487ccc803155e5143ec2ce8
Ancestor: a8f440dc499e7e36d3e758dffd7168668016a478
Author: maiku at pidgin.im
Date: 2009-10-22T21:30:30
Branch: im.pidgin.cpw.maiku.media_refactor
URL: http://d.pidgin.im/viewmtn/revision/info/9367107165f577389487ccc803155e5143ec2ce8
Added files:
libpurple/media/backend-fs2.c libpurple/media/backend-fs2.h
Modified files:
libpurple/Makefile.am libpurple/Makefile.mingw
ChangeLog:
Skeleton of the Farsight 2 media backend.
I want to keep the backend-fs2.h internal to libpurple for now. It shouldn't
be made public API yet (if ever). The separation is largely for organization.
Nothing outside of libpurple should need to access it directly.
-------------- next part --------------
============================================================
--- libpurple/media/backend-fs2.c 6c3909edb79f3f3c8b538202ddeb02f85fe89469
+++ libpurple/media/backend-fs2.c 6c3909edb79f3f3c8b538202ddeb02f85fe89469
@@ -0,0 +1,208 @@
+/**
+ * @file backend-fs2.c Farsight 2 backend for media API
+ * @ingroup core
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include "backend-fs2.h"
+
+#include "backend-iface.h"
+
+/** @copydoc _PurpleMediaBackendFs2Class */
+typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class;
+/** @copydoc _PurpleMediaBackendFs2Private */
+typedef struct _PurpleMediaBackendFs2Private PurpleMediaBackendFs2Private;
+
+#define PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((obj), \
+ PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2Private))
+
+static void purple_media_backend_iface_init(PurpleMediaBackendIface *iface);
+
+static gboolean purple_media_backend_fs2_add_stream(PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *who,
+ PurpleMediaSessionType type, gboolean initiator,
+ const gchar *transmitter,
+ guint num_params, GParameter *params);
+static void purple_media_backend_fs2_add_remote_candidates(
+ PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant,
+ GList *remote_candidates);
+static GList *purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self,
+ const gchar *sess_id);
+static GList *purple_media_backend_fs2_get_local_candidates(
+ PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant);
+static void purple_media_backend_fs2_set_remote_codecs(
+ PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant,
+ GList *codecs);
+static void purple_media_backend_fs2_set_send_codec(PurpleMediaBackend *self,
+ const gchar *sess_id, PurpleMediaCodec *codec);
+
+struct _PurpleMediaBackendFs2Class
+{
+ GObjectClass parent_class;
+};
+
+struct _PurpleMediaBackendFs2
+{
+ GObject parent;
+};
+
+G_DEFINE_TYPE_WITH_CODE(PurpleMediaBackendFs2, purple_media_backend_fs2,
+ G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(
+ PURPLE_TYPE_MEDIA_BACKEND, purple_media_backend_iface_init));
+
+struct _PurpleMediaBackendFs2Private
+{
+ PurpleMedia *media;
+};
+
+enum {
+ PROP_0,
+ PROP_MEDIA,
+};
+
+static void
+purple_media_backend_fs2_init(PurpleMediaBackendFs2 *self)
+{
+}
+
+static void
+purple_media_backend_fs2_finalize(GObject *obj)
+{
+}
+
+static void
+purple_media_backend_fs2_set_property(GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaBackendFs2Private *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object));
+
+ priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA:
+ priv->media = g_value_dup_object(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_backend_fs2_get_property(GObject *object, guint prop_id,
+ GValue *value, GParamSpec *pspec)
+{
+ PurpleMediaBackendFs2Private *priv;
+ g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(object));
+
+ priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(object);
+
+ switch (prop_id) {
+ case PROP_MEDIA:
+ g_value_set_object(value, priv->media);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(
+ object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+purple_media_backend_fs2_class_init(PurpleMediaBackendFs2Class *klass)
+{
+
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+
+ gobject_class->finalize = purple_media_backend_fs2_finalize;
+ gobject_class->set_property = purple_media_backend_fs2_set_property;
+ gobject_class->get_property = purple_media_backend_fs2_get_property;
+
+ g_object_class_override_property(gobject_class, PROP_MEDIA, "media");
+
+ g_type_class_add_private(klass, sizeof(PurpleMediaBackendFs2Private));
+}
+
+static void
+purple_media_backend_iface_init(PurpleMediaBackendIface *iface)
+{
+ iface->add_stream = purple_media_backend_fs2_add_stream;
+ iface->add_remote_candidates =
+ purple_media_backend_fs2_add_remote_candidates;
+ iface->get_codecs = purple_media_backend_fs2_get_codecs;
+ iface->get_local_candidates =
+ purple_media_backend_fs2_get_local_candidates;
+ iface->set_remote_codecs = purple_media_backend_fs2_set_remote_codecs;
+ iface->set_send_codec = purple_media_backend_fs2_set_send_codec;
+}
+
+static gboolean
+purple_media_backend_fs2_add_stream(PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *who,
+ PurpleMediaSessionType type, gboolean initiator,
+ const gchar *transmitter,
+ guint num_params, GParameter *params)
+{
+ return FALSE;
+}
+
+static void
+purple_media_backend_fs2_add_remote_candidates(PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant,
+ GList *remote_candidates)
+{
+}
+
+static GList *
+purple_media_backend_fs2_get_codecs(PurpleMediaBackend *self,
+ const gchar *sess_id)
+{
+ return NULL;
+}
+
+static GList *
+purple_media_backend_fs2_get_local_candidates(PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant)
+{
+ return NULL;
+}
+
+static void
+purple_media_backend_fs2_set_remote_codecs(PurpleMediaBackend *self,
+ const gchar *sess_id, const gchar *participant,
+ GList *codecs)
+{
+}
+
+static void
+purple_media_backend_fs2_set_send_codec(PurpleMediaBackend *self,
+ const gchar *sess_id, PurpleMediaCodec *codec)
+{
+}
+
============================================================
--- libpurple/media/backend-fs2.h 7558e91bec843486165004b49709facf1320f2f8
+++ libpurple/media/backend-fs2.h 7558e91bec843486165004b49709facf1320f2f8
@@ -0,0 +1,60 @@
+/**
+ * @file backend-fs2.h Farsight 2 backend for media API
+ * @ingroup core
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+/*
+ * This file should not yet be part of libpurple's API.
+ * It should remain internal only for now.
+ */
+
+#ifndef _MEDIA_BACKEND_FS2_H_
+#define _MEDIA_BACKEND_FS2_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_TYPE_MEDIA_BACKEND_FS2 (purple_media_backend_fs2_get_type())
+#define PURPLE_IS_MEDIA_BACKEND_FS2(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_BACKEND_FS2))
+#define PURPLE_IS_MEDIA_BACKEND_FS2_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_BACKEND_FS2))
+#define PURPLE_MEDIA_BACKEND_FS2(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2))
+#define PURPLE_MEDIA_BACKEND_FS2_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2))
+#define PURPLE_MEDIA_BACKEND_FS2_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_BACKEND_FS2, PurpleMediaBackendFs2))
+
+/** An opaque structure representing the Farsight 2 media backend. */
+typedef struct _PurpleMediaBackendFs2 PurpleMediaBackendFs2;
+
+/**
+ * Gets the type of the Farsight 2 media backend object.
+ *
+ * @return The Farsight 2 media backend's GType
+ *
+ * @since 2.7.0
+ */
+GType purple_media_backend_fs2_get_type(void);
+
+G_END_DECLS
+
+#endif /* _MEDIA_BACKEND_FS2_H_ */
============================================================
--- libpurple/Makefile.am 4bfa01fbb62716a99d6e3a6c10a0e204689ea491
+++ libpurple/Makefile.am 15275e0926a4c41af20eeff704fa535e2b73cf52
@@ -53,6 +53,8 @@ purple_coresources = \
idle.c \
imgstore.c \
log.c \
+ media/backend-fs2.c \
+ media/backend-fs2.h \
media/backend-iface.c \
media/candidate.c \
media/codec.c \
============================================================
--- libpurple/Makefile.mingw b94d8fa275b7bb1063f1e304ad27bf9b16df0d4b
+++ libpurple/Makefile.mingw b955ad61676a72f8524b006c3078da6e41bcb7ee
@@ -48,6 +48,7 @@ C_SRC = \
idle.c \
imgstore.c \
log.c \
+ media/backend-fs2.c \
media/backend-iface.c \
media/candidate.c \
media/codec.c \
More information about the Commits
mailing list