summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdgard Lima <edgard.lima@indt.org.br>2005-09-22 22:38:48 +0000
committerEdgard Lima <edgard.lima@indt.org.br>2005-09-22 22:38:48 +0000
commit50bdf8c4623926eadd834e463357077bba0eec90 (patch)
tree0f406f2ec5b86a916633ceef49326f6d63c07fd2
parent7067b806e016f349cb9e83e49eddc8ede4d9c0d5 (diff)
Auparse ported to 0.9. Tested with filesrc ! auparse ! osssink and alsasink
Original commit message from CVS: Auparse ported to 0.9. Tested with filesrc ! auparse ! osssink and alsasink
-rw-r--r--ChangeLog9
-rw-r--r--PORTED_091
-rw-r--r--configure.ac2
-rw-r--r--gst/auparse/gstauparse.c88
-rw-r--r--gst/auparse/gstauparse.h11
5 files changed, 55 insertions, 56 deletions
diff --git a/ChangeLog b/ChangeLog
index 25a11661..ad8f2025 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+
+2005-09-22 Edgard Lima (edgard.lima@indt.org.br)
+
+ * configure.ac:
+ * PORTED_09:
+ * gst/auparse/gstauparse.c:
+ * gst/auparse/gstauparse.h:
+ Auparse ported to 0.9.
+
2005-09-22 Wim Taymans <wim@fluendo.com>
* gst/rtp/TODO:
diff --git a/PORTED_09 b/PORTED_09
index 92c40fa8..eacbce6e 100644
--- a/PORTED_09
+++ b/PORTED_09
@@ -1,6 +1,7 @@
When porting a plugin start with 0.8 CVS head, not the old code in this module. There are many bugfixes which have gone into 0.8 which you want to keep.
List of ported plugins (update when you commit a ported plugin):
+auparse (alima)
effectv (wim)
mad (wim)
videofilter (wim)
diff --git a/configure.ac b/configure.ac
index cfee7c3c..07e67f3b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -267,6 +267,7 @@ dnl videofilter is at the top because others depend on it
GST_PLUGINS_ALL="\
videofilter \
alpha \
+ auparse \
autodetect \
avi \
debug \
@@ -564,6 +565,7 @@ AC_CONFIG_FILES(
Makefile
gst/Makefile
gst/alpha/Makefile
+gst/auparse/Makefile
gst/autodetect/Makefile
gst/avi/Makefile
gst/debug/Makefile
diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c
index 0ab92e98..5147a944 100644
--- a/gst/auparse/gstauparse.c
+++ b/gst/auparse/gstauparse.c
@@ -67,13 +67,6 @@ static GstStaticPadTemplate gst_auparse_src_template =
"audio/x-adpcm, " "layout = (string) { g721, g722, g723_3, g723_5 }")
);
-/* AuParse signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
enum
{
ARG_0
@@ -84,13 +77,14 @@ static void gst_auparse_base_init (gpointer g_class);
static void gst_auparse_class_init (GstAuParseClass * klass);
static void gst_auparse_init (GstAuParse * auparse);
-static void gst_auparse_chain (GstPad * pad, GstData * _data);
+static GstFlowReturn gst_auparse_chain (GstPad * pad, GstBuffer * buf);
static GstStateChangeReturn gst_auparse_change_state (GstElement * element,
GstStateChange transition);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_auparse_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -157,7 +151,7 @@ gst_auparse_init (GstAuParse * auparse)
gst_pad_new_from_template (gst_static_pad_template_get
(&gst_auparse_src_template), "src");
gst_element_add_pad (GST_ELEMENT (auparse), auparse->srcpad);
- gst_pad_use_explicit_caps (auparse->srcpad);
+ gst_pad_use_fixed_caps (auparse->srcpad);
#endif
auparse->offset = 0;
@@ -167,10 +161,10 @@ gst_auparse_init (GstAuParse * auparse)
auparse->channels = 0;
}
-static void
-gst_auparse_chain (GstPad * pad, GstData * _data)
+static GstFlowReturn
+gst_auparse_chain (GstPad * pad, GstBuffer * buf)
{
- GstBuffer *buf = GST_BUFFER (_data);
+ GstFlowReturn ret;
GstAuParse *auparse;
gchar *data;
glong size;
@@ -180,9 +174,9 @@ gst_auparse_chain (GstPad * pad, GstData * _data)
layout[0] = 0;
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD (pad));
- g_return_if_fail (buf != NULL);
+ g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
+ g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
+ g_return_val_if_fail (buf != NULL, GST_FLOW_ERROR);
auparse = GST_AUPARSE (gst_pad_get_parent (pad));
@@ -232,12 +226,11 @@ gst_auparse_chain (GstPad * pad, GstData * _data)
} else {
GST_ELEMENT_ERROR (auparse, STREAM, WRONG_TYPE, (NULL), (NULL));
- gst_buffer_unref (buf);
- return;
+ return GST_FLOW_ERROR;
}
GST_DEBUG
- ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld",
+ ("offset %ld, size %ld, encoding %ld, frequency %ld, channels %ld\n",
auparse->offset, auparse->size, auparse->encoding, auparse->frequency,
auparse->channels);
@@ -318,14 +311,17 @@ Samples :
default:
GST_ELEMENT_ERROR (auparse, STREAM, FORMAT, (NULL), (NULL));
- gst_buffer_unref (buf);
- return;
+ return GST_FLOW_ERROR;
}
auparse->srcpad =
gst_pad_new_from_template (gst_static_pad_template_get
(&gst_auparse_src_template), "src");
- gst_pad_use_explicit_caps (auparse->srcpad);
+
+ g_return_val_if_fail (auparse->srcpad != NULL, GST_FLOW_ERROR);
+
+
+ gst_pad_use_fixed_caps (auparse->srcpad);
if (law) {
tempcaps =
@@ -352,47 +348,45 @@ Samples :
NULL);
}
- if (!gst_pad_set_explicit_caps (auparse->srcpad, tempcaps)) {
- GST_ELEMENT_ERROR (auparse, CORE, NEGOTIATION, (NULL), (NULL));
- gst_buffer_unref (buf);
- gst_object_unref (GST_OBJECT (auparse->srcpad));
- auparse->srcpad = NULL;
- return;
+ gst_pad_use_fixed_caps (auparse->srcpad);
+ gst_pad_set_active (auparse->srcpad, TRUE);
+ gst_pad_set_caps (auparse->srcpad, tempcaps);
+ gst_element_add_pad (GST_ELEMENT (auparse), auparse->srcpad);
+
+ if ((ret = gst_pad_alloc_buffer (auparse->srcpad, GST_BUFFER_OFFSET_NONE,
+ size - (auparse->offset),
+ GST_PAD_CAPS (auparse->srcpad), &newbuf)) != GST_FLOW_OK) {
+ printf ("failed gst_pad_alloc_buffer\n");
+ return ret;
}
+ ret = GST_FLOW_OK;
- gst_element_add_pad (GST_ELEMENT (auparse), auparse->srcpad);
- newbuf = gst_buffer_new ();
- GST_BUFFER_DATA (newbuf) = (gpointer) malloc (size - (auparse->offset));
memcpy (GST_BUFFER_DATA (newbuf), data + (auparse->offset),
size - (auparse->offset));
GST_BUFFER_SIZE (newbuf) = size - (auparse->offset);
- gst_buffer_unref (buf);
+ GstEvent *event;
+
+ event = NULL;
+
+ event = gst_event_new_newsegment (1.0, GST_FORMAT_DEFAULT,
+ 0, GST_CLOCK_TIME_NONE, 0);
+
+
+ gst_pad_push_event (auparse->srcpad, event);
+
+ return gst_pad_push (auparse->srcpad, newbuf);
- gst_pad_push (auparse->srcpad, GST_DATA (newbuf));
- return;
}
- gst_pad_push (auparse->srcpad, GST_DATA (buf));
+ return gst_pad_push (auparse->srcpad, buf);
+
}
static GstStateChangeReturn
gst_auparse_change_state (GstElement * element, GstStateChange transition)
{
- GstAuParse *auparse = GST_AUPARSE (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- if (auparse->srcpad) {
- gst_element_remove_pad (element, auparse->srcpad);
- auparse->srcpad = NULL;
- }
- break;
- default:
- break;
- }
-
if (parent_class->change_state)
return parent_class->change_state (element, transition);
diff --git a/gst/auparse/gstauparse.h b/gst/auparse/gstauparse.h
index d6e5a082..9c9a8cd8 100644
--- a/gst/auparse/gstauparse.h
+++ b/gst/auparse/gstauparse.h
@@ -25,10 +25,7 @@
#include <gst/gst.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
+G_BEGIN_DECLS
#define GST_TYPE_AUPARSE \
(gst_auparse_get_type())
@@ -64,10 +61,6 @@ struct _GstAuParseClass {
GType gst_auparse_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
+G_END_DECLS
#endif /* __GST_AUPARSE_H__ */