mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
233 lines
5.9 KiB
Bash
Executable file
233 lines
5.9 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
class=basetransform
|
|
|
|
GST_IS_REPLACE=MY_IS_EXAMPLE
|
|
GST_REPLACE=MY_EXAMPLE
|
|
GST_TYPE_REPLACE=MY_TYPE_EXAMPLE
|
|
GstReplace=MyExample
|
|
gst_replace=my_example
|
|
gstreplace=myexample
|
|
replace=example
|
|
|
|
source=gst$class.c
|
|
pkg=`grep -A 10000 '^% pkg-config' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1`
|
|
GST_TYPE_BASE_REPLACE=`grep -A 10000 '^% TYPE_CLASS_NAME' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1`
|
|
GstBaseReplace=`grep -A 10000 '^% ClassName' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1`
|
|
|
|
generate ()
|
|
{
|
|
|
|
grep -A 10000 '^% copyright' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
EOF
|
|
|
|
grep -A 10000 '^% includes' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% includes' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% includes' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
#include "gstreplace.h"
|
|
|
|
/* prototypes */
|
|
|
|
EOF
|
|
|
|
grep -A 10000 '^% prototypes' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% prototypes' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% prototypes' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
|
|
enum
|
|
{
|
|
PROP_0
|
|
};
|
|
|
|
/* pad templates */
|
|
|
|
static GstStaticPadTemplate gst_replace_sink_template =
|
|
GST_STATIC_PAD_TEMPLATE ("sink",
|
|
GST_PAD_SINK,
|
|
GST_PAD_ALWAYS,
|
|
GST_STATIC_CAPS ("application/unknown")
|
|
);
|
|
|
|
static GstStaticPadTemplate gst_replace_src_template =
|
|
GST_STATIC_PAD_TEMPLATE ("src",
|
|
GST_PAD_SRC,
|
|
GST_PAD_ALWAYS,
|
|
GST_STATIC_CAPS ("application/unknown")
|
|
);
|
|
|
|
/* class initialization */
|
|
|
|
GST_BOILERPLATE (GstReplace, gst_replace, GstBaseReplace,
|
|
GST_TYPE_BASE_REPLACE);
|
|
|
|
static void
|
|
gst_replace_base_init (gpointer g_class)
|
|
{
|
|
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
|
|
|
|
gst_element_class_add_pad_template (element_class,
|
|
gst_static_pad_template_get (&gst_replace_src_template));
|
|
gst_element_class_add_pad_template (element_class,
|
|
gst_static_pad_template_get (&gst_replace_sink_template));
|
|
|
|
gst_element_class_set_details_simple (element_class, "FIXME",
|
|
"Generic", "FIXME", "FIXME <fixme@example.com>");
|
|
}
|
|
|
|
static void
|
|
gst_replace_class_init (GstReplaceClass * klass)
|
|
{
|
|
EOF
|
|
grep -A 10000 '^% declare-class' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% declare-class' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% declare-class' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
echo
|
|
|
|
grep -A 10000 '^% set-methods' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% set-methods' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% set-methods' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
|
|
}
|
|
|
|
static void
|
|
gst_replace_init (GstReplace * replace, GstReplaceClass * replace_class)
|
|
{
|
|
|
|
}
|
|
EOF
|
|
|
|
|
|
grep -A 10000 '^% methods' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% methods' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% methods' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
|
|
cat <<EOF
|
|
|
|
static gboolean
|
|
plugin_init (GstPlugin * plugin)
|
|
{
|
|
|
|
gst_element_register (plugin, "replace", GST_RANK_NONE,
|
|
gst_replace_get_type ());
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#define VERSION "0.0.FIXME"
|
|
#define PACKAGE "FIXME_package"
|
|
#define PACKAGE_NAME "FIXME_package_name"
|
|
#define PACKAGE_ORIGIN "http://FIXME.org/"
|
|
|
|
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|
GST_VERSION_MINOR,
|
|
"replace",
|
|
"FIXME",
|
|
plugin_init, VERSION, "LGPL", PACKAGE_NAME, PACKAGE_ORIGIN)
|
|
|
|
EOF
|
|
|
|
|
|
}
|
|
|
|
generate_header ()
|
|
{
|
|
|
|
grep -A 10000 '^% copyright' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
#ifndef _GST_REPLACE_H_
|
|
#define _GST_REPLACE_H_
|
|
|
|
EOF
|
|
|
|
grep -A 10000 '^% includes' base.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% includes' gobject.c | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
grep -A 10000 '^% includes' $source | tail -n +2|grep -m 1 -B 10000 '^%'|head -n -1
|
|
|
|
cat <<EOF
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define GST_TYPE_REPLACE \
|
|
(gst_replace_get_type())
|
|
#define GST_REPLACE(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_REPLACE,GstReplace))
|
|
#define GST_REPLACE_CLASS(klass) \
|
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_REPLACE,GstReplaceClass))
|
|
#define GST_IS_REPLACE(obj) \
|
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_REPLACE))
|
|
#define GST_IS_REPLACE_CLASS(obj) \
|
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_REPLACE))
|
|
|
|
typedef struct _GstReplace GstReplace;
|
|
typedef struct _GstReplaceClass GstReplaceClass;
|
|
|
|
struct _GstReplace
|
|
{
|
|
GstBaseReplace base_replace;
|
|
|
|
};
|
|
|
|
struct _GstReplaceClass
|
|
{
|
|
GstBaseReplaceClass base_replace_class;
|
|
};
|
|
|
|
GType gst_replace_get_type (void);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif
|
|
EOF
|
|
|
|
|
|
}
|
|
|
|
|
|
generate | sed \
|
|
-e "s/GST_BASE_REPLACE/$GST_BASE_REPLACE/g" \
|
|
-e "s/GST_TYPE_BASE_REPLACE/$GST_TYPE_BASE_REPLACE/g" \
|
|
-e "s/GstBaseReplace/$GstBaseReplace/g" \
|
|
-e "s/GST_IS_REPLACE/$GST_IS_REPLACE/g" \
|
|
-e "s/GST_REPLACE/$GST_REPLACE/g" \
|
|
-e "s/GST_TYPE_REPLACE/$GST_TYPE_REPLACE/g" \
|
|
-e "s/GstReplace/$GstReplace/g" \
|
|
-e "s/gst_replace/$gst_replace/g" \
|
|
-e "s/gstreplace/$gstreplace/g" \
|
|
-e "s/replace/$replace/g" >$gstreplace.c
|
|
|
|
generate_header | sed \
|
|
-e "s/GST_BASE_REPLACE/$GST_BASE_REPLACE/g" \
|
|
-e "s/GST_TYPE_BASE_REPLACE/$GST_TYPE_BASE_REPLACE/g" \
|
|
-e "s/GstBaseReplace/$GstBaseReplace/g" \
|
|
-e "s/GST_IS_REPLACE/$GST_IS_REPLACE/g" \
|
|
-e "s/GST_REPLACE/$GST_REPLACE/g" \
|
|
-e "s/GST_TYPE_REPLACE/$GST_TYPE_REPLACE/g" \
|
|
-e "s/GstReplace/$GstReplace/g" \
|
|
-e "s/gst_replace/$gst_replace/g" \
|
|
-e "s/gstreplace/$gstreplace/g" \
|
|
-e "s/replace/$replace/g" >$gstreplace.h
|
|
|
|
gst-indent $gstreplace.c
|
|
|
|
echo pkg is $pkg
|
|
|
|
gcc -Wall $(pkg-config --cflags gstreamer-0.10 $pkg) -c -o $gstreplace.o $gstreplace.c
|
|
gcc -shared -o $gstreplace.so $gstreplace.o $(pkg-config --libs gstreamer-0.10 $pkg)
|
|
|
|
|