+/* GStreamer PCM/A-Law conversions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/audio/audio.h>
+
#include "alaw-encode.h"
#include "alaw-decode.h"
-static GstElementDetails alawenc_details = {
- "PCM to A Law conversion",
- "Filter/Effect",
- "Convert 16bit PCM to 8bit A law",
- VERSION,
- "Zaheer Merali <zaheer@bellworldwide.net>",
- "(C) 2001"
-};
+GstStaticPadTemplate alaw_dec_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) [ 8000, 192000 ], " "channels = (int) [ 1, 2 ]")
+ );
-static GstElementDetails alawdec_details = {
- "A Law to PCM conversion",
- "Filter/Effect",
- "Convert 8bit A law to 16bit PCM",
- VERSION,
- "Zaheer Merali <zaheer@bellworldwide.net>",
- "(C) 2001"
-};
-
-static GstCaps*
-alaw_factory (void)
-{
- return
- gst_caps_new (
- "test_src",
- "audio/raw",
- gst_props_new (
- "format", GST_PROPS_STRING ("int"),
- "law", GST_PROPS_INT (2),
- "width", GST_PROPS_INT(8),
- "depth", GST_PROPS_INT(8),
- "signed", GST_PROPS_BOOLEAN(FALSE),
- NULL));
-}
+GstStaticPadTemplate alaw_dec_sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-alaw, "
+ "rate = [ 8000 , 192000 ], " "channels = [ 1 , 2 ]")
+ );
-static GstCaps*
-linear_factory (void)
-{
- return
- gst_caps_new (
- "test_sink",
- "audio/raw",
- gst_props_new (
- "format", GST_PROPS_STRING ("int"),
- "law", GST_PROPS_INT(0),
- "width", GST_PROPS_INT(16),
- "depth", GST_PROPS_INT(16),
- "signed", GST_PROPS_BOOLEAN(TRUE),
- NULL));
-}
+GstStaticPadTemplate alaw_enc_sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) [ 8000, 192000 ], " "channels = (int) [ 1, 2 ]")
+ );
-GstPadTemplate *alawenc_src_template, *alawenc_sink_template;
-GstPadTemplate *alawdec_src_template, *alawdec_sink_template;
+GstStaticPadTemplate alaw_enc_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-alaw, "
+ "rate = [ 8000 , 192000 ], " "channels = [ 1 , 2 ]")
+ );
static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
- GstElementFactory *alawenc_factory, *alawdec_factory;
- GstCaps* alaw_caps, *linear_caps;
-
- alawenc_factory = gst_element_factory_new("alawencode",GST_TYPE_ALAWENC,
- &alawenc_details);
- g_return_val_if_fail(alawenc_factory != NULL, FALSE);
- alawdec_factory = gst_element_factory_new("alawdecode",GST_TYPE_ALAWDEC,
- &alawdec_details);
- g_return_val_if_fail(alawdec_factory != NULL, FALSE);
-
- alaw_caps = alaw_factory ();
- linear_caps = linear_factory ();
-
- alawenc_src_template = gst_pad_template_new ("src",GST_PAD_SRC,GST_PAD_ALWAYS,alaw_caps, NULL);
- alawenc_sink_template = gst_pad_template_new ("sink",GST_PAD_SINK,GST_PAD_ALWAYS,linear_caps, NULL);
- gst_element_factory_add_pad_template (alawenc_factory, alawenc_src_template);
- gst_element_factory_add_pad_template (alawenc_factory, alawenc_sink_template);
-
- alawdec_src_template = gst_pad_template_new ("src",GST_PAD_SRC,GST_PAD_ALWAYS,linear_caps, NULL);
- alawdec_sink_template = gst_pad_template_new ("sink",GST_PAD_SINK,GST_PAD_ALWAYS,alaw_caps, NULL);
-
- gst_element_factory_add_pad_template (alawdec_factory, alawdec_src_template);
- gst_element_factory_add_pad_template (alawdec_factory, alawdec_sink_template);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (alawenc_factory));
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (alawdec_factory));
+ if (!gst_element_register (plugin, "alawenc",
+ GST_RANK_PRIMARY, GST_TYPE_ALAW_ENC) ||
+ !gst_element_register (plugin, "alawdec",
+ GST_RANK_PRIMARY, GST_TYPE_ALAW_DEC))
+ return FALSE;
return TRUE;
}
-GstPluginDesc plugin_desc = {
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "alaw",
- plugin_init
-};
-
+/* FIXME 0.11: merge alaw and mulaw into one plugin? */
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ alaw,
+ "ALaw audio conversion routines",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)