vc1dec: add VC-1 Advanced, Main, and Simple profile support
[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"
27 #include "gstducatimpeg4dec.h"
28 #include "gstducativc1dec.h"
30 GST_DEBUG_CATEGORY (gst_ducati_debug);
32 static gboolean
33 plugin_init (GstPlugin * plugin)
34 {
35   GST_DEBUG_CATEGORY_INIT (gst_ducati_debug, "ducati", 0, "ducati");
37   /* TODO .. find some way to reasonably detect if the corresponding
38    * codecs are actually available..
39    */
40   return gst_element_register (plugin, "ducatih264dec", GST_RANK_PRIMARY, GST_TYPE_DUCATIH264DEC) &&
41       gst_element_register (plugin, "ducatimpeg4dec", GST_RANK_PRIMARY, GST_TYPE_DUCATIMPEG4DEC) &&
42       gst_element_register (plugin, "ducativc1dec", GST_RANK_PRIMARY, GST_TYPE_DUCATIVC1DEC);
43 }
45 void *
46 gst_ducati_alloc_1d (gint sz)
47 {
48   MemAllocBlock block = {
49     .pixelFormat = PIXEL_FMT_PAGE,
50     .dim.len = sz,
51   };
52   return MemMgr_Alloc (&block, 1);
53 }
55 void *
56 gst_ducati_alloc_2d (gint width, gint height)
57 {
58   MemAllocBlock block[] = { {
59           .pixelFormat = PIXEL_FMT_8BIT,
60           .dim = {.area = {
61                       .width = width,
62                       .height = height,
63                   }}
64       }, {
65         .pixelFormat = PIXEL_FMT_16BIT,
66         .dim = {.area = {
67                     .width = width,
68                     .height = height / 2,
69                 }}
70       }
71   };
72   return MemMgr_Alloc (block, 2);
73 }
75 XDAS_Int16
76 gst_ducati_get_mem_type (SSPtr paddr)
77 {
78   if ((0x60000000 <= paddr) && (paddr < 0x68000000))
79     return XDM_MEMTYPE_TILED8;
80   if ((0x68000000 <= paddr) && (paddr < 0x70000000))
81     return XDM_MEMTYPE_TILED16;
82   if ((0x70000000 <= paddr) && (paddr < 0x78000000))
83     return XDM_MEMTYPE_TILED32;
84   if ((0x78000000 <= paddr) && (paddr < 0x80000000))
85     return XDM_MEMTYPE_RAW;
86   return -1;
87 }
89 /* PACKAGE: this is usually set by autotools depending on some _INIT macro
90  * in configure.ac and then written into and defined in config.h, but we can
91  * just set it ourselves here in case someone doesn't use autotools to
92  * compile this code. GST_PLUGIN_DEFINE needs PACKAGE to be defined.
93  */
94 #ifndef PACKAGE
95 #  define PACKAGE "ducati"
96 #endif
98 GST_PLUGIN_DEFINE (
99     GST_VERSION_MAJOR,
100     GST_VERSION_MINOR,
101     "ducati",
102     "Hardware accellerated codecs for OMAP4",
103     plugin_init,
104     VERSION,
105     "LGPL",
106     "GStreamer",
107     "http://gstreamer.net/"