Commit cf43d9b6 authored by Thibault Saunier's avatar Thibault Saunier 🌵

plugin: Make use of G_DECLARE

And remove useless .h files
parent 03220057
......@@ -39,7 +39,9 @@
#include <gst/gst.h>
#include <glib/gstdio.h>
#include <gst/pbutils/pbutils.h>
#include "gesdemux.h"
#include <gst/base/gstadapter.h>
#include <ges/ges.h>
#include <gst/base/gstflowcombiner.h>
GST_DEBUG_CATEGORY_STATIC (gesdemux);
#define GST_CAT_DEFAULT gesdemux
......@@ -61,7 +63,20 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/xges"));
G_DECLARE_FINAL_TYPE (GESDemux, ges_demux, GES, Demux, GstBin);
struct _GESDemux
{
GstBin parent;
GESTimeline *timeline;
GstPad *sinkpad;
GstAdapter *input_adapter;
};
G_DEFINE_TYPE (GESDemux, ges_demux, GST_TYPE_BIN);
#define GES_DEMUX(obj) ((GESDemux*)obj)
enum
{
......
/* GStreamer GES plugin
*
* Copyright (C) 2019 Thibault Saunier <tsaunier@igalia.com>
*
* gesdemux.h
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef __GES_DEMUX_H__
#define __GES_DEMUX_H__
#include <gst/gst.h>
#include <gst/base/gstadapter.h>
#include <ges/ges.h>
G_BEGIN_DECLS
GType ges_demux_get_type (void);
#define GES_DEMUX_TYPE (ges_demux_get_type ())
#define GES_DEMUX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_DEMUX_TYPE, GESDemux))
#define GES_DEMUX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GES_DEMUX_TYPE, GESDemuxClass))
#define GES_IS_DEMUX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_DEMUX_TYPE))
#define GES_IS_DEMUX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_DEMUX_TYPE))
#define GES_DEMUX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_DEMUX_TYPE, GESDemuxClass))
typedef struct {
GstBin parent;
GESTimeline *timeline;
GstPad *sinkpad;
GstAdapter *input_adapter;
} GESDemux;
typedef struct {
GstBinClass parent;
} GESDemuxClass;
G_END_DECLS
#endif /* __GES_DEMUX_H__ */
......@@ -27,18 +27,20 @@
#include <gst/gst.h>
#include "gessrc.h"
#include "gesdemux.h"
extern GType ges_demux_get_type ();
extern GType ges_src_get_type ();
static gboolean
plugin_init (GstPlugin * plugin)
{
gboolean res = 1;
res |= gst_element_register (plugin, "gessrc", GST_RANK_NONE, GES_SRC_TYPE);
res |=
gst_element_register (plugin, "gessrc", GST_RANK_NONE,
ges_src_get_type ());
res |= gst_element_register (plugin, "gesdemux", GST_RANK_PRIMARY,
GES_DEMUX_TYPE);
ges_demux_get_type ());
return res;
}
......
......@@ -28,16 +28,16 @@
* The gessrc is a bin that will simply expose the track src pads
* and implements the GstUriHandler interface using a custom `ges://`
* uri scheme.
*
*
* NOTE: That to use it inside playbin and friends you **need** to
* set gessrc::timeline property yourself.
*
*
* Example with #playbin:
*
*
* {{../../examples/c/gessrc.c}}
*
*
* Example with #GstPlayer:
*
*
* {{../../examples/python/gst-player.py}}
**/
......@@ -46,7 +46,7 @@
#endif
#include <gst/gst.h>
#include "gessrc.h"
#include <ges/ges.h>
GST_DEBUG_CATEGORY_STATIC (gessrc);
#define GST_CAT_DEFAULT gessrc
......@@ -63,6 +63,15 @@ static GstStaticPadTemplate audio_src_template =
GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("audio/x-raw(ANY);"));
G_DECLARE_FINAL_TYPE (GESSrc, ges_src, GES, SRC, GstBin);
struct _GESSrc
{
GstBin parent;
GESTimeline *timeline;
};
#define GES_SRC(obj) ((GESSrc*) obj)
enum
{
PROP_0,
......
/* GStreamer GES plugin
*
* Copyright (C) 2019 Thibault Saunier <tsaunier@igalia.com>
*
* gstges.c
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef __GES_SRC_H__
#define __GES_SRC_H__
#include <gst/gst.h>
#include <ges/ges.h>
G_BEGIN_DECLS
GType ges_src_get_type (void);
#define GES_SRC_TYPE (ges_src_get_type ())
#define GES_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_SRC_TYPE, GESSrc))
#define GES_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GES_SRC_TYPE, GESSrcClass))
#define GES_IS_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_SRC_TYPE))
#define GES_IS_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_SRC_TYPE))
#define GES_SRC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_SRC_TYPE, GESSrcClass))
typedef struct {
GstBin parent;
GESTimeline *timeline;
} GESSrc;
typedef struct {
GstBinClass parent;
} GESSrcClass;
G_END_DECLS
#endif /* __GES_SRC_H__ */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment