Tizen 2.0 Release
[framework/multimedia/gstreamer-vaapi.git] / gst-libs / gst / vaapi / gstvaapiobject.h
1 /*
2  *  gstvaapiobject.h - Base VA object
3  *
4  *  Copyright (C) 2010-2011 Splitted-Desktop Systems
5  *
6  *  This library is free software; you can redistribute it and/or
7  *  modify it under the terms of the GNU Lesser General Public License
8  *  as published by the Free Software Foundation; either version 2.1
9  *  of the License, or (at your option) any later version.
10  *
11  *  This library is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  *  Lesser General Public License for more details.
15  *
16  *  You should have received a copy of the GNU Lesser General Public
17  *  License along with this library; if not, write to the Free
18  *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  *  Boston, MA 02110-1301 USA
20  */
21
22 #ifndef GST_VAAPI_OBJECT_H
23 #define GST_VAAPI_OBJECT_H
24
25 #include <gst/vaapi/gstvaapitypes.h>
26 #include <gst/vaapi/gstvaapidisplay.h>
27
28 G_BEGIN_DECLS
29
30 #define GST_VAAPI_TYPE_OBJECT \
31     (gst_vaapi_object_get_type())
32
33 #define GST_VAAPI_OBJECT(obj)                           \
34     (G_TYPE_CHECK_INSTANCE_CAST((obj),                  \
35                                 GST_VAAPI_TYPE_OBJECT,  \
36                                 GstVaapiObject))
37
38 #define GST_VAAPI_OBJECT_CLASS(klass)                   \
39     (G_TYPE_CHECK_CLASS_CAST((klass),                   \
40                              GST_VAAPI_TYPE_OBJECT,     \
41                              GstVaapiObjectClass))
42
43 #define GST_VAAPI_IS_OBJECT(obj) \
44     (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_VAAPI_TYPE_OBJECT))
45
46 #define GST_VAAPI_IS_OBJECT_CLASS(klass) \
47     (G_TYPE_CHECK_CLASS_TYPE((klass), GST_VAAPI_TYPE_OBJECT))
48
49 #define GST_VAAPI_OBJECT_GET_CLASS(obj)                 \
50     (G_TYPE_INSTANCE_GET_CLASS((obj),                   \
51                                GST_VAAPI_TYPE_OBJECT,   \
52                                GstVaapiObjectClass))
53
54 typedef struct _GstVaapiObject                  GstVaapiObject;
55 typedef struct _GstVaapiObjectPrivate           GstVaapiObjectPrivate;
56 typedef struct _GstVaapiObjectClass             GstVaapiObjectClass;
57
58 /**
59  * GstVaapiObject:
60  *
61  * VA object base.
62  */
63 struct _GstVaapiObject {
64     /*< private >*/
65     GObject parent_instance;
66
67     GstVaapiObjectPrivate *priv;
68 };
69
70 /**
71  * GstVaapiObjectClass:
72  * @destroy: signal class handler for #GstVaapiObject::destroy
73  *
74  * VA object base class.
75  */
76 struct _GstVaapiObjectClass {
77     /*< private >*/
78     GObjectClass parent_class;
79
80     /*< public >*/
81     void (*destroy)(GstVaapiObject *oject);
82 };
83
84 GType
85 gst_vaapi_object_get_type(void) G_GNUC_CONST;
86
87 GstVaapiDisplay *
88 gst_vaapi_object_get_display(GstVaapiObject *object);
89
90 void
91 gst_vaapi_object_lock_display(GstVaapiObject *object);
92
93 void
94 gst_vaapi_object_unlock_display(GstVaapiObject *object);
95
96 GstVaapiID
97 gst_vaapi_object_get_id(GstVaapiObject *object);
98
99 G_END_DECLS
100
101 #endif /* GST_VAAPI_OBJECT_H */