Make alaw / mulaw work again.
[platform/upstream/gstreamer.git] / gst / law / mulaw.c
1 #include "mulaw-encode.h"
2 #include "mulaw-decode.h"
3
4 /* elementfactory information */
5 static GstElementDetails mulawenc_details = {
6   "PCM to Mu Law conversion",
7   "Filter/Audio/Conversion",
8   "LGPL",
9   "Convert 16bit PCM to 8bit mu law",
10   VERSION,
11   "Zaheer Merali <zaheer@bellworldwide.net>",
12   "(C) 2001"
13 };
14
15 /* elementfactory information */
16 static GstElementDetails mulawdec_details = {
17   "Mu Law to PCM conversion",
18   "Filter/Audio/Conversion",
19   "LGPL",
20   "Convert 8bit mu law to 16bit PCM",
21   VERSION,
22   "Zaheer Merali <zaheer@bellworldwide.net>",
23   "(C) 2001"
24 };
25
26 static GstCaps*
27 mulaw_factory (void)
28 {
29   return 
30     gst_caps_new (
31         "test_src",
32         "audio/raw",
33         gst_props_new (
34           "format",   GST_PROPS_STRING ("int"),
35             "law",    GST_PROPS_INT (1),
36             "width",  GST_PROPS_INT(8),
37             "depth",  GST_PROPS_INT(8),
38             "signed", GST_PROPS_BOOLEAN(FALSE),
39             NULL));
40 }
41
42 static GstCaps*
43 linear_factory (void)
44 {
45   return 
46     gst_caps_new (
47         "test_sink",
48         "audio/raw",
49         gst_props_new (
50           "format",     GST_PROPS_STRING ("int"),
51             "law",      GST_PROPS_INT(0),
52             "width",    GST_PROPS_INT(16),
53             "depth",    GST_PROPS_INT(16),
54             "signed",   GST_PROPS_BOOLEAN(TRUE),
55             "endianness",    GST_PROPS_INT(G_BYTE_ORDER),
56             NULL));
57 }
58
59 GstPadTemplate *mulawenc_src_template, *mulawenc_sink_template; 
60 GstPadTemplate *mulawdec_src_template, *mulawdec_sink_template;
61
62 static gboolean
63 plugin_init (GModule *module, GstPlugin *plugin)
64 {
65   GstElementFactory *mulawenc_factory, *mulawdec_factory;
66   GstCaps* mulaw_caps, *linear_caps;
67
68   mulawenc_factory = gst_element_factory_new("mulawenc",GST_TYPE_MULAWENC,
69                                             &mulawenc_details);
70   g_return_val_if_fail(mulawenc_factory != NULL, FALSE);
71   mulawdec_factory = gst_element_factory_new("mulawdec",GST_TYPE_MULAWDEC,
72                                             &mulawdec_details);
73   g_return_val_if_fail(mulawdec_factory != NULL, FALSE);
74   gst_element_factory_set_rank (mulawdec_factory, GST_ELEMENT_RANK_PRIMARY);
75
76   mulaw_caps = mulaw_factory ();
77   linear_caps = linear_factory ();
78  
79   mulawenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
80                                                mulaw_caps, NULL);
81   mulawenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
82                                                 linear_caps, NULL);
83
84   gst_element_factory_add_pad_template (mulawenc_factory, mulawenc_src_template);
85   gst_element_factory_add_pad_template (mulawenc_factory, mulawenc_sink_template);
86
87   mulawdec_src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
88                                                 linear_caps, NULL);
89   mulawdec_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
90                                                 mulaw_caps, NULL);
91   
92   gst_element_factory_add_pad_template (mulawdec_factory, mulawdec_src_template);
93   gst_element_factory_add_pad_template (mulawdec_factory, mulawdec_sink_template);
94
95   gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (mulawenc_factory));
96   gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (mulawdec_factory));
97
98     
99
100   return TRUE;
101 }
102
103 GstPluginDesc plugin_desc = {
104   GST_VERSION_MAJOR,
105   GST_VERSION_MINOR,
106   "mulaw",
107   plugin_init
108 };
109