initial commit
[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 <gst/gst.h>
26 #include "gstducatih264dec.h"
28 GST_DEBUG_CATEGORY (gst_ducati_debug);
30 static gboolean
31 plugin_init (GstPlugin * plugin)
32 {
33   GST_DEBUG_CATEGORY_INIT (gst_ducati_debug, "ducati", 0, "ducati");
35   return gst_element_register (plugin, "ducatih264dec", GST_RANK_PRIMARY,
36       GST_TYPE_DUCATIH264DEC);
37 }
39 void *
40 gst_ducati_alloc_1d (gint sz)
41 {
42   MemAllocBlock block = {
43     .pixelFormat = PIXEL_FMT_PAGE,
44     .dim.len = sz,
45   };
46   return MemMgr_Alloc (&block, 1);
47 }
49 void *
50 gst_ducati_alloc_2d (gint width, gint height)
51 {
52   MemAllocBlock block[] = { {
53           .pixelFormat = PIXEL_FMT_8BIT,
54           .dim = {.area = {
55                       .width = width,
56                       .height = height,
57                   }}
58       }, {
59         .pixelFormat = PIXEL_FMT_16BIT,
60         .dim = {.area = {
61                     .width = width,
62                     .height = height / 2,
63                 }}
64       }
65   };
66   return MemMgr_Alloc (block, 2);
67 }
69 XDAS_Int16
70 gst_ducati_get_mem_type (SSPtr paddr)
71 {
72   if ((0x60000000 <= paddr) && (paddr < 0x68000000))
73     return XDM_MEMTYPE_TILED8;
74   if ((0x68000000 <= paddr) && (paddr < 0x70000000))
75     return XDM_MEMTYPE_TILED16;
76   if ((0x70000000 <= paddr) && (paddr < 0x78000000))
77     return XDM_MEMTYPE_TILED32;
78   if ((0x78000000 <= paddr) && (paddr < 0x80000000))
79     return XDM_MEMTYPE_RAW;
80   return -1;
81 }
83 /* PACKAGE: this is usually set by autotools depending on some _INIT macro
84  * in configure.ac and then written into and defined in config.h, but we can
85  * just set it ourselves here in case someone doesn't use autotools to
86  * compile this code. GST_PLUGIN_DEFINE needs PACKAGE to be defined.
87  */
88 #ifndef PACKAGE
89 #  define PACKAGE "ducati"
90 #endif
92 GST_PLUGIN_DEFINE (
93     GST_VERSION_MAJOR,
94     GST_VERSION_MINOR,
95     "ducati",
96     "Hardware accellerated codecs for OMAP4",
97     plugin_init,
98     VERSION,
99     "LGPL",
100     "GStreamer",
101     "http://gstreamer.net/"