playbin2 uses ducatijpegdec to play mjpeg streams
[glsdk/gst-plugin-ducati.git] / src / gstducati.c
1 /*
2  * GStreamer
3  * Copyright (c) 2010, Texas Instruments Incorporated
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation
8  * version 2.1 of the License.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18  */
20 #ifdef HAVE_CONFIG_H
21 #  include <config.h>
22 #endif
24 #include "gstducati.h"
25 #include "gstducatih264dec.h"
26 #include "gstducatimpeg4dec.h"
27 #include "gstducatimpeg2dec.h"
28 #include "gstducativc1dec.h"
29 #include "gstducatijpegdec.h"
30 #include "gstducatih264enc.h"
31 #include "gstducatimpeg4enc.h"
33 GST_DEBUG_CATEGORY (gst_ducati_debug);
35 void
36 gst_ducati_set_generic_error_strings (const char *strings[])
37 {
38 #ifndef GST_DISABLE_GST_DEBUG
39   strings[XDM_PARAMSCHANGE] = "sequence parameters change";
40   strings[XDM_APPLIEDCONCEALMENT] = "applied concealment";
41   strings[XDM_INSUFFICIENTDATA] = "insufficient data";
42   strings[XDM_CORRUPTEDDATA] = "corrupted data";
43   strings[XDM_CORRUPTEDHEADER] = "corrupted header";
44   strings[XDM_UNSUPPORTEDINPUT] = "unsupported input";
45   strings[XDM_UNSUPPORTEDPARAM] = "unsupported param";
46   strings[XDM_FATALERROR] = "fatal";
47 #endif
48 }
50 #ifndef GST_DISABLE_GST_DEBUG
51 void
52 gst_ducati_log_extended_error_info (uint32_t error, const char *strings[])
53 {
54   int bit = 0;
55   while (error) {
56     if (error & 1) {
57       GST_ERROR ("Bit %d (%08x): %s", bit, 1 << bit,
58           strings[bit] ? strings[bit] : "unknown");
59     }
60     error >>= 1;
61     ++bit;
62   }
63 }
64 #endif
66 static gboolean
67 plugin_init (GstPlugin * plugin)
68 {
69   GST_DEBUG_CATEGORY_INIT (gst_ducati_debug, "ducati", 0, "ducati");
71   return gst_element_register (plugin, "ducatih264dec", GST_RANK_PRIMARY,
72       GST_TYPE_DUCATIH264DEC) &&
73       gst_element_register (plugin, "ducatimpeg4dec", GST_RANK_PRIMARY,
74       GST_TYPE_DUCATIMPEG4DEC) &&
75       gst_element_register (plugin, "ducatimpeg2dec", GST_RANK_PRIMARY,
76       GST_TYPE_DUCATIMPEG2DEC) &&
77       gst_element_register (plugin, "ducativc1dec", GST_RANK_PRIMARY,
78       GST_TYPE_DUCATIVC1DEC) &&
79       gst_element_register (plugin, "ducatijpegdec", GST_RANK_PRIMARY + 1,
80       GST_TYPE_DUCATIJPEGDEC) &&
81       gst_element_register (plugin, "ducatih264enc", GST_RANK_PRIMARY + 1,
82       GST_TYPE_DUCATIH264ENC) &&
83       gst_element_register (plugin, "ducatimpeg4enc", GST_RANK_PRIMARY + 1,
84       GST_TYPE_DUCATIMPEG4ENC);
85 }
87 /* PACKAGE: this is usually set by autotools depending on some _INIT macro
88  * in configure.ac and then written into and defined in config.h, but we can
89  * just set it ourselves here in case someone doesn't use autotools to
90  * compile this code. GST_PLUGIN_DEFINE needs PACKAGE to be defined.
91  */
92 #ifndef PACKAGE
93 #  define PACKAGE "ducati"
94 #endif
96 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, "ducati",
97     "Hardware accelerated codecs for OMAP4",
98     plugin_init, VERSION, "LGPL", "GStreamer", "http://gstreamer.net/")