1 // Generated by gmmproc 2.50.1 -- DO NOT MODIFY!
2 #ifndef _GSTREAMERMM_VIDEOFORMAT_H
3 #define _GSTREAMERMM_VIDEOFORMAT_H
4 
5 
6 #include <glibmm/ustring.h>
7 #include <sigc++/sigc++.h>
8 
9 /* gstreamermm - a C++ wrapper for gstreamer
10  *
11  * Copyright 2008-2015 The gstreamermm Development Team
12  *
13  * This library is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU Lesser General Public
15  * License as published by the Free Software Foundation; either
16  * version 2.1 of the License, or (at your option) any later version.
17  *
18  * This library is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21  * Lesser General Public License for more details.
22  *
23  * You should have received a copy of the GNU Lesser General Public
24  * License along with this library; if not, write to the Free
25  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26  */
27 
28 #include <gst/video/video-format.h>
29 
30 
31 namespace Gst
32 {
33   /** @addtogroup gstreamermmEnums gstreamermm Enums and Flags */
34 
35 /**
36  *
37  * @ingroup gstreamermmEnums
38  */
39 enum VideoFormat
40 {
41   VIDEO_FORMAT_UNKNOWN,
42   VIDEO_FORMAT_ENCODED,
43   VIDEO_FORMAT_I420,
44   VIDEO_FORMAT_YV12,
45   VIDEO_FORMAT_YUY2,
46   VIDEO_FORMAT_UYVY,
47   VIDEO_FORMAT_AYUV,
48   VIDEO_FORMAT_RGBx,
49   VIDEO_FORMAT_BGRx,
50   VIDEO_FORMAT_xRGB,
51   VIDEO_FORMAT_xBGR,
52   VIDEO_FORMAT_RGBA,
53   VIDEO_FORMAT_BGRA,
54   VIDEO_FORMAT_ARGB,
55   VIDEO_FORMAT_ABGR,
56   VIDEO_FORMAT_RGB,
57   VIDEO_FORMAT_BGR,
58   VIDEO_FORMAT_Y41B,
59   VIDEO_FORMAT_Y42B,
60   VIDEO_FORMAT_YVYU,
61   VIDEO_FORMAT_Y444,
62   VIDEO_FORMAT_v210,
63   VIDEO_FORMAT_v216,
64   VIDEO_FORMAT_NV12,
65   VIDEO_FORMAT_NV21,
66   VIDEO_FORMAT_GRAY8,
67   VIDEO_FORMAT_GRAY16_BE,
68   VIDEO_FORMAT_GRAY16_LE,
69   VIDEO_FORMAT_v308,
70   VIDEO_FORMAT_RGB16,
71   VIDEO_FORMAT_BGR16,
72   VIDEO_FORMAT_RGB15,
73   VIDEO_FORMAT_BGR15,
74   VIDEO_FORMAT_UYVP,
75   VIDEO_FORMAT_A420,
76   VIDEO_FORMAT_RGB8P,
77   VIDEO_FORMAT_YUV9,
78   VIDEO_FORMAT_YVU9,
79   VIDEO_FORMAT_IYU1,
80   VIDEO_FORMAT_ARGB64,
81   VIDEO_FORMAT_AYUV64,
82   VIDEO_FORMAT_r210,
83   VIDEO_FORMAT_I420_10BE,
84   VIDEO_FORMAT_I420_10LE,
85   VIDEO_FORMAT_I422_10BE,
86   VIDEO_FORMAT_I422_10LE,
87   VIDEO_FORMAT_Y444_10BE,
88   VIDEO_FORMAT_Y444_10LE,
89   VIDEO_FORMAT_GBR,
90   VIDEO_FORMAT_GBR_10BE,
91   VIDEO_FORMAT_GBR_10LE,
92   VIDEO_FORMAT_NV16,
93   VIDEO_FORMAT_NV24,
94   VIDEO_FORMAT_NV12_64Z32,
95   VIDEO_FORMAT_A420_10BE,
96   VIDEO_FORMAT_A420_10LE,
97   VIDEO_FORMAT_A422_10BE,
98   VIDEO_FORMAT_A422_10LE,
99   VIDEO_FORMAT_A444_10BE,
100   VIDEO_FORMAT_A444_10LE,
101   VIDEO_FORMAT_NV61
102 };
103 
104 } // namespace Gst
105 
106 #ifndef DOXYGEN_SHOULD_SKIP_THIS
107 namespace Glib
108 {
109 
110 template <>
111 class Value<Gst::VideoFormat> : public Glib::Value_Enum<Gst::VideoFormat>
112 {
113 public:
114   static GType value_type() G_GNUC_CONST;
115 };
116 
117 } // namespace Glib
118 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
119 
120 namespace Gst
121 {
122 
123   /**
124  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_YUV
125  * The video format is YUV, components are numbered
126  * 0=Y, 1=U, 2=V.
127  *
128  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_RGB
129  * The video format is RGB, components are numbered
130  * 0=R, 1=G, 2=B.
131  *
132  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_GRAY
133  * The video is gray, there is one gray component
134  * with index 0.
135  *
136  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_ALPHA
137  * The video format has an alpha components with
138  * the number 3.
139  *
140  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_LE
141  * The video format has data stored in little
142  * endianness.
143  *
144  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_PALETTE
145  * The video format has a palette. The palette
146  * is stored in the second plane and indexes are stored in the first plane.
147  *
148  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_COMPLEX
149  * The video format has a complex layout that
150  * can't be described with the usual information in the Gst::VideoFormatInfo.
151  *
152  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_UNPACK
153  * This format can be used in a
154  * Gst::VideoFormatUnpack and Gst::VideoFormatPack function.
155  *
156  *  @var VideoFormatFlags VIDEO_FORMAT_FLAG_TILED
157  * The format is tiled, there is tiling information
158  * in the last plane.
159  *
160  *  @enum VideoFormatFlags
161  *
162  * The different video flags that a format info can have.
163  *
164  * @ingroup gstreamermmEnums
165  * @par Bitwise operators:
166  * <tt>%VideoFormatFlags operator|(VideoFormatFlags, VideoFormatFlags)</tt><br>
167  * <tt>%VideoFormatFlags operator&(VideoFormatFlags, VideoFormatFlags)</tt><br>
168  * <tt>%VideoFormatFlags operator^(VideoFormatFlags, VideoFormatFlags)</tt><br>
169  * <tt>%VideoFormatFlags operator~(VideoFormatFlags)</tt><br>
170  * <tt>%VideoFormatFlags& operator|=(VideoFormatFlags&, VideoFormatFlags)</tt><br>
171  * <tt>%VideoFormatFlags& operator&=(VideoFormatFlags&, VideoFormatFlags)</tt><br>
172  * <tt>%VideoFormatFlags& operator^=(VideoFormatFlags&, VideoFormatFlags)</tt><br>
173  */
174 enum VideoFormatFlags
175 {
176   VIDEO_FORMAT_FLAG_YUV = (1 << 0),
177   VIDEO_FORMAT_FLAG_RGB = (1 << 1),
178   VIDEO_FORMAT_FLAG_GRAY = (1 << 2),
179   VIDEO_FORMAT_FLAG_ALPHA = (1 << 3),
180   VIDEO_FORMAT_FLAG_LE = (1 << 4),
181   VIDEO_FORMAT_FLAG_PALETTE = (1 << 5),
182   VIDEO_FORMAT_FLAG_COMPLEX = (1 << 6),
183   VIDEO_FORMAT_FLAG_UNPACK = (1 << 7),
184   VIDEO_FORMAT_FLAG_TILED = (1 << 8)
185 };
186 
187 /** @ingroup gstreamermmEnums */
188 inline VideoFormatFlags operator|(VideoFormatFlags lhs, VideoFormatFlags rhs)
189   { return static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
190 
191 /** @ingroup gstreamermmEnums */
192 inline VideoFormatFlags operator&(VideoFormatFlags lhs, VideoFormatFlags rhs)
193   { return static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
194 
195 /** @ingroup gstreamermmEnums */
196 inline VideoFormatFlags operator^(VideoFormatFlags lhs, VideoFormatFlags rhs)
197   { return static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
198 
199 /** @ingroup gstreamermmEnums */
200 inline VideoFormatFlags operator~(VideoFormatFlags flags)
201   { return static_cast<VideoFormatFlags>(~static_cast<unsigned>(flags)); }
202 
203 /** @ingroup gstreamermmEnums */
204 inline VideoFormatFlags& operator|=(VideoFormatFlags& lhs, VideoFormatFlags rhs)
205   { return (lhs = static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
206 
207 /** @ingroup gstreamermmEnums */
208 inline VideoFormatFlags& operator&=(VideoFormatFlags& lhs, VideoFormatFlags rhs)
209   { return (lhs = static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
210 
211 /** @ingroup gstreamermmEnums */
212 inline VideoFormatFlags& operator^=(VideoFormatFlags& lhs, VideoFormatFlags rhs)
213   { return (lhs = static_cast<VideoFormatFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
214 
215 } // namespace Gst
216 
217 #ifndef DOXYGEN_SHOULD_SKIP_THIS
218 namespace Glib
219 {
220 
221 template <>
222 class Value<Gst::VideoFormatFlags> : public Glib::Value_Flags<Gst::VideoFormatFlags>
223 {
224 public:
225   static GType value_type() G_GNUC_CONST;
226 };
227 
228 } // namespace Glib
229 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
230 
231 namespace Gst
232 {
233 
234   /**
235  *  @var VideoPackFlags VIDEO_PACK_FLAG_NONE
236  * No flag.
237  *
238  *  @var VideoPackFlags VIDEO_PACK_FLAG_TRUNCATE_RANGE
239  * When the source has a smaller depth
240  * than the target format, set the least significant bits of the target
241  * to 0. This is likely sightly faster but less accurate. When this flag
242  * is not specified, the most significant bits of the source are duplicated
243  * in the least significant bits of the destination.
244  *
245  *  @var VideoPackFlags VIDEO_PACK_FLAG_INTERLACED
246  * The source is interlaced. The unpacked
247  * format will be interlaced as well with each line containing
248  * information from alternating fields. (Since 1.2).
249  *
250  *  @enum VideoPackFlags
251  *
252  * The different flags that can be used when packing and unpacking.
253  *
254  * @ingroup gstreamermmEnums
255  * @par Bitwise operators:
256  * <tt>%VideoPackFlags operator|(VideoPackFlags, VideoPackFlags)</tt><br>
257  * <tt>%VideoPackFlags operator&(VideoPackFlags, VideoPackFlags)</tt><br>
258  * <tt>%VideoPackFlags operator^(VideoPackFlags, VideoPackFlags)</tt><br>
259  * <tt>%VideoPackFlags operator~(VideoPackFlags)</tt><br>
260  * <tt>%VideoPackFlags& operator|=(VideoPackFlags&, VideoPackFlags)</tt><br>
261  * <tt>%VideoPackFlags& operator&=(VideoPackFlags&, VideoPackFlags)</tt><br>
262  * <tt>%VideoPackFlags& operator^=(VideoPackFlags&, VideoPackFlags)</tt><br>
263  */
264 enum VideoPackFlags
265 {
266   VIDEO_PACK_FLAG_NONE = 0x0,
267   VIDEO_PACK_FLAG_TRUNCATE_RANGE = (1 << 0),
268   VIDEO_PACK_FLAG_INTERLACED = (1 << 1)
269 };
270 
271 /** @ingroup gstreamermmEnums */
272 inline VideoPackFlags operator|(VideoPackFlags lhs, VideoPackFlags rhs)
273   { return static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
274 
275 /** @ingroup gstreamermmEnums */
276 inline VideoPackFlags operator&(VideoPackFlags lhs, VideoPackFlags rhs)
277   { return static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
278 
279 /** @ingroup gstreamermmEnums */
280 inline VideoPackFlags operator^(VideoPackFlags lhs, VideoPackFlags rhs)
281   { return static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
282 
283 /** @ingroup gstreamermmEnums */
284 inline VideoPackFlags operator~(VideoPackFlags flags)
285   { return static_cast<VideoPackFlags>(~static_cast<unsigned>(flags)); }
286 
287 /** @ingroup gstreamermmEnums */
288 inline VideoPackFlags& operator|=(VideoPackFlags& lhs, VideoPackFlags rhs)
289   { return (lhs = static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
290 
291 /** @ingroup gstreamermmEnums */
292 inline VideoPackFlags& operator&=(VideoPackFlags& lhs, VideoPackFlags rhs)
293   { return (lhs = static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
294 
295 /** @ingroup gstreamermmEnums */
296 inline VideoPackFlags& operator^=(VideoPackFlags& lhs, VideoPackFlags rhs)
297   { return (lhs = static_cast<VideoPackFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
298 
299 } // namespace Gst
300 
301 #ifndef DOXYGEN_SHOULD_SKIP_THIS
302 namespace Glib
303 {
304 
305 template <>
306 class Value<Gst::VideoPackFlags> : public Glib::Value_Flags<Gst::VideoPackFlags>
307 {
308 public:
309   static GType value_type() G_GNUC_CONST;
310 };
311 
312 } // namespace Glib
313 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
314 
315 namespace Gst
316 {
317 
318 
319 /**
320  * Information for a video format.
321  */
322 class VideoFormatInfo
323 {
324   public:
325 #ifndef DOXYGEN_SHOULD_SKIP_THIS
326   using CppObjectType = VideoFormatInfo;
327   using BaseObjectType = GstVideoFormatInfo;
328 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
329 
330 private:
331 
332 
333 public:
334   explicit VideoFormatInfo(const GstVideoFormatInfo* castitem);
335   virtual ~VideoFormatInfo();
336 
gobj()337   const GstVideoFormatInfo* gobj() const { return gobj_; };
338 
339   VideoFormat get_format() const;
340 
341   Glib::ustring get_name() const;
342 
343   Glib::ustring get_description() const;
344 
345   VideoFormatFlags get_flags() const;
346 
347   guint get_bits() const;
348 
349   guint get_n_components() const;
350 
351   guint get_n_planes() const;
352 
353   VideoFormat get_unpack_format() const;
354 
355   gint get_pack_lines() const;
356 
357 protected:
358 #ifndef DOXYGEN_SHOULD_SKIP_THIS
359   const GstVideoFormatInfo* gobj_;
360 #endif
361 
362 
363 };
364 }
365 
366 
367 #endif /* _GSTREAMERMM_VIDEOFORMAT_H */
368 
369