kmssink: add me as author
[vjaquez-gstreamer:gst-plugins-bad.git] / sys / kms / gstkmssink.h
1 /* GStreamer
2  *
3  * Copyright (C) 2012 Texas Instruments
4  * Copyright (C) 2012 Collabora Ltd
5  *
6  * Authors:
7  *  Alessandro Decina <alessandro.decina@collabora.co.uk>
8  *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
9  *
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Library General Public
12  * License as published by the Free Software Foundation; either
13  * version 2 of the License, or (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18  * Library General Public License for more details.
19  *
20  * You should have received a copy of the GNU Library General Public
21  * License along with this library; if not, write to the
22  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23  * Boston, MA 02111-1307, USA.
24  */
25
26 #ifndef __GST_KMS_SINK_H__
27 #define __GST_KMS_SINK_H__
28
29 #include <stdint.h>
30
31 #include <xf86drm.h>
32 #include <xf86drmMode.h>
33
34 #include <gst/video/video.h>
35 #include <gst/video/gstvideosink.h>
36
37 G_BEGIN_DECLS
38 #define GST_TYPE_KMS_SINK \
39   (gst_kms_sink_get_type())
40 #define GST_KMS_SINK(obj) \
41   (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_KMS_SINK, GstKMSSink))
42 #define GST_KMS_SINK_CLASS(klass) \
43   (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_KMS_SINK, GstKMSSinkClass))
44 #define GST_IS_KMS_SINK(obj) \
45   (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_KMS_SINK))
46 #define GST_IS_KMS_SINK_CLASS(klass) \
47   (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_KMS_SINK))
48
49 typedef struct _GstKMSSink GstKMSSink;
50 typedef struct _GstKMSSinkClass GstKMSSinkClass;
51
52 struct _GstKMSSink
53 {
54   GstVideoSink videosink;
55
56   /* DRM */
57   gint fd;
58   gint crtc_id;
59   drmModeRes *resources;
60   drmModePlaneRes *plane_resources;
61   drmModePlane *plane;
62
63   /* GST */
64   GstBufferPool *pool;
65   GstAllocator *allocator;
66   GstVideoRectangle dst_rect;
67   GstVideoInfo info;
68
69   /* Properties */
70   gboolean scale;
71   gboolean keep_aspect;
72   gint connector_id;
73   gint par_n, par_d;
74 };
75
76 struct _GstKMSSinkClass
77 {
78   GstVideoSinkClass parent_class;
79 };
80
81 GType gst_kms_sink_get_type (void);
82
83 G_END_DECLS
84 #endif /* __GST_KMS_SINK_H__ */