1 | /* GStreamer |
2 | * Copyright (C) <2011> Wim Taymans <wim.taymans@gmail.com> |
3 | * |
4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Library General Public |
6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. |
8 | * |
9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Library General Public License for more details. |
13 | * |
14 | * You should have received a copy of the GNU Library General Public |
15 | * License along with this library; if not, write to the |
16 | * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
17 | * Boston, MA 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef __GST_VIDEO_H__ |
21 | #define __GST_VIDEO_H__ |
22 | |
23 | #include <gst/gst.h> |
24 | |
25 | #include <gst/video/video-prelude.h> |
26 | |
27 | typedef struct _GstVideoAlignment GstVideoAlignment; |
28 | |
29 | #include <gst/video/video-format.h> |
30 | #include <gst/video/video-color.h> |
31 | #include <gst/video/video-dither.h> |
32 | #include <gst/video/video-info.h> |
33 | #include <gst/video/video-frame.h> |
34 | #include <gst/video/video-enumtypes.h> |
35 | #include <gst/video/video-converter.h> |
36 | #include <gst/video/video-scaler.h> |
37 | #include <gst/video/video-multiview.h> |
38 | |
39 | G_BEGIN_DECLS |
40 | |
41 | /** |
42 | * GstVideoAlignment: |
43 | * @padding_left: extra pixels on the left side |
44 | * @padding_right: extra pixels on the right side |
45 | * @padding_top: extra pixels on the top |
46 | * @padding_bottom: extra pixels on the bottom |
47 | * @stride_align: array with extra alignment requirements for the strides |
48 | * |
49 | * Extra alignment parameters for the memory of video buffers. This |
50 | * structure is usually used to configure the bufferpool if it supports the |
51 | * #GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. |
52 | */ |
53 | struct _GstVideoAlignment |
54 | { |
55 | guint padding_top; |
56 | guint padding_bottom; |
57 | guint padding_left; |
58 | guint padding_right; |
59 | guint stride_align[GST_VIDEO_MAX_PLANES]; |
60 | }; |
61 | |
62 | /** |
63 | * GstVideoOrientationMethod: |
64 | * @GST_VIDEO_ORIENTATION_IDENTITY: Identity (no rotation) |
65 | * @GST_VIDEO_ORIENTATION_90R: Rotate clockwise 90 degrees |
66 | * @GST_VIDEO_ORIENTATION_180: Rotate 180 degrees |
67 | * @GST_VIDEO_ORIENTATION_90L: Rotate counter-clockwise 90 degrees |
68 | * @GST_VIDEO_ORIENTATION_HORIZ: Flip horizontally |
69 | * @GST_VIDEO_ORIENTATION_VERT: Flip vertically |
70 | * @GST_VIDEO_ORIENTATION_UL_LR: Flip across upper left/lower right diagonal |
71 | * @GST_VIDEO_ORIENTATION_UR_LL: Flip across upper right/lower left diagonal |
72 | * @GST_VIDEO_ORIENTATION_AUTO: Select flip method based on image-orientation tag |
73 | * @GST_VIDEO_ORIENTATION_CUSTOM: Current status depends on plugin internal setup |
74 | * |
75 | * The different video orientation methods. |
76 | * |
77 | * Since: 1.10 |
78 | */ |
79 | typedef enum { |
80 | GST_VIDEO_ORIENTATION_IDENTITY, |
81 | GST_VIDEO_ORIENTATION_90R, |
82 | GST_VIDEO_ORIENTATION_180, |
83 | GST_VIDEO_ORIENTATION_90L, |
84 | GST_VIDEO_ORIENTATION_HORIZ, |
85 | GST_VIDEO_ORIENTATION_VERT, |
86 | GST_VIDEO_ORIENTATION_UL_LR, |
87 | GST_VIDEO_ORIENTATION_UR_LL, |
88 | GST_VIDEO_ORIENTATION_AUTO, |
89 | GST_VIDEO_ORIENTATION_CUSTOM, |
90 | } GstVideoOrientationMethod; |
91 | |
92 | /* metadata macros */ |
93 | /** |
94 | * GST_META_TAG_VIDEO_STR: |
95 | * |
96 | * This metadata is relevant for video streams. |
97 | * |
98 | * Since: 1.2 |
99 | */ |
100 | #define GST_META_TAG_VIDEO_STR "video" |
101 | /** |
102 | * GST_META_TAG_VIDEO_ORIENTATION_STR: |
103 | * |
104 | * This metadata stays relevant as long as video orientation is unchanged. |
105 | * |
106 | * Since: 1.2 |
107 | */ |
108 | #define GST_META_TAG_VIDEO_ORIENTATION_STR "orientation" |
109 | /** |
110 | * GST_META_TAG_VIDEO_SIZE_STR: |
111 | * |
112 | * This metadata stays relevant as long as video size is unchanged. |
113 | * |
114 | * Since: 1.2 |
115 | */ |
116 | #define GST_META_TAG_VIDEO_SIZE_STR "size" |
117 | /** |
118 | * GST_META_TAG_VIDEO_COLORSPACE_STR: |
119 | * |
120 | * This metadata stays relevant as long as video colorspace is unchanged. |
121 | * |
122 | * Since: 1.2 |
123 | */ |
124 | #define GST_META_TAG_VIDEO_COLORSPACE_STR "colorspace" |
125 | |
126 | GST_VIDEO_API |
127 | void gst_video_alignment_reset (GstVideoAlignment *align); |
128 | |
129 | |
130 | /* some helper functions */ |
131 | |
132 | GST_VIDEO_API |
133 | gboolean gst_video_calculate_display_ratio (guint * dar_n, |
134 | guint * dar_d, |
135 | guint video_width, |
136 | guint video_height, |
137 | guint video_par_n, |
138 | guint video_par_d, |
139 | guint display_par_n, |
140 | guint display_par_d); |
141 | |
142 | GST_VIDEO_API |
143 | gboolean gst_video_guess_framerate (GstClockTime duration, |
144 | gint * dest_n, gint * dest_d); |
145 | |
146 | /* convert/encode video sample from one format to another */ |
147 | |
148 | typedef void (*GstVideoConvertSampleCallback) (GstSample * sample, GError *error, gpointer user_data); |
149 | |
150 | GST_VIDEO_API |
151 | void gst_video_convert_sample_async (GstSample * sample, |
152 | const GstCaps * to_caps, |
153 | GstClockTime timeout, |
154 | GstVideoConvertSampleCallback callback, |
155 | gpointer user_data, |
156 | GDestroyNotify destroy_notify); |
157 | |
158 | GST_VIDEO_API |
159 | GstSample * gst_video_convert_sample (GstSample * sample, |
160 | const GstCaps * to_caps, |
161 | GstClockTime timeout, |
162 | GError ** error); |
163 | |
164 | G_END_DECLS |
165 | |
166 | #include <gst/video/colorbalancechannel.h> |
167 | #include <gst/video/colorbalance.h> |
168 | #include <gst/video/gstvideoaggregator.h> |
169 | #include <gst/video/gstvideodecoder.h> |
170 | #include <gst/video/gstvideoencoder.h> |
171 | #include <gst/video/gstvideofilter.h> |
172 | #include <gst/video/gstvideometa.h> |
173 | #include <gst/video/gstvideopool.h> |
174 | #include <gst/video/gstvideosink.h> |
175 | #include <gst/video/gstvideoutils.h> |
176 | #include <gst/video/navigation.h> |
177 | #include <gst/video/video-blend.h> |
178 | #include <gst/video/video-event.h> |
179 | #include <gst/video/videodirection.h> |
180 | #include <gst/video/videoorientation.h> |
181 | #include <gst/video/video-overlay-composition.h> |
182 | #include <gst/video/videooverlay.h> |
183 | #include <gst/video/gstvideotimecode.h> |
184 | #include <gst/video/gstvideoaffinetransformationmeta.h> |
185 | #include <gst/video/video-anc.h> |
186 | |
187 | #endif /* __GST_VIDEO_H__ */ |
188 | |