gst-indent
[platform/upstream/gst-plugins-good.git] / gst / law / alaw-encode.c
index cc86537..052f2e0 100644 (file)
@@ -19,6 +19,9 @@
  * Boston, MA 02111-1307, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 #include <gst/gst.h>
 #include "alaw-encode.h"
 
@@ -27,29 +30,33 @@ extern GstPadTemplate *alawenc_src_template, *alawenc_sink_template;
 /* elementfactory information */
 static GstElementDetails alawenc_details = {
   "PCM to A Law conversion",
-  "Codec/Audio/Encoder",
+  "Codec/Encoder/Audio",
   "Convert 16bit PCM to 8bit A law",
   "Zaheer Merali <zaheer@bellworldwide.net>"
 };
 
 /* Stereo signals and args */
-enum {
+enum
+{
   /* FILL ME */
   LAST_SIGNAL
 };
 
-enum {
+enum
+{
   ARG_0
 };
 
-static void            gst_alawenc_class_init          (GstALawEncClass *klass);
-static void            gst_alawenc_base_init           (GstALawEncClass *klass);
-static void            gst_alawenc_init                        (GstALawEnc *alawenc);
+static void gst_alawenc_class_init (GstALawEncClass * klass);
+static void gst_alawenc_base_init (GstALawEncClass * klass);
+static void gst_alawenc_init (GstALawEnc * alawenc);
 
-static void            gst_alawenc_set_property                        (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void            gst_alawenc_get_property                        (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
+static void gst_alawenc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_alawenc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
 
-static void            gst_alawenc_chain                       (GstPad *pad, GstData *_data);
+static void gst_alawenc_chain (GstPad * pad, GstData * _data);
 
 /*
  * s16_to_alaw() - Convert a 16-bit linear PCM value to 8-bit A-law
@@ -71,103 +78,108 @@ static void               gst_alawenc_chain                       (GstPad *pad, GstData *_data);
  * John Wiley & Sons, pps 98-111 and 472-476.
  */
 
-static inline gint val_seg(gint val)
+static inline gint
+val_seg (gint val)
 {
-       gint r = 1;
-       val >>= 8;
-       if (val & 0xf0) {
-               val >>= 4;
-               r += 4;
-       }
-       if (val & 0x0c) {
-               val >>= 2;
-               r += 2;
-       }
-       if (val & 0x02)
-               r += 1;
-       return r;
+  gint r = 1;
+
+  val >>= 8;
+  if (val & 0xf0) {
+    val >>= 4;
+    r += 4;
+  }
+  if (val & 0x0c) {
+    val >>= 2;
+    r += 2;
+  }
+  if (val & 0x02)
+    r += 1;
+  return r;
 }
 
-static guint8 s16_to_alaw(gint pcm_val)
+static guint8
+s16_to_alaw (gint pcm_val)
 {
-       gint            seg;
-       guint8  mask;
-       guint8  aval;
-
-       if (pcm_val >= 0) {
-               mask = 0xD5;
-       } else {
-               mask = 0x55;
-               pcm_val = -pcm_val;
-               if (pcm_val > 0x7fff)
-                       pcm_val = 0x7fff;
-       }
-
-       if (pcm_val < 256)
-               aval = pcm_val >> 4;
-       else {
-               /* Convert the scaled magnitude to segment number. */
-               seg = val_seg(pcm_val);
-               aval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0x0f);
-       }
-       return aval ^ mask;
+  gint seg;
+  guint8 mask;
+  guint8 aval;
+
+  if (pcm_val >= 0) {
+    mask = 0xD5;
+  } else {
+    mask = 0x55;
+    pcm_val = -pcm_val;
+    if (pcm_val > 0x7fff)
+      pcm_val = 0x7fff;
+  }
+
+  if (pcm_val < 256)
+    aval = pcm_val >> 4;
+  else {
+    /* Convert the scaled magnitude to segment number. */
+    seg = val_seg (pcm_val);
+    aval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0x0f);
+  }
+  return aval ^ mask;
 }
 
 static GstElementClass *parent_class = NULL;
+
 /*static guint gst_stereo_signals[LAST_SIGNAL] = { 0 }; */
 
 static GstPadLinkReturn
-alawenc_link (GstPad *pad, GstCaps *caps)
+alawenc_link (GstPad * pad, const GstCaps * caps)
 {
-  GstCapstempcaps;
+  GstCaps *tempcaps;
   gint rate, channels;
-  
-  GstALawEnc* alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
-  
-  if (!GST_CAPS_IS_FIXED (caps))
-    return GST_PAD_LINK_DELAYED;  
-  
-  if (!gst_caps_get (caps, "rate", &rate,
-                           "channels", &channels,
-                           NULL))
-    return GST_PAD_LINK_DELAYED;
-  
-  tempcaps = GST_CAPS_NEW (
-             "alawenc_src_caps",
-             "audio/x-alaw",
-          "depth",    GST_PROPS_INT (8),
-          "width",    GST_PROPS_INT (8),
-          "signed",   GST_PROPS_BOOLEAN (FALSE),
-          "rate",     GST_PROPS_INT (rate),
-          "channels", GST_PROPS_INT (channels),
-        NULL);
-  
+  GstStructure *structure;
+  gboolean ret;
+
+  GstALawEnc *alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  ret = gst_structure_get_int (structure, "rate", &rate);
+  ret &= gst_structure_get_int (structure, "channels", &channels);
+
+  if (!ret)
+    return GST_PAD_LINK_REFUSED;
+
+  tempcaps = gst_caps_new_simple ("audio/x-alaw",
+      "depth", G_TYPE_INT, 8,
+      "width", G_TYPE_INT, 8,
+      "signed", G_TYPE_BOOLEAN, FALSE,
+      "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL);
+
   return gst_pad_try_set_caps (alawenc->srcpad, tempcaps);
-}              
+}
 
 GType
-gst_alawenc_get_type(void) {
+gst_alawenc_get_type (void)
+{
   static GType alawenc_type = 0;
 
   if (!alawenc_type) {
     static const GTypeInfo alawenc_info = {
-      sizeof(GstALawEncClass),
-      (GBaseInitFunc)gst_alawenc_base_init,
+      sizeof (GstALawEncClass),
+      (GBaseInitFunc) gst_alawenc_base_init,
       NULL,
-      (GClassInitFunc)gst_alawenc_class_init,
+      (GClassInitFunc) gst_alawenc_class_init,
       NULL,
       NULL,
-      sizeof(GstALawEnc),
+      sizeof (GstALawEnc),
       0,
-      (GInstanceInitFunc)gst_alawenc_init,
+      (GInstanceInitFunc) gst_alawenc_init,
     };
-    alawenc_type = g_type_register_static(GST_TYPE_ELEMENT, "GstALawEnc", &alawenc_info, 0);
+    alawenc_type =
+       g_type_register_static (GST_TYPE_ELEMENT, "GstALawEnc", &alawenc_info,
+       0);
   }
   return alawenc_type;
 }
 
 static void
-gst_alawenc_base_init (GstALawEncClass *klass)
+gst_alawenc_base_init (GstALawEncClass * klass)
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
@@ -177,74 +189,76 @@ gst_alawenc_base_init (GstALawEncClass *klass)
 }
 
 static void
-gst_alawenc_class_init (GstALawEncClass *klass)
+gst_alawenc_class_init (GstALawEncClass * klass)
 {
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
 
-  gobject_class = (GObjectClass*)klass;
-  gstelement_class = (GstElementClass*)klass;
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
 
-  parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+  parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
 
   gobject_class->set_property = gst_alawenc_set_property;
   gobject_class->get_property = gst_alawenc_get_property;
 }
 
 static void
-gst_alawenc_init (GstALawEnc *alawenc)
+gst_alawenc_init (GstALawEnc * alawenc)
 {
-  alawenc->sinkpad = gst_pad_new_from_template(alawenc_sink_template,"sink");
-  alawenc->srcpad = gst_pad_new_from_template(alawenc_src_template,"src");
+  alawenc->sinkpad = gst_pad_new_from_template (alawenc_sink_template, "sink");
+  alawenc->srcpad = gst_pad_new_from_template (alawenc_src_template, "src");
   gst_pad_set_link_function (alawenc->sinkpad, alawenc_link);
 
-  gst_element_add_pad(GST_ELEMENT(alawenc),alawenc->sinkpad);
-  gst_pad_set_chain_function(alawenc->sinkpad,gst_alawenc_chain);
-  gst_element_add_pad(GST_ELEMENT(alawenc),alawenc->srcpad);
+  gst_element_add_pad (GST_ELEMENT (alawenc), alawenc->sinkpad);
+  gst_pad_set_chain_function (alawenc->sinkpad, gst_alawenc_chain);
+  gst_element_add_pad (GST_ELEMENT (alawenc), alawenc->srcpad);
 }
 
 static void
-gst_alawenc_chain (GstPad *pad,GstData *_data)
+gst_alawenc_chain (GstPad * pad, GstData * _data)
 {
   GstBuffer *buf = GST_BUFFER (_data);
   GstALawEnc *alawenc;
   gint16 *linear_data;
   guint8 *alaw_data;
-  GstBufferoutbuf;
+  GstBuffer *outbuf;
   gint i;
 
-  g_return_if_fail(pad != NULL);
-  g_return_if_fail(GST_IS_PAD(pad));
-  g_return_if_fail(buf != NULL);
+  g_return_if_fail (pad != NULL);
+  g_return_if_fail (GST_IS_PAD (pad));
+  g_return_if_fail (buf != NULL);
+
+  alawenc = GST_ALAWENC (GST_OBJECT_PARENT (pad));
+  g_return_if_fail (alawenc != NULL);
+  g_return_if_fail (GST_IS_ALAWENC (alawenc));
 
-  alawenc = GST_ALAWENC(GST_OBJECT_PARENT (pad));
-  g_return_if_fail(alawenc != NULL);
-  g_return_if_fail(GST_IS_ALAWENC(alawenc));
+  linear_data = (gint16 *) GST_BUFFER_DATA (buf);
+  outbuf = gst_buffer_new ();
+  GST_BUFFER_DATA (outbuf) =
+      (gchar *) g_new (guint8, GST_BUFFER_SIZE (buf) / 2);
+  GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf) / 2;
 
-  linear_data = (gint16 *)GST_BUFFER_DATA(buf);
-  outbuf=gst_buffer_new();
-  GST_BUFFER_DATA(outbuf) = (gchar*)g_new(guint8,GST_BUFFER_SIZE(buf)/2);
-  GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf)/2;
 
-  
-  alaw_data = (guint8*)GST_BUFFER_DATA(outbuf);
-  for (i = 0; i < GST_BUFFER_SIZE(outbuf); i++) {
+  alaw_data = (guint8 *) GST_BUFFER_DATA (outbuf);
+  for (i = 0; i < GST_BUFFER_SIZE (outbuf); i++) {
     *alaw_data = s16_to_alaw (*linear_data);
     alaw_data++;
     linear_data++;
   }
-  gst_buffer_unref(buf);
-  gst_pad_push(alawenc->srcpad,GST_DATA (outbuf));
+  gst_buffer_unref (buf);
+  gst_pad_push (alawenc->srcpad, GST_DATA (outbuf));
 }
 
 static void
-gst_alawenc_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_alawenc_set_property (GObject * object, guint prop_id, const GValue * value,
+    GParamSpec * pspec)
 {
   GstALawEnc *alawenc;
 
   /* it's not null if we got it, but it might not be ours */
-  g_return_if_fail(GST_IS_ALAWENC(object));
-  alawenc = GST_ALAWENC(object);
+  g_return_if_fail (GST_IS_ALAWENC (object));
+  alawenc = GST_ALAWENC (object);
 
   switch (prop_id) {
     default:
@@ -253,13 +267,14 @@ gst_alawenc_set_property (GObject *object, guint prop_id, const GValue *value, G
 }
 
 static void
-gst_alawenc_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_alawenc_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
 {
   GstALawEnc *alawenc;
 
   /* it's not null if we got it, but it might not be ours */
-  g_return_if_fail(GST_IS_ALAWENC(object));
-  alawenc = GST_ALAWENC(object);
+  g_return_if_fail (GST_IS_ALAWENC (object));
+  alawenc = GST_ALAWENC (object);
 
   switch (prop_id) {
     default: