mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
element-maker: Update somewhat for 1.0
Only converted basetransform for the moment. It's probably easier to write templates from scratch from the documentation.
This commit is contained in:
parent
250555a7de
commit
f790fcbfa6
5 changed files with 160 additions and 92 deletions
|
@ -6,79 +6,144 @@ GST_TYPE_BASE_TRANSFORM
|
|||
% pads
|
||||
sinkpad-simple srcpad-simple
|
||||
% pkg-config
|
||||
gstreamer-base-0.10
|
||||
gstreamer-base-1.0
|
||||
% pads
|
||||
sinkpad-simple srcpad-simple
|
||||
% includes
|
||||
#include <gst/base/gstbasetransform.h>
|
||||
% prototypes
|
||||
static GstCaps *gst_replace_transform_caps (GstBaseTransform * trans,
|
||||
GstPadDirection direction, GstCaps * caps);
|
||||
static void
|
||||
static GstCaps *gst_replace_transform_caps (GstBaseTransform *trans,
|
||||
GstPadDirection direction, GstCaps *caps, GstCaps *filter);
|
||||
static GstCaps *
|
||||
gst_replace_fixate_caps (GstBaseTransform * trans,
|
||||
GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
|
||||
static gboolean
|
||||
gst_replace_transform_size (GstBaseTransform * trans,
|
||||
static gboolean gst_replace_accept_caps (GstBaseTransform *trans,
|
||||
GstPadDirection direction, GstCaps *caps);
|
||||
static gboolean gst_replace_set_caps (GstBaseTransform *trans, GstCaps *incaps,
|
||||
GstCaps *outcaps);
|
||||
static gboolean gst_replace_query (GstBaseTransform *trans, GstPadDirection direction,
|
||||
GstQuery *query);
|
||||
static gboolean gst_replace_decide_allocation (GstBaseTransform *trans,
|
||||
GstQuery *query);
|
||||
static gboolean gst_replace_filter_meta (GstBaseTransform *trans, GstQuery *query,
|
||||
GType api, const GstStructure *params);
|
||||
static gboolean gst_replace_propose_allocation (GstBaseTransform *trans,
|
||||
GstQuery *decide_query, GstQuery *query);
|
||||
static gboolean gst_replace_transform_size (GstBaseTransform * trans,
|
||||
GstPadDirection direction,
|
||||
GstCaps * caps, guint size, GstCaps * othercaps, guint * othersize);
|
||||
static gboolean
|
||||
gst_replace_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
|
||||
guint * size);
|
||||
static gboolean
|
||||
gst_replace_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
||||
GstCaps * outcaps);
|
||||
GstCaps * caps, gsize size, GstCaps * othercaps, gsize * othersize);
|
||||
static gboolean gst_replace_get_unit_size (GstBaseTransform * trans,
|
||||
GstCaps * caps, gsize * size);
|
||||
static gboolean gst_replace_start (GstBaseTransform * trans);
|
||||
static gboolean gst_replace_stop (GstBaseTransform * trans);
|
||||
static gboolean gst_replace_event (GstBaseTransform * trans, GstEvent * event);
|
||||
static gboolean gst_replace_sink_event (GstBaseTransform * trans,
|
||||
GstEvent * event);
|
||||
static gboolean gst_replace_src_event (GstBaseTransform * trans,
|
||||
GstEvent * event);
|
||||
static GstFlowReturn gst_replace_prepare_output_buffer (
|
||||
GstBaseTransform * trans, GstBuffer *input, GstBuffer **outbuf);
|
||||
static gboolean gst_replace_copy_metadata (GstBaseTransform *trans,
|
||||
GstBuffer *input, GstBuffer *outbuf);
|
||||
static gboolean gst_replace_transform_meta (GstBaseTransform *trans,
|
||||
GstBuffer *outbuf, GstMeta *meta, GstBuffer *inbuf);
|
||||
static void
|
||||
gst_replace_before_transform (GstBaseTransform * trans, GstBuffer * buffer);
|
||||
static GstFlowReturn
|
||||
gst_replace_transform (GstBaseTransform * trans, GstBuffer * inbuf,
|
||||
GstBuffer * outbuf);
|
||||
static GstFlowReturn
|
||||
gst_replace_transform_ip (GstBaseTransform * trans, GstBuffer * buf);
|
||||
static GstFlowReturn
|
||||
gst_replace_prepare_output_buffer (GstBaseTransform * trans,
|
||||
GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
|
||||
static gboolean
|
||||
gst_replace_src_event (GstBaseTransform * trans, GstEvent * event);
|
||||
static void
|
||||
gst_replace_before_transform (GstBaseTransform * trans, GstBuffer * buffer);
|
||||
% declare-class
|
||||
GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass);
|
||||
% set-methods
|
||||
base_transform_class->transform_caps = GST_DEBUG_FUNCPTR (gst_replace_transform_caps);
|
||||
base_transform_class->fixate_caps = GST_DEBUG_FUNCPTR (gst_replace_fixate_caps);
|
||||
base_transform_class->accept_caps = GST_DEBUG_FUNCPTR (gst_replace_accept_caps);
|
||||
base_transform_class->set_caps = GST_DEBUG_FUNCPTR (gst_replace_set_caps);
|
||||
base_transform_class->query = GST_DEBUG_FUNCPTR (gst_replace_query);
|
||||
base_transform_class->decide_allocation = GST_DEBUG_FUNCPTR (gst_replace_decide_allocation);
|
||||
base_transform_class->filter_meta = GST_DEBUG_FUNCPTR (gst_replace_filter_meta);
|
||||
base_transform_class->propose_allocation = GST_DEBUG_FUNCPTR (gst_replace_propose_allocation);
|
||||
base_transform_class->transform_size = GST_DEBUG_FUNCPTR (gst_replace_transform_size);
|
||||
base_transform_class->get_unit_size = GST_DEBUG_FUNCPTR (gst_replace_get_unit_size);
|
||||
base_transform_class->set_caps = GST_DEBUG_FUNCPTR (gst_replace_set_caps);
|
||||
base_transform_class->start = GST_DEBUG_FUNCPTR (gst_replace_start);
|
||||
base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_replace_stop);
|
||||
base_transform_class->event = GST_DEBUG_FUNCPTR (gst_replace_event);
|
||||
base_transform_class->sink_event = GST_DEBUG_FUNCPTR (gst_replace_sink_event);
|
||||
base_transform_class->src_event = GST_DEBUG_FUNCPTR (gst_replace_src_event);
|
||||
base_transform_class->prepare_output_buffer = GST_DEBUG_FUNCPTR (gst_replace_prepare_output_buffer);
|
||||
base_transform_class->copy_metadata = GST_DEBUG_FUNCPTR (gst_replace_copy_metadata);
|
||||
base_transform_class->transform_meta = GST_DEBUG_FUNCPTR (gst_replace_transform_meta);
|
||||
base_transform_class->before_transform = GST_DEBUG_FUNCPTR (gst_replace_before_transform);
|
||||
base_transform_class->transform = GST_DEBUG_FUNCPTR (gst_replace_transform);
|
||||
base_transform_class->transform_ip = GST_DEBUG_FUNCPTR (gst_replace_transform_ip);
|
||||
base_transform_class->prepare_output_buffer = GST_DEBUG_FUNCPTR (gst_replace_prepare_output_buffer);
|
||||
base_transform_class->src_event = GST_DEBUG_FUNCPTR (gst_replace_src_event);
|
||||
base_transform_class->before_transform = GST_DEBUG_FUNCPTR (gst_replace_before_transform);
|
||||
% methods
|
||||
|
||||
static GstCaps *
|
||||
gst_replace_transform_caps (GstBaseTransform * trans,
|
||||
GstPadDirection direction, GstCaps * caps)
|
||||
gst_replace_transform_caps (GstBaseTransform *trans,
|
||||
GstPadDirection direction, GstCaps *caps, GstCaps *filter)
|
||||
{
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
static GstCaps *
|
||||
gst_replace_fixate_caps (GstBaseTransform * trans,
|
||||
GstPadDirection direction, GstCaps * caps, GstCaps * othercaps)
|
||||
{
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_accept_caps (GstBaseTransform *trans,
|
||||
GstPadDirection direction, GstCaps *caps)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
||||
GstCaps * outcaps)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_query (GstBaseTransform *trans, GstPadDirection direction,
|
||||
GstQuery *query)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_decide_allocation (GstBaseTransform *trans, GstQuery *query)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_filter_meta (GstBaseTransform *trans, GstQuery *query,
|
||||
GType api, const GstStructure *params)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_propose_allocation (GstBaseTransform *trans,
|
||||
GstQuery *decide_query, GstQuery *query)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_transform_size (GstBaseTransform * trans,
|
||||
GstPadDirection direction,
|
||||
GstCaps * caps, guint size, GstCaps * othercaps, guint * othersize)
|
||||
GstCaps * caps, gsize size, GstCaps * othercaps, gsize * othersize)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
|
@ -86,15 +151,7 @@ gst_replace_transform_size (GstBaseTransform * trans,
|
|||
|
||||
static gboolean
|
||||
gst_replace_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
|
||||
guint * size)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_set_caps (GstBaseTransform * trans, GstCaps * incaps,
|
||||
GstCaps * outcaps)
|
||||
gsize * size)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
|
@ -115,12 +172,49 @@ gst_replace_stop (GstBaseTransform * trans)
|
|||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_event (GstBaseTransform * trans, GstEvent * event)
|
||||
gst_replace_sink_event (GstBaseTransform * trans, GstEvent * event)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_src_event (GstBaseTransform * trans, GstEvent * event)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_replace_prepare_output_buffer (GstBaseTransform * trans,
|
||||
GstBuffer * input, GstBuffer ** buf)
|
||||
{
|
||||
|
||||
return GST_FLOW_ERROR;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_copy_metadata (GstBaseTransform *trans,
|
||||
GstBuffer *input, GstBuffer *outbuf)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_transform_meta (GstBaseTransform *trans,
|
||||
GstBuffer *outbuf, GstMeta *meta, GstBuffer *inbuf)
|
||||
{
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_replace_before_transform (GstBaseTransform * trans, GstBuffer * buffer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_replace_transform (GstBaseTransform * trans, GstBuffer * inbuf,
|
||||
GstBuffer * outbuf)
|
||||
|
@ -136,24 +230,4 @@ gst_replace_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
|
|||
return GST_FLOW_ERROR;
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
gst_replace_prepare_output_buffer (GstBaseTransform * trans,
|
||||
GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf)
|
||||
{
|
||||
|
||||
return GST_FLOW_ERROR;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_replace_src_event (GstBaseTransform * trans, GstEvent * event)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
gst_replace_before_transform (GstBaseTransform * trans, GstBuffer * buffer)
|
||||
{
|
||||
|
||||
}
|
||||
% end
|
||||
|
|
|
@ -55,7 +55,7 @@ gst_replace_dispose (GObject * object)
|
|||
|
||||
/* clean up as possible. may be called multiple times */
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
G_OBJECT_CLASS (gst_replace_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -65,7 +65,7 @@ gst_replace_finalize (GObject * object)
|
|||
|
||||
/* clean up object here */
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
G_OBJECT_CLASS (gst_replace_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
% end
|
||||
|
|
|
@ -12,7 +12,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
);
|
||||
|
||||
% base-init
|
||||
gst_element_class_add_pad_template (element_class,
|
||||
gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
|
||||
gst_static_pad_template_get (&gst_replace_sink_template));
|
||||
% instance-init
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
|
|||
);
|
||||
|
||||
% base-init
|
||||
gst_element_class_add_pad_template (element_class,
|
||||
gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
|
||||
gst_static_pad_template_get (&gst_replace_src_template));
|
||||
% instance-init
|
||||
|
||||
|
|
|
@ -168,30 +168,9 @@ cat <<EOF
|
|||
|
||||
/* class initialization */
|
||||
|
||||
#define DEBUG_INIT(bla) \\
|
||||
GST_DEBUG_CATEGORY_INIT (gst_replace_debug_category, "replace", 0, \\
|
||||
"debug category for replace element");
|
||||
|
||||
GST_BOILERPLATE_FULL (GstReplace, gst_replace, GstBaseReplace,
|
||||
GST_TYPE_BASE_REPLACE, DEBUG_INIT);
|
||||
|
||||
static void
|
||||
gst_replace_base_init (gpointer g_class)
|
||||
{
|
||||
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
|
||||
|
||||
EOF
|
||||
|
||||
for each in $pads
|
||||
do
|
||||
grep -A 10000 '^% base-init' $templatedir/$each | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
done
|
||||
|
||||
cat <<EOF
|
||||
|
||||
gst_element_class_set_static_metadata (element_class, "FIXME Long name",
|
||||
"Generic", "FIXME Description", "$REAL_NAME <$EMAIL_ADDRESS>");
|
||||
}
|
||||
G_DEFINE_TYPE_WITH_CODE (GstReplace, gst_replace, GST_TYPE_BASE_REPLACE,
|
||||
GST_DEBUG_CATEGORY_INIT (gst_replace_debug_category, "replace", 0,
|
||||
"debug category for replace element"));
|
||||
|
||||
static void
|
||||
gst_replace_class_init (GstReplaceClass * klass)
|
||||
|
@ -200,7 +179,22 @@ EOF
|
|||
grep -A 10000 '^% declare-class' $templatedir/gobject | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
grep -A 10000 '^% declare-class' $templatedir/$class | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
|
||||
echo
|
||||
cat <<EOF
|
||||
|
||||
/* Setting up pads and setting metadata should be moved to
|
||||
base_class_init if you intend to subclass this class. */
|
||||
EOF
|
||||
for each in $pads
|
||||
do
|
||||
grep -A 10000 '^% base-init' $templatedir/$each | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
done
|
||||
cat <<EOF
|
||||
|
||||
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS(klass),
|
||||
"FIXME Long name", "Generic", "FIXME Description",
|
||||
"$REAL_NAME <$EMAIL_ADDRESS>");
|
||||
|
||||
EOF
|
||||
|
||||
grep -A 10000 '^% set-methods' $templatedir/gobject | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
grep -A 10000 '^% set-methods' $templatedir/$class | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
||||
|
@ -210,7 +204,7 @@ cat <<EOF
|
|||
}
|
||||
|
||||
static void
|
||||
gst_replace_init (GstReplace * replace, GstReplaceClass * replace_class)
|
||||
gst_replace_init (GstReplace *replace)
|
||||
{
|
||||
EOF
|
||||
|
||||
|
@ -377,12 +371,12 @@ gst-indent $gstreplace.c
|
|||
|
||||
echo pkg is $pkg
|
||||
|
||||
gcc -Wall -fPIC $CPPFLAGS $(pkg-config --cflags gstreamer-0.10 $pkg) -c -o $gstreplace.o $gstreplace.c
|
||||
gcc -Wall -fPIC $CPPFLAGS $(pkg-config --cflags gstreamer-1.0 $pkg) -c -o $gstreplace.o $gstreplace.c
|
||||
if test $? -ne 0; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gcc -shared -o $gstreplace.so $gstreplace.o $(pkg-config --libs gstreamer-0.10 $pkg)
|
||||
gcc -shared -o $gstreplace.so $gstreplace.o $(pkg-config --libs gstreamer-1.0 $pkg)
|
||||
if test $? -ne 0; then
|
||||
exit 1
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue