Ported GSM Encoder to GStreamer 0.9
authorFlavio Oliveira <flavio.oliveira@indt.org.br>
Fri, 2 Sep 2005 20:21:17 +0000 (20:21 +0000)
committerFlavio Oliveira <flavio.oliveira@indt.org.br>
Fri, 2 Sep 2005 20:21:17 +0000 (20:21 +0000)
Original commit message from CVS:
Ported GSM Encoder to GStreamer 0.9

ChangeLog
PORTED_09
configure.ac
ext/Makefile.am
ext/gsm/Makefile.am
ext/gsm/gstgsm.c
ext/gsm/gstgsmenc.c

index b35478961e66994ad393db3dc6135f77ca5b57a7..d683895f47a71e137daefa9e0b8f2e72dbab33b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-09-02  Flavio Oliveira  <flavio.oliveira@indt.org.br>
+
+       * configure.ac:
+       * ext/Makefile.am:
+       * ext/gsm/Makefile.am:
+       * ext/gsm/gstgsm.c: 
+       * ext/gsm/gstgsmenc.c: Ported GSM Encoder to GStreamer 0.9.
+       * PORTED_09:
+
 2005-08-31  Flavio Oliveira  <flavio.oliveira@indt.org.br>
 
        * configure.ac:
index 55a12b75cbf6f2e026c85edb8e5dcb923045451e..dd5b3e78d3b07cf05e38d6fdf50de0a07ef0cbe2 100644 (file)
--- a/PORTED_09
+++ b/PORTED_09
@@ -1,8 +1,9 @@
 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):
-faac (fcarvalho)
-wavenc (fcarvalho)
+gsmenc  (fcarvalho)
+faac    (fcarvalho)
+wavenc  (fcarvalho)
 effectv (wim)
 mad    (wim)
 videofilter (wim)
index 8c0e9fa7e5e28998efd39c69c1e5c620301dc5de..19d95513c98b05ea6f74cdccc3e3a2c540273f47 100644 (file)
@@ -363,6 +363,19 @@ return 0;
   AC_SUBST(FAAD_LIBS)
 ])
 
+dnl *** gsm ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
+GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
+  GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
+  if test $HAVE_GSM != "yes"; then
+    GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
+    if test $HAVE_GSM = "yes"; then 
+      AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
+    fi
+  fi
+  AC_SUBST(GSM_LIBS)
+])
+
 dnl also add builddir include for enumtypes and marshal
 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GST_ERROR"
 
@@ -424,6 +437,7 @@ sys/Makefile
 ext/Makefile
 ext/faac/Makefile
 ext/faad/Makefile
+ext/gsm/Makefile
 common/Makefile
 common/m4/Makefile
 m4/Makefile
index b2a039eb256aa1481ee7ac93ab6bc276f549bbf1..2219f3d37ac9733353e1a504f2929d6b21f81cf6 100644 (file)
@@ -76,11 +76,11 @@ endif
 ## FESTIVAL_DIR=
 ## endif
 
-if USE_GSM
-GSM_DIR=gsm
-else
+if USE_GSM
+GSM_DIR=gsm
+else
 GSM_DIR=
-endif
+endif
 
 # if USE_HERMES
 # HERMES_DIR=hermes
@@ -261,6 +261,7 @@ DIST_SUBDIRS=\
        amrnb \
        faac \
        faad \
+       gsm \
        lame \
        mad \
        mpeg2dec \
index a3779668e6c1863a9931f32e13178e109ab7cadd..6782a2420e12c3d6035c5dccdce75b63b62e2929 100644 (file)
@@ -1,15 +1,9 @@
-
 plugin_LTLIBRARIES = libgstgsm.la
 
-libgstgsm_la_SOURCES = gstgsm.c gstgsmdec.c gstgsmenc.c
-libgstgsm_la_CFLAGS = $(GST_CFLAGS)
-libgstgsm_la_LIBADD = $(GSM_LIBS)
+libgstgsm_la_SOURCES = gstgsm.c gstgsmenc.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 gstgsmdec.h 
-
-#check_PROGRAMS = test
-
-#test_CFLAGS = $(GSM_CFLAGS)
-#test_LDADD = $(GSM_LIBS) $(top_srcdir)/gst/libgst.la
-#test_SOURCES = test.c
+noinst_HEADERS = gstgsmenc.h
index 1f536e2d30ce7b017691cbb49cd8be23017d4f24..c629c2360cb13318fe9fd079cf44b35ef6cee802 100644 (file)
@@ -29,10 +29,11 @@ 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;
 }
 
index f15efffb5caa56a4d3da8e9ec0ae724c2aed9e9f..7911b47d8d53f88e63474f23bfc3a879c912ae49 100644 (file)
@@ -51,7 +51,7 @@ static void gst_gsmenc_base_init (gpointer g_class);
 static void gst_gsmenc_class_init (GstGSMEnc * klass);
 static void gst_gsmenc_init (GstGSMEnc * gsmenc);
 
-static void gst_gsmenc_chain (GstPad * pad, GstData * _data);
+static GstFlowReturn gst_gsmenc_chain (GstPad * pad, GstBuffer * buf);
 
 static GstElementClass *parent_class = NULL;
 static guint gst_gsmenc_signals[LAST_SIGNAL] = { 0 };
@@ -148,27 +148,28 @@ gst_gsmenc_init (GstGSMEnc * gsmenc)
   gsmenc->next_ts = 0;
 }
 
-static void
-gst_gsmenc_chain (GstPad * pad, GstData * _data)
+static GstFlowReturn
+gst_gsmenc_chain (GstPad * pad, GstBuffer * buf)
 {
   GstGSMEnc *gsmenc;
 
+/*
   g_return_if_fail (pad != NULL);
   g_return_if_fail (GST_IS_PAD (pad));
   g_return_if_fail (_data != NULL);
-
+*/
   gsmenc = GST_GSMENC (GST_OBJECT_PARENT (pad));
 
-  if (GST_IS_EVENT (_data)) {
-    GstEvent *event = GST_EVENT (_data);
+  if (GST_IS_EVENT (buf)) {
+    GstEvent *event = GST_EVENT (buf);
 
     switch (GST_EVENT_TYPE (event)) {
       case GST_EVENT_EOS:{
-        gst_element_set_eos (GST_ELEMENT (gsmenc));
-        gst_pad_push (gsmenc->srcpad, _data);
+        gst_pad_push_event (gsmenc->srcpad, gst_event_new_eos ());
+        gst_pad_push (gsmenc->srcpad, buf);
         break;
       }
-      case GST_EVENT_DISCONTINUOUS:{
+      case GST_EVENT_NEWSEGMENT:{
         /* drop the discontinuity */
         break;
       }
@@ -177,9 +178,8 @@ gst_gsmenc_chain (GstPad * pad, GstData * _data)
         break;
       }
     }
-    return;
-  } else if (GST_IS_BUFFER (_data)) {
-    GstBuffer *buf = GST_BUFFER (_data);
+    return GST_FLOW_OK;
+  } else if (GST_IS_BUFFER (buf)) {
     gsm_signal *data;
     guint size;
 
@@ -200,7 +200,7 @@ gst_gsmenc_chain (GstPad * pad, GstData * _data)
       gsm_encode (gsmenc->state, gsmenc->buffer,
           (gsm_byte *) GST_BUFFER_DATA (outbuf));
 
-      gst_pad_push (gsmenc->srcpad, GST_DATA (outbuf));
+      gst_pad_push (gsmenc->srcpad, outbuf);
 
       size -= (160 - gsmenc->bufsize);
       data += (160 - gsmenc->bufsize);
@@ -217,7 +217,7 @@ gst_gsmenc_chain (GstPad * pad, GstData * _data)
 
       gsm_encode (gsmenc->state, data, (gsm_byte *) GST_BUFFER_DATA (outbuf));
 
-      gst_pad_push (gsmenc->srcpad, GST_DATA (outbuf));
+      gst_pad_push (gsmenc->srcpad, outbuf);
 
       size -= 160;
       data += 160;
@@ -229,7 +229,8 @@ gst_gsmenc_chain (GstPad * pad, GstData * _data)
       gsmenc->bufsize += size;
     }
 
-    gst_buffer_unref (buf);
-    return;
+    /*gst_buffer_unref (buf); */
+    return GST_FLOW_OK;
   }
+  return GST_FLOW_OK;
 }