summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdgard Lima <edgard.lima@indt.org.br>2005-09-23 17:05:29 +0000
committerEdgard Lima <edgard.lima@indt.org.br>2005-09-23 17:05:29 +0000
commitefbe7fb694f1edb233712600227c53c19cb7ff45 (patch)
tree6de0b1754fbc4c3925dd480e022222e95dadf5fd
parent4de70b1520c851277c3b7daea7b717a8d531c1e7 (diff)
downloadgst-plugins-bad-efbe7fb694f1edb233712600227c53c19cb7ff45.tar.gz
gst-plugins-bad-efbe7fb694f1edb233712600227c53c19cb7ff45.tar.bz2
gst-plugins-bad-efbe7fb694f1edb233712600227c53c19cb7ff45.zip
Gsmdec ported to 0.9. Tested with filesrc ! gsmdec ! alsasink and osssink.
Original commit message from CVS: Gsmdec ported to 0.9. Tested with filesrc ! gsmdec ! alsasink and osssink.
-rw-r--r--ChangeLog11
-rw-r--r--PORTED_091
-rw-r--r--ext/gsm/Makefile.am4
-rw-r--r--ext/gsm/gstgsm.c2
-rw-r--r--ext/gsm/gstgsmdec.c138
5 files changed, 72 insertions, 84 deletions
diff --git a/ChangeLog b/ChangeLog
index 4285027c..21d40233 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2005-09-23 Edgard Lima <edgard.lima@indt.org.br>
+
+ * ext/gsm/Makefile.am:
+ * ext/gsm/gstgsm.c:
+ * ext/gsm/gstgsmdec.c:
+ * PORTED_09:
+ Gsmdec ported to 0.9.
+
+
+
+
2005-09-22 Arwed v. Merkatz <v.merkatz@gmx.net>
* configure.ac:
diff --git a/PORTED_09 b/PORTED_09
index cf067bcb..569cb7b3 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):
+gsmdec (alima)
sdl (alima)
speed (fcarvalho)
gsmenc (fcarvalho)
diff --git a/ext/gsm/Makefile.am b/ext/gsm/Makefile.am
index 6782a242..e91ea73d 100644
--- a/ext/gsm/Makefile.am
+++ b/ext/gsm/Makefile.am
@@ -1,9 +1,9 @@
plugin_LTLIBRARIES = libgstgsm.la
-libgstgsm_la_SOURCES = gstgsm.c gstgsmenc.c
+libgstgsm_la_SOURCES = gstgsm.c gstgsmenc.c gstgsmdec.c
libgstgsm_la_CFLAGS = $(GST_CFLAGS) $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
libgstgsm_la_LIBADD = $(GSM_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-lgstaudio-@GST_MAJORMINOR@
libgstgsm_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-noinst_HEADERS = gstgsmenc.h
+noinst_HEADERS = gstgsmenc.h gstgsmdec.h
diff --git a/ext/gsm/gstgsm.c b/ext/gsm/gstgsm.c
index c629c236..c71dacb0 100644
--- a/ext/gsm/gstgsm.c
+++ b/ext/gsm/gstgsm.c
@@ -29,11 +29,9 @@ plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "gsmenc", GST_RANK_NONE, GST_TYPE_GSMENC))
return FALSE;
-/*
if (!gst_element_register (plugin, "gsmdec", GST_RANK_PRIMARY,
GST_TYPE_GSMDEC))
return FALSE;
-*/
return TRUE;
}
diff --git a/ext/gsm/gstgsmdec.c b/ext/gsm/gstgsmdec.c
index c44067b3..f3ce9cf5 100644
--- a/ext/gsm/gstgsmdec.c
+++ b/ext/gsm/gstgsmdec.c
@@ -50,7 +50,7 @@ static void gst_gsmdec_base_init (gpointer g_class);
static void gst_gsmdec_class_init (GstGSMDec * klass);
static void gst_gsmdec_init (GstGSMDec * gsmdec);
-static void gst_gsmdec_chain (GstPad * pad, GstData * _data);
+static GstFlowReturn gst_gsmdec_chain (GstPad * pad, GstBuffer * buffer);
static GstElementClass *parent_class = NULL;
@@ -143,89 +143,67 @@ gst_gsmdec_init (GstGSMDec * gsmdec)
gsmdec->next_of = 0;
}
-static void
-gst_gsmdec_chain (GstPad * pad, GstData * _data)
+static GstFlowReturn
+gst_gsmdec_chain (GstPad * pad, GstBuffer * buf)
{
GstGSMDec *gsmdec;
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD (pad));
- g_return_if_fail (_data != NULL);
-
gsmdec = GST_GSMDEC (gst_pad_get_parent (pad));
- if (GST_IS_EVENT (_data)) {
- GstEvent *event = GST_EVENT (_data);
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_EOS:{
- gst_element_set_eos (GST_ELEMENT (gsmdec));
- gst_pad_push (gsmdec->srcpad, _data);
- break;
- }
- case GST_EVENT_DISCONTINUOUS:{
- /* drop the discontinuity */
- break;
- }
- default:{
- gst_pad_event_default (pad, event);
- break;
- }
- }
- return;
- } else if (GST_IS_BUFFER (_data)) {
- GstBuffer *buf = GST_BUFFER (_data);
- gsm_byte *data = (gsm_byte *) GST_BUFFER_DATA (buf);
- guint size = GST_BUFFER_SIZE (buf);
-
- if (gsmdec->bufsize && (gsmdec->bufsize + size >= 33)) {
- GstBuffer *outbuf;
-
- memcpy (gsmdec->buffer + gsmdec->bufsize, data,
- (33 - gsmdec->bufsize) * sizeof (gsm_byte));
-
- outbuf = gst_buffer_new_and_alloc (160 * sizeof (gsm_signal));
- GST_BUFFER_TIMESTAMP (outbuf) = gsmdec->next_ts;
- GST_BUFFER_DURATION (outbuf) = 20 * GST_MSECOND;
- GST_BUFFER_OFFSET (outbuf) = gsmdec->next_of;
- GST_BUFFER_OFFSET_END (outbuf) = gsmdec->next_of + 160 - 1;
- gsmdec->next_ts += 20 * GST_MSECOND;
- gsmdec->next_of += 160;
-
- gsm_decode (gsmdec->state, gsmdec->buffer,
- (gsm_signal *) GST_BUFFER_DATA (outbuf));
-
- gst_pad_push (gsmdec->srcpad, GST_DATA (outbuf));
-
- size -= (33 - gsmdec->bufsize);
- data += (33 - gsmdec->bufsize);
- gsmdec->bufsize = 0;
- }
-
- while (size >= 33) {
- GstBuffer *outbuf;
-
- outbuf = gst_buffer_new_and_alloc (160 * sizeof (gsm_signal));
- GST_BUFFER_TIMESTAMP (outbuf) = gsmdec->next_ts;
- GST_BUFFER_DURATION (outbuf) = 20 * GST_MSECOND;
- GST_BUFFER_OFFSET (outbuf) = gsmdec->next_of;
- GST_BUFFER_OFFSET_END (outbuf) = gsmdec->next_of + 160 - 1;
- gsmdec->next_ts += 20 * GST_MSECOND;
- gsmdec->next_of += 160;
-
- gsm_decode (gsmdec->state, data, (gsm_signal *) GST_BUFFER_DATA (outbuf));
- gst_pad_push (gsmdec->srcpad, GST_DATA (outbuf));
-
- size -= 33;
- data += 33;
- }
-
- if (size) {
- memcpy (gsmdec->buffer + gsmdec->bufsize, data, size * sizeof (gsm_byte));
- gsmdec->bufsize += size;
- }
-
- gst_buffer_unref (buf);
- return;
+ gsm_byte *data = (gsm_byte *) GST_BUFFER_DATA (buf);
+ guint size = GST_BUFFER_SIZE (buf);
+
+ if (gsmdec->bufsize && (gsmdec->bufsize + size >= 33)) {
+ GstBuffer *outbuf;
+
+ memcpy (gsmdec->buffer + gsmdec->bufsize, data,
+ (33 - gsmdec->bufsize) * sizeof (gsm_byte));
+
+ outbuf = gst_buffer_new_and_alloc (160 * sizeof (gsm_signal));
+ GST_BUFFER_TIMESTAMP (outbuf) = gsmdec->next_ts;
+ GST_BUFFER_DURATION (outbuf) = 20 * GST_MSECOND;
+ GST_BUFFER_OFFSET (outbuf) = gsmdec->next_of;
+ GST_BUFFER_OFFSET_END (outbuf) = gsmdec->next_of + 160 - 1;
+ gst_buffer_set_caps (outbuf, gst_pad_get_caps (gsmdec->srcpad));
+
+ gsmdec->next_ts += 20 * GST_MSECOND;
+ gsmdec->next_of += 160;
+
+ gsm_decode (gsmdec->state, gsmdec->buffer,
+ (gsm_signal *) GST_BUFFER_DATA (outbuf));
+
+ gst_pad_push (gsmdec->srcpad, outbuf);
+
+ size -= (33 - gsmdec->bufsize);
+ data += (33 - gsmdec->bufsize);
+ gsmdec->bufsize = 0;
}
+
+ while (size >= 33) {
+ GstBuffer *outbuf;
+
+ outbuf = gst_buffer_new_and_alloc (160 * sizeof (gsm_signal));
+ GST_BUFFER_TIMESTAMP (outbuf) = gsmdec->next_ts;
+ GST_BUFFER_DURATION (outbuf) = 20 * GST_MSECOND;
+ GST_BUFFER_OFFSET (outbuf) = gsmdec->next_of;
+ GST_BUFFER_OFFSET_END (outbuf) = gsmdec->next_of + 160 - 1;
+ gst_buffer_set_caps (outbuf, gst_pad_get_caps (gsmdec->srcpad));
+
+ gsmdec->next_ts += 20 * GST_MSECOND;
+ gsmdec->next_of += 160;
+
+ gsm_decode (gsmdec->state, data, (gsm_signal *) GST_BUFFER_DATA (outbuf));
+ gst_pad_push (gsmdec->srcpad, outbuf);
+
+ size -= 33;
+ data += 33;
+ }
+
+ if (size) {
+ memcpy (gsmdec->buffer + gsmdec->bufsize, data, size * sizeof (gsm_byte));
+ gsmdec->bufsize += size;
+ }
+
+ return GST_FLOW_OK;
+
}