1 /*
2  * This file is part of gtkD.
3  *
4  * gtkD is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License
6  * as published by the Free Software Foundation; either version 3
7  * of the License, or (at your option) any later version, with
8  * some exceptions, please read the COPYING file.
9  *
10  * gtkD 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
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with gtkD; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
18  */
19 
20 // generated automatically - do not change
21 // find conversion definition on APILookup.txt
22 // implement new conversion functionalities on the wrap.utils pakage
23 
24 
25 module gstreamer.c.types;
26 
27 public import glib.c.types;
28 public import gobject.c.types;
29 
30 
31 /**
32  * A datatype to hold the handle to an outstanding sync or async clock callback.
33  */
34 public alias void* GstClockID;
35 
36 /**
37  * A datatype to hold a time, measured in nanoseconds.
38  */
39 public alias ulong GstClockTime;
40 
41 /**
42  * A datatype to hold a time difference, measured in nanoseconds.
43  */
44 public alias long GstClockTimeDiff;
45 
46 public alias ulong GstElementFactoryListType;
47 /**
48  * Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
49  * and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().
50  */
51 public enum GstDebugGraphDetails : long
52 {
53 	/**
54 	 * show caps-name on edges
55 	 */
56 	MEDIA_TYPE = 1,
57 	/**
58 	 * show caps-details on edges
59 	 */
60 	CAPS_DETAILS = 2,
61 	/**
62 	 * show modified parameters on
63 	 * elements
64 	 */
65 	NON_DEFAULT_PARAMS = 4,
66 	/**
67 	 * show element states
68 	 */
69 	STATES = 8,
70 	/**
71 	 * show full element parameter values even
72 	 * if they are very long
73 	 */
74 	FULL_PARAMS = 16,
75 	/**
76 	 * show all the typical details that one might want
77 	 */
78 	ALL = 15,
79 	/**
80 	 * show all details regardless of how large or
81 	 * verbose they make the resulting output
82 	 */
83 	VERBOSE = 4294967295,
84 }
85 alias GstDebugGraphDetails DebugGraphDetails;
86 
87 /**
88  * Flags for allocators.
89  */
90 public enum GstAllocatorFlags
91 {
92 	/**
93 	 * The allocator has a custom alloc function.
94 	 */
95 	CUSTOM_ALLOC = 16,
96 	/**
97 	 * first flag that can be used for custom purposes
98 	 */
99 	LAST = 1048576,
100 }
101 alias GstAllocatorFlags AllocatorFlags;
102 
103 /**
104  * GstBinFlags are a set of flags specific to bins. Most are set/used
105  * internally. They can be checked using the GST_OBJECT_FLAG_IS_SET () macro,
106  * and (un)set using GST_OBJECT_FLAG_SET () and GST_OBJECT_FLAG_UNSET ().
107  */
108 public enum GstBinFlags
109 {
110 	/**
111 	 * don't resync a state change when elements are
112 	 * added or linked in the bin (Since 1.0.5)
113 	 */
114 	NO_RESYNC = 16384,
115 	/**
116 	 * Indicates whether the bin can handle elements
117 	 * that add/remove source pads at any point in time without
118 	 * first posting a no-more-pads signal (Since 1.10)
119 	 */
120 	STREAMS_AWARE = 32768,
121 	/**
122 	 * the last enum in the series of flags for bins.
123 	 * Derived classes can use this as first value in a list of flags.
124 	 */
125 	LAST = 524288,
126 }
127 alias GstBinFlags BinFlags;
128 
129 /**
130  * A set of flags that can be provided to the gst_buffer_copy_into()
131  * function to specify which items should be copied.
132  */
133 public enum GstBufferCopyFlags
134 {
135 	/**
136 	 * copy nothing
137 	 */
138 	NONE = 0,
139 	/**
140 	 * flag indicating that buffer flags should be copied
141 	 */
142 	FLAGS = 1,
143 	/**
144 	 * flag indicating that buffer pts, dts,
145 	 * duration, offset and offset_end should be copied
146 	 */
147 	TIMESTAMPS = 2,
148 	/**
149 	 * flag indicating that buffer meta should be
150 	 * copied
151 	 */
152 	META = 4,
153 	/**
154 	 * flag indicating that buffer memory should be reffed
155 	 * and appended to already existing memory. Unless the memory is marked as
156 	 * NO_SHARE, no actual copy of the memory is made but it is simply reffed.
157 	 * Add @GST_BUFFER_COPY_DEEP to force a real copy.
158 	 */
159 	MEMORY = 8,
160 	/**
161 	 * flag indicating that buffer memory should be
162 	 * merged
163 	 */
164 	MERGE = 16,
165 	/**
166 	 * flag indicating that memory should always be
167 	 * copied instead of reffed (Since 1.2)
168 	 */
169 	DEEP = 32,
170 }
171 alias GstBufferCopyFlags BufferCopyFlags;
172 
173 /**
174  * A set of buffer flags used to describe properties of a #GstBuffer.
175  */
176 public enum GstBufferFlags
177 {
178 	/**
179 	 * the buffer is live data and should be discarded in
180 	 * the PAUSED state.
181 	 */
182 	LIVE = 16,
183 	/**
184 	 * the buffer contains data that should be dropped
185 	 * because it will be clipped against the segment
186 	 * boundaries or because it does not contain data
187 	 * that should be shown to the user.
188 	 */
189 	DECODE_ONLY = 32,
190 	/**
191 	 * the buffer marks a data discontinuity in the stream.
192 	 * This typically occurs after a seek or a dropped buffer
193 	 * from a live or network source.
194 	 */
195 	DISCONT = 64,
196 	/**
197 	 * the buffer timestamps might have a discontinuity
198 	 * and this buffer is a good point to resynchronize.
199 	 */
200 	RESYNC = 128,
201 	/**
202 	 * the buffer data is corrupted.
203 	 */
204 	CORRUPTED = 256,
205 	/**
206 	 * the buffer contains a media specific marker. for
207 	 * video this is typically the end of a frame boundary, for audio
208 	 * this is usually the start of a talkspurt.
209 	 */
210 	MARKER = 512,
211 	/**
212 	 * the buffer contains header information that is
213 	 * needed to decode the following data.
214 	 */
215 	HEADER = 1024,
216 	/**
217 	 * the buffer has been created to fill a gap in the
218 	 * stream and contains media neutral data (elements can
219 	 * switch to optimized code path that ignores the buffer
220 	 * content).
221 	 */
222 	GAP = 2048,
223 	/**
224 	 * the buffer can be dropped without breaking the
225 	 * stream, for example to reduce bandwidth.
226 	 */
227 	DROPPABLE = 4096,
228 	/**
229 	 * this unit cannot be decoded independently.
230 	 */
231 	DELTA_UNIT = 8192,
232 	/**
233 	 * this flag is set when memory of the buffer
234 	 * is added/removed
235 	 */
236 	TAG_MEMORY = 16384,
237 	/**
238 	 * Elements which write to disk or permanent
239 	 * storage should ensure the data is synced after
240 	 * writing the contents of this buffer. (Since 1.6)
241 	 */
242 	SYNC_AFTER = 32768,
243 	/**
244 	 * This buffer is important and should not be dropped.
245 	 * This can be used to mark important buffers, e.g. to flag
246 	 * RTP packets carrying keyframes or codec setup data for RTP
247 	 * Forward Error Correction purposes, or to prevent still video
248 	 * frames from being dropped by elements due to QoS. (Since 1.14)
249 	 */
250 	NON_DROPPABLE = 65536,
251 	/**
252 	 * additional media specific flags can be added starting from
253 	 * this flag.
254 	 */
255 	LAST = 1048576,
256 }
257 alias GstBufferFlags BufferFlags;
258 
259 /**
260  * Additional flags to control the allocation of a buffer
261  */
262 public enum GstBufferPoolAcquireFlags
263 {
264 	/**
265 	 * no flags
266 	 */
267 	NONE = 0,
268 	/**
269 	 * buffer is keyframe
270 	 */
271 	KEY_UNIT = 1,
272 	/**
273 	 * when the bufferpool is empty, acquire_buffer
274 	 * will by default block until a buffer is released into the pool again. Setting
275 	 * this flag makes acquire_buffer return #GST_FLOW_EOS instead of blocking.
276 	 */
277 	DONTWAIT = 2,
278 	/**
279 	 * buffer is discont
280 	 */
281 	DISCONT = 4,
282 	/**
283 	 * last flag, subclasses can use private flags
284 	 * starting from this value.
285 	 */
286 	LAST = 65536,
287 }
288 alias GstBufferPoolAcquireFlags BufferPoolAcquireFlags;
289 
290 /**
291  * The different types of buffering methods.
292  */
293 public enum GstBufferingMode
294 {
295 	/**
296 	 * a small amount of data is buffered
297 	 */
298 	STREAM = 0,
299 	/**
300 	 * the stream is being downloaded
301 	 */
302 	DOWNLOAD = 1,
303 	/**
304 	 * the stream is being downloaded in a ringbuffer
305 	 */
306 	TIMESHIFT = 2,
307 	/**
308 	 * the stream is a live stream
309 	 */
310 	LIVE = 3,
311 }
312 alias GstBufferingMode BufferingMode;
313 
314 /**
315  * The standard flags that a bus may have.
316  */
317 public enum GstBusFlags
318 {
319 	/**
320 	 * The bus is currently dropping all messages
321 	 */
322 	FLUSHING = 16,
323 	/**
324 	 * offset to define more flags
325 	 */
326 	FLAG_LAST = 32,
327 }
328 alias GstBusFlags BusFlags;
329 
330 /**
331  * The result values for a GstBusSyncHandler.
332  */
333 public enum GstBusSyncReply
334 {
335 	/**
336 	 * drop the message
337 	 */
338 	DROP = 0,
339 	/**
340 	 * pass the message to the async queue
341 	 */
342 	PASS = 1,
343 	/**
344 	 * pass message to async queue, continue if message is handled
345 	 */
346 	ASYNC = 2,
347 }
348 alias GstBusSyncReply BusSyncReply;
349 
350 /**
351  * Extra flags for a caps.
352  */
353 public enum GstCapsFlags
354 {
355 	/**
356 	 * Caps has no specific content, but can contain
357 	 * anything.
358 	 */
359 	ANY = 16,
360 }
361 alias GstCapsFlags CapsFlags;
362 
363 /**
364  * Modes of caps intersection
365  *
366  * @GST_CAPS_INTERSECT_ZIG_ZAG tries to preserve overall order of both caps
367  * by iterating on the caps' structures as the following matrix shows:
368  * |[
369  * caps1
370  * +-------------
371  * | 1  2  4  7
372  * caps2 | 3  5  8 10
373  * | 6  9 11 12
374  * ]|
375  * Used when there is no explicit precedence of one caps over the other. e.g.
376  * tee's sink pad getcaps function, it will probe its src pad peers' for their
377  * caps and intersect them with this mode.
378  *
379  * @GST_CAPS_INTERSECT_FIRST is useful when an element wants to preserve
380  * another element's caps priority order when intersecting with its own caps.
381  * Example: If caps1 is [A, B, C] and caps2 is [E, B, D, A], the result
382  * would be [A, B], maintaining the first caps priority on the intersection.
383  */
384 public enum GstCapsIntersectMode
385 {
386 	/**
387 	 * Zig-zags over both caps.
388 	 */
389 	ZIG_ZAG = 0,
390 	/**
391 	 * Keeps the first caps order.
392 	 */
393 	FIRST = 1,
394 }
395 alias GstCapsIntersectMode CapsIntersectMode;
396 
397 /**
398  * The type of the clock entry
399  */
400 public enum GstClockEntryType
401 {
402 	/**
403 	 * a single shot timeout
404 	 */
405 	SINGLE = 0,
406 	/**
407 	 * a periodic timeout request
408 	 */
409 	PERIODIC = 1,
410 }
411 alias GstClockEntryType ClockEntryType;
412 
413 /**
414  * The capabilities of this clock
415  */
416 public enum GstClockFlags
417 {
418 	/**
419 	 * clock can do a single sync timeout request
420 	 */
421 	CAN_DO_SINGLE_SYNC = 16,
422 	/**
423 	 * clock can do a single async timeout request
424 	 */
425 	CAN_DO_SINGLE_ASYNC = 32,
426 	/**
427 	 * clock can do sync periodic timeout requests
428 	 */
429 	CAN_DO_PERIODIC_SYNC = 64,
430 	/**
431 	 * clock can do async periodic timeout callbacks
432 	 */
433 	CAN_DO_PERIODIC_ASYNC = 128,
434 	/**
435 	 * clock's resolution can be changed
436 	 */
437 	CAN_SET_RESOLUTION = 256,
438 	/**
439 	 * clock can be slaved to a master clock
440 	 */
441 	CAN_SET_MASTER = 512,
442 	/**
443 	 * clock needs to be synced before it can be used
444 	 * (Since 1.6)
445 	 */
446 	NEEDS_STARTUP_SYNC = 1024,
447 	/**
448 	 * subclasses can add additional flags starting from this flag
449 	 */
450 	LAST = 4096,
451 }
452 alias GstClockFlags ClockFlags;
453 
454 /**
455  * The return value of a clock operation.
456  */
457 public enum GstClockReturn
458 {
459 	/**
460 	 * The operation succeeded.
461 	 */
462 	OK = 0,
463 	/**
464 	 * The operation was scheduled too late.
465 	 */
466 	EARLY = 1,
467 	/**
468 	 * The clockID was unscheduled
469 	 */
470 	UNSCHEDULED = 2,
471 	/**
472 	 * The ClockID is busy
473 	 */
474 	BUSY = 3,
475 	/**
476 	 * A bad time was provided to a function.
477 	 */
478 	BADTIME = 4,
479 	/**
480 	 * An error occurred
481 	 */
482 	ERROR = 5,
483 	/**
484 	 * Operation is not supported
485 	 */
486 	UNSUPPORTED = 6,
487 	/**
488 	 * The ClockID is done waiting
489 	 */
490 	DONE = 7,
491 }
492 alias GstClockReturn ClockReturn;
493 
494 /**
495  * The different kind of clocks.
496  */
497 public enum GstClockType
498 {
499 	/**
500 	 * time since Epoch
501 	 */
502 	REALTIME = 0,
503 	/**
504 	 * monotonic time since some unspecified starting
505 	 * point
506 	 */
507 	MONOTONIC = 1,
508 	/**
509 	 * some other time source is used (Since 1.0.5)
510 	 */
511 	OTHER = 2,
512 }
513 alias GstClockType ClockType;
514 
515 /**
516  * Core errors are errors inside the core GStreamer library.
517  */
518 public enum GstCoreError
519 {
520 	/**
521 	 * a general error which doesn't fit in any other
522 	 * category.  Make sure you add a custom message to the error call.
523 	 */
524 	FAILED = 1,
525 	/**
526 	 * do not use this except as a placeholder for
527 	 * deciding where to go while developing code.
528 	 */
529 	TOO_LAZY = 2,
530 	/**
531 	 * use this when you do not want to implement
532 	 * this functionality yet.
533 	 */
534 	NOT_IMPLEMENTED = 3,
535 	/**
536 	 * used for state change errors.
537 	 */
538 	STATE_CHANGE = 4,
539 	/**
540 	 * used for pad-related errors.
541 	 */
542 	PAD = 5,
543 	/**
544 	 * used for thread-related errors.
545 	 */
546 	THREAD = 6,
547 	/**
548 	 * used for negotiation-related errors.
549 	 */
550 	NEGOTIATION = 7,
551 	/**
552 	 * used for event-related errors.
553 	 */
554 	EVENT = 8,
555 	/**
556 	 * used for seek-related errors.
557 	 */
558 	SEEK = 9,
559 	/**
560 	 * used for caps-related errors.
561 	 */
562 	CAPS = 10,
563 	/**
564 	 * used for negotiation-related errors.
565 	 */
566 	TAG = 11,
567 	/**
568 	 * used if a plugin is missing.
569 	 */
570 	MISSING_PLUGIN = 12,
571 	/**
572 	 * used for clock related errors.
573 	 */
574 	CLOCK = 13,
575 	/**
576 	 * used if functionality has been disabled at
577 	 * compile time.
578 	 */
579 	DISABLED = 14,
580 	/**
581 	 * the number of core error types.
582 	 */
583 	NUM_ERRORS = 15,
584 }
585 alias GstCoreError CoreError;
586 
587 /**
588  * These are some terminal style flags you can use when creating your
589  * debugging categories to make them stand out in debugging output.
590  */
591 public enum GstDebugColorFlags
592 {
593 	/**
594 	 * Use black as foreground color.
595 	 */
596 	FG_BLACK = 0,
597 	/**
598 	 * Use red as foreground color.
599 	 */
600 	FG_RED = 1,
601 	/**
602 	 * Use green as foreground color.
603 	 */
604 	FG_GREEN = 2,
605 	/**
606 	 * Use yellow as foreground color.
607 	 */
608 	FG_YELLOW = 3,
609 	/**
610 	 * Use blue as foreground color.
611 	 */
612 	FG_BLUE = 4,
613 	/**
614 	 * Use magenta as foreground color.
615 	 */
616 	FG_MAGENTA = 5,
617 	/**
618 	 * Use cyan as foreground color.
619 	 */
620 	FG_CYAN = 6,
621 	/**
622 	 * Use white as foreground color.
623 	 */
624 	FG_WHITE = 7,
625 	/**
626 	 * Use black as background color.
627 	 */
628 	BG_BLACK = 0,
629 	/**
630 	 * Use red as background color.
631 	 */
632 	BG_RED = 16,
633 	/**
634 	 * Use green as background color.
635 	 */
636 	BG_GREEN = 32,
637 	/**
638 	 * Use yellow as background color.
639 	 */
640 	BG_YELLOW = 48,
641 	/**
642 	 * Use blue as background color.
643 	 */
644 	BG_BLUE = 64,
645 	/**
646 	 * Use magenta as background color.
647 	 */
648 	BG_MAGENTA = 80,
649 	/**
650 	 * Use cyan as background color.
651 	 */
652 	BG_CYAN = 96,
653 	/**
654 	 * Use white as background color.
655 	 */
656 	BG_WHITE = 112,
657 	/**
658 	 * Make the output bold.
659 	 */
660 	BOLD = 256,
661 	/**
662 	 * Underline the output.
663 	 */
664 	UNDERLINE = 512,
665 }
666 alias GstDebugColorFlags DebugColorFlags;
667 
668 public enum GstDebugColorMode
669 {
670 	/**
671 	 * Do not use colors in logs.
672 	 */
673 	OFF = 0,
674 	/**
675 	 * Paint logs in a platform-specific way.
676 	 */
677 	ON = 1,
678 	/**
679 	 * Paint logs with UNIX terminal color codes
680 	 * no matter what platform GStreamer is running on.
681 	 */
682 	UNIX = 2,
683 }
684 alias GstDebugColorMode DebugColorMode;
685 
686 /**
687  * The level defines the importance of a debugging message. The more important a
688  * message is, the greater the probability that the debugging system outputs it.
689  */
690 public enum GstDebugLevel
691 {
692 	/**
693 	 * No debugging level specified or desired. Used to deactivate
694 	 * debugging output.
695 	 */
696 	NONE = 0,
697 	/**
698 	 * Error messages are to be used only when an error occurred
699 	 * that stops the application from keeping working correctly.
700 	 * An examples is gst_element_error, which outputs a message with this priority.
701 	 * It does not mean that the application is terminating as with g_error.
702 	 */
703 	ERROR = 1,
704 	/**
705 	 * Warning messages are to inform about abnormal behaviour
706 	 * that could lead to problems or weird behaviour later on. An example of this
707 	 * would be clocking issues ("your computer is pretty slow") or broken input
708 	 * data ("Can't synchronize to stream.")
709 	 */
710 	WARNING = 2,
711 	/**
712 	 * Fixme messages are messages that indicate that something
713 	 * in the executed code path is not fully implemented or handled yet. Note
714 	 * that this does not replace proper error handling in any way, the purpose
715 	 * of this message is to make it easier to spot incomplete/unfinished pieces
716 	 * of code when reading the debug log.
717 	 */
718 	FIXME = 3,
719 	/**
720 	 * Informational messages should be used to keep the developer
721 	 * updated about what is happening.
722 	 * Examples where this should be used are when a typefind function has
723 	 * successfully determined the type of the stream or when an mp3 plugin detects
724 	 * the format to be used. ("This file has mono sound.")
725 	 */
726 	INFO = 4,
727 	/**
728 	 * Debugging messages should be used when something common
729 	 * happens that is not the expected default behavior, or something that's
730 	 * useful to know but doesn't happen all the time (ie. per loop iteration or
731 	 * buffer processed or event handled).
732 	 * An example would be notifications about state changes or receiving/sending
733 	 * of events.
734 	 */
735 	DEBUG = 5,
736 	/**
737 	 * Log messages are messages that are very common but might be
738 	 * useful to know. As a rule of thumb a pipeline that is running as expected
739 	 * should never output anything else but LOG messages whilst processing data.
740 	 * Use this log level to log recurring information in chain functions and
741 	 * loop functions, for example.
742 	 */
743 	LOG = 6,
744 	/**
745 	 * Tracing-related messages.
746 	 * Examples for this are referencing/dereferencing of objects.
747 	 */
748 	TRACE = 7,
749 	/**
750 	 * memory dump messages are used to log (small) chunks of
751 	 * data as memory dumps in the log. They will be displayed as hexdump with
752 	 * ASCII characters.
753 	 */
754 	MEMDUMP = 9,
755 	/**
756 	 * The number of defined debugging levels.
757 	 */
758 	COUNT = 10,
759 }
760 alias GstDebugLevel DebugLevel;
761 
762 /**
763  * The standard flags that an element may have.
764  */
765 public enum GstElementFlags
766 {
767 	/**
768 	 * ignore state changes from parent
769 	 */
770 	LOCKED_STATE = 16,
771 	/**
772 	 * the element is a sink
773 	 */
774 	SINK = 32,
775 	/**
776 	 * the element is a source.
777 	 */
778 	SOURCE = 64,
779 	/**
780 	 * the element can provide a clock
781 	 */
782 	PROVIDE_CLOCK = 128,
783 	/**
784 	 * the element requires a clock
785 	 */
786 	REQUIRE_CLOCK = 256,
787 	/**
788 	 * the element can use an index
789 	 */
790 	INDEXABLE = 512,
791 	/**
792 	 * offset to define more flags
793 	 */
794 	LAST = 16384,
795 }
796 alias GstElementFlags ElementFlags;
797 
798 /**
799  * #GstEventType lists the standard event types that can be sent in a pipeline.
800  *
801  * The custom event types can be used for private messages between elements
802  * that can't be expressed using normal
803  * GStreamer buffer passing semantics. Custom events carry an arbitrary
804  * #GstStructure.
805  * Specific custom events are distinguished by the name of the structure.
806  */
807 public enum GstEventType
808 {
809 	/**
810 	 * unknown event.
811 	 */
812 	UNKNOWN = 0,
813 	/**
814 	 * Start a flush operation. This event clears all data
815 	 * from the pipeline and unblock all streaming threads.
816 	 */
817 	FLUSH_START = 2563,
818 	/**
819 	 * Stop a flush operation. This event resets the
820 	 * running-time of the pipeline.
821 	 */
822 	FLUSH_STOP = 5127,
823 	/**
824 	 * Event to mark the start of a new stream. Sent before any
825 	 * other serialized event and only sent at the start of a new stream,
826 	 * not after flushing seeks.
827 	 */
828 	STREAM_START = 10254,
829 	/**
830 	 * #GstCaps event. Notify the pad of a new media type.
831 	 */
832 	CAPS = 12814,
833 	/**
834 	 * A new media segment follows in the dataflow. The
835 	 * segment events contains information for clipping buffers and
836 	 * converting buffer timestamps to running-time and
837 	 * stream-time.
838 	 */
839 	SEGMENT = 17934,
840 	/**
841 	 * A new #GstStreamCollection is available (Since 1.10)
842 	 */
843 	STREAM_COLLECTION = 19230,
844 	/**
845 	 * A new set of metadata tags has been found in the stream.
846 	 */
847 	TAG = 20510,
848 	/**
849 	 * Notification of buffering requirements. Currently not
850 	 * used yet.
851 	 */
852 	BUFFERSIZE = 23054,
853 	/**
854 	 * An event that sinks turn into a message. Used to
855 	 * send messages that should be emitted in sync with
856 	 * rendering.
857 	 */
858 	SINK_MESSAGE = 25630,
859 	/**
860 	 * Indicates that there is no more data for
861 	 * the stream group ID in the message. Sent before EOS
862 	 * in some instances and should be handled mostly the same. (Since 1.10)
863 	 */
864 	STREAM_GROUP_DONE = 26894,
865 	/**
866 	 * End-Of-Stream. No more data is to be expected to follow
867 	 * without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT
868 	 * event.
869 	 */
870 	EOS = 28174,
871 	/**
872 	 * An event which indicates that a new table of contents (TOC)
873 	 * was found or updated.
874 	 */
875 	TOC = 30750,
876 	/**
877 	 * An event which indicates that new or updated
878 	 * encryption information has been found in the stream.
879 	 */
880 	PROTECTION = 33310,
881 	/**
882 	 * Marks the end of a segment playback.
883 	 */
884 	SEGMENT_DONE = 38406,
885 	/**
886 	 * Marks a gap in the datastream.
887 	 */
888 	GAP = 40966,
889 	/**
890 	 * A quality message. Used to indicate to upstream elements
891 	 * that the downstream elements should adjust their processing
892 	 * rate.
893 	 */
894 	QOS = 48641,
895 	/**
896 	 * A request for a new playback position and rate.
897 	 */
898 	SEEK = 51201,
899 	/**
900 	 * Navigation events are usually used for communicating
901 	 * user requests, such as mouse or keyboard movements,
902 	 * to upstream elements.
903 	 */
904 	NAVIGATION = 53761,
905 	/**
906 	 * Notification of new latency adjustment. Sinks will use
907 	 * the latency information to adjust their synchronisation.
908 	 */
909 	LATENCY = 56321,
910 	/**
911 	 * A request for stepping through the media. Sinks will usually
912 	 * execute the step operation.
913 	 */
914 	STEP = 58881,
915 	/**
916 	 * A request for upstream renegotiating caps and reconfiguring.
917 	 */
918 	RECONFIGURE = 61441,
919 	/**
920 	 * A request for a new playback position based on TOC
921 	 * entry's UID.
922 	 */
923 	TOC_SELECT = 64001,
924 	/**
925 	 * A request to select one or more streams (Since 1.10)
926 	 */
927 	SELECT_STREAMS = 66561,
928 	/**
929 	 * Upstream custom event
930 	 */
931 	CUSTOM_UPSTREAM = 69121,
932 	/**
933 	 * Downstream custom event that travels in the
934 	 * data flow.
935 	 */
936 	CUSTOM_DOWNSTREAM = 71686,
937 	/**
938 	 * Custom out-of-band downstream event.
939 	 */
940 	CUSTOM_DOWNSTREAM_OOB = 74242,
941 	/**
942 	 * Custom sticky downstream event.
943 	 */
944 	CUSTOM_DOWNSTREAM_STICKY = 76830,
945 	/**
946 	 * Custom upstream or downstream event.
947 	 * In-band when travelling downstream.
948 	 */
949 	CUSTOM_BOTH = 79367,
950 	/**
951 	 * Custom upstream or downstream out-of-band event.
952 	 */
953 	CUSTOM_BOTH_OOB = 81923,
954 }
955 alias GstEventType EventType;
956 
957 /**
958  * #GstEventTypeFlags indicate the aspects of the different #GstEventType
959  * values. You can get the type flags of a #GstEventType with the
960  * gst_event_type_get_flags() function.
961  */
962 public enum GstEventTypeFlags
963 {
964 	/**
965 	 * Set if the event can travel upstream.
966 	 */
967 	UPSTREAM = 1,
968 	/**
969 	 * Set if the event can travel downstream.
970 	 */
971 	DOWNSTREAM = 2,
972 	/**
973 	 * Set if the event should be serialized with data
974 	 * flow.
975 	 */
976 	SERIALIZED = 4,
977 	/**
978 	 * Set if the event is sticky on the pads.
979 	 */
980 	STICKY = 8,
981 	/**
982 	 * Multiple sticky events can be on a pad, each
983 	 * identified by the event name.
984 	 */
985 	STICKY_MULTI = 16,
986 }
987 alias GstEventTypeFlags EventTypeFlags;
988 
989 /**
990  * The result of passing data to a pad.
991  *
992  * Note that the custom return values should not be exposed outside of the
993  * element scope.
994  */
995 public enum GstFlowReturn
996 {
997 	/**
998 	 * Pre-defined custom success code.
999 	 */
1000 	CUSTOM_SUCCESS_2 = 102,
1001 	/**
1002 	 * Pre-defined custom success code (define your
1003 	 * custom success code to this to avoid compiler
1004 	 * warnings).
1005 	 */
1006 	CUSTOM_SUCCESS_1 = 101,
1007 	/**
1008 	 * Elements can use values starting from
1009 	 * this (and higher) to define custom success
1010 	 * codes.
1011 	 */
1012 	CUSTOM_SUCCESS = 100,
1013 	/**
1014 	 * Data passing was ok.
1015 	 */
1016 	OK = 0,
1017 	/**
1018 	 * Pad is not linked.
1019 	 */
1020 	NOT_LINKED = -1,
1021 	/**
1022 	 * Pad is flushing.
1023 	 */
1024 	FLUSHING = -2,
1025 	/**
1026 	 * Pad is EOS.
1027 	 */
1028 	EOS = -3,
1029 	/**
1030 	 * Pad is not negotiated.
1031 	 */
1032 	NOT_NEGOTIATED = -4,
1033 	/**
1034 	 * Some (fatal) error occurred. Element generating
1035 	 * this error should post an error message with more
1036 	 * details.
1037 	 */
1038 	ERROR = -5,
1039 	/**
1040 	 * This operation is not supported.
1041 	 */
1042 	NOT_SUPPORTED = -6,
1043 	/**
1044 	 * Elements can use values starting from
1045 	 * this (and lower) to define custom error codes.
1046 	 */
1047 	CUSTOM_ERROR = -100,
1048 	/**
1049 	 * Pre-defined custom error code (define your
1050 	 * custom error code to this to avoid compiler
1051 	 * warnings).
1052 	 */
1053 	CUSTOM_ERROR_1 = -101,
1054 	/**
1055 	 * Pre-defined custom error code.
1056 	 */
1057 	CUSTOM_ERROR_2 = -102,
1058 }
1059 alias GstFlowReturn FlowReturn;
1060 
1061 /**
1062  * Standard predefined formats
1063  */
1064 public enum GstFormat
1065 {
1066 	/**
1067 	 * undefined format
1068 	 */
1069 	UNDEFINED = 0,
1070 	/**
1071 	 * the default format of the pad/element. This can be
1072 	 * samples for raw audio, frames/fields for raw video (some, but not all,
1073 	 * elements support this; use @GST_FORMAT_TIME if you don't have a good
1074 	 * reason to query for samples/frames)
1075 	 */
1076 	DEFAULT = 1,
1077 	/**
1078 	 * bytes
1079 	 */
1080 	BYTES = 2,
1081 	/**
1082 	 * time in nanoseconds
1083 	 */
1084 	TIME = 3,
1085 	/**
1086 	 * buffers (few, if any, elements implement this as of
1087 	 * May 2009)
1088 	 */
1089 	BUFFERS = 4,
1090 	/**
1091 	 * percentage of stream (few, if any, elements implement
1092 	 * this as of May 2009)
1093 	 */
1094 	PERCENT = 5,
1095 }
1096 alias GstFormat Format;
1097 
1098 /**
1099  * The result of a #GstIteratorItemFunction.
1100  */
1101 public enum GstIteratorItem
1102 {
1103 	/**
1104 	 * Skip this item
1105 	 */
1106 	SKIP = 0,
1107 	/**
1108 	 * Return item
1109 	 */
1110 	PASS = 1,
1111 	/**
1112 	 * Stop after this item.
1113 	 */
1114 	END = 2,
1115 }
1116 alias GstIteratorItem IteratorItem;
1117 
1118 /**
1119  * The result of gst_iterator_next().
1120  */
1121 public enum GstIteratorResult
1122 {
1123 	/**
1124 	 * No more items in the iterator
1125 	 */
1126 	DONE = 0,
1127 	/**
1128 	 * An item was retrieved
1129 	 */
1130 	OK = 1,
1131 	/**
1132 	 * Datastructure changed while iterating
1133 	 */
1134 	RESYNC = 2,
1135 	/**
1136 	 * An error happened
1137 	 */
1138 	ERROR = 3,
1139 }
1140 alias GstIteratorResult IteratorResult;
1141 
1142 /**
1143  * Library errors are for errors from the library being used by elements
1144  * (initializing, finalizing, settings, ...)
1145  */
1146 public enum GstLibraryError
1147 {
1148 	/**
1149 	 * a general error which doesn't fit in any other
1150 	 * category.  Make sure you add a custom message to the error call.
1151 	 */
1152 	FAILED = 1,
1153 	/**
1154 	 * do not use this except as a placeholder for
1155 	 * deciding where to go while developing code.
1156 	 */
1157 	TOO_LAZY = 2,
1158 	/**
1159 	 * used when the library could not be opened.
1160 	 */
1161 	INIT = 3,
1162 	/**
1163 	 * used when the library could not be closed.
1164 	 */
1165 	SHUTDOWN = 4,
1166 	/**
1167 	 * used when the library doesn't accept settings.
1168 	 */
1169 	SETTINGS = 5,
1170 	/**
1171 	 * used when the library generated an encoding error.
1172 	 */
1173 	ENCODE = 6,
1174 	/**
1175 	 * the number of library error types.
1176 	 */
1177 	NUM_ERRORS = 7,
1178 }
1179 alias GstLibraryError LibraryError;
1180 
1181 /**
1182  * Flags used when locking miniobjects
1183  */
1184 public enum GstLockFlags
1185 {
1186 	/**
1187 	 * lock for read access
1188 	 */
1189 	READ = 1,
1190 	/**
1191 	 * lock for write access
1192 	 */
1193 	WRITE = 2,
1194 	/**
1195 	 * lock for exclusive access
1196 	 */
1197 	EXCLUSIVE = 4,
1198 	/**
1199 	 * first flag that can be used for custom purposes
1200 	 */
1201 	LAST = 256,
1202 }
1203 alias GstLockFlags LockFlags;
1204 
1205 /**
1206  * Flags used when mapping memory
1207  */
1208 public enum GstMapFlags
1209 {
1210 	/**
1211 	 * map for read access
1212 	 */
1213 	READ = 1,
1214 	/**
1215 	 * map for write access
1216 	 */
1217 	WRITE = 2,
1218 	/**
1219 	 * first flag that can be used for custom purposes
1220 	 */
1221 	FLAG_LAST = 65536,
1222 }
1223 alias GstMapFlags MapFlags;
1224 
1225 /**
1226  * Flags for wrapped memory.
1227  */
1228 public enum GstMemoryFlags
1229 {
1230 	/**
1231 	 * memory is readonly. It is not allowed to map the
1232 	 * memory with #GST_MAP_WRITE.
1233 	 */
1234 	READONLY = 2,
1235 	/**
1236 	 * memory must not be shared. Copies will have to be
1237 	 * made when this memory needs to be shared between buffers.
1238 	 */
1239 	NO_SHARE = 16,
1240 	/**
1241 	 * the memory prefix is filled with 0 bytes
1242 	 */
1243 	ZERO_PREFIXED = 32,
1244 	/**
1245 	 * the memory padding is filled with 0 bytes
1246 	 */
1247 	ZERO_PADDED = 64,
1248 	/**
1249 	 * the memory is physically contiguous. (Since 1.2)
1250 	 */
1251 	PHYSICALLY_CONTIGUOUS = 128,
1252 	/**
1253 	 * the memory can't be mapped via gst_memory_map() without any preconditions. (Since 1.2)
1254 	 */
1255 	NOT_MAPPABLE = 256,
1256 	/**
1257 	 * first flag that can be used for custom purposes
1258 	 */
1259 	LAST = 1048576,
1260 }
1261 alias GstMemoryFlags MemoryFlags;
1262 
1263 /**
1264  * The different message types that are available.
1265  */
1266 public enum GstMessageType : uint
1267 {
1268 	/**
1269 	 * an undefined message
1270 	 */
1271 	UNKNOWN = 0,
1272 	/**
1273 	 * end-of-stream reached in a pipeline. The application will
1274 	 * only receive this message in the PLAYING state and every time it sets a
1275 	 * pipeline to PLAYING that is in the EOS state. The application can perform a
1276 	 * flushing seek in the pipeline, which will undo the EOS state again.
1277 	 */
1278 	EOS = 1,
1279 	/**
1280 	 * an error occurred. When the application receives an error
1281 	 * message it should stop playback of the pipeline and not assume that more
1282 	 * data will be played.
1283 	 */
1284 	ERROR = 2,
1285 	/**
1286 	 * a warning occurred.
1287 	 */
1288 	WARNING = 4,
1289 	/**
1290 	 * an info message occurred
1291 	 */
1292 	INFO = 8,
1293 	/**
1294 	 * a tag was found.
1295 	 */
1296 	TAG = 16,
1297 	/**
1298 	 * the pipeline is buffering. When the application
1299 	 * receives a buffering message in the PLAYING state for a non-live pipeline it
1300 	 * must PAUSE the pipeline until the buffering completes, when the percentage
1301 	 * field in the message is 100%. For live pipelines, no action must be
1302 	 * performed and the buffering percentage can be used to inform the user about
1303 	 * the progress.
1304 	 */
1305 	BUFFERING = 32,
1306 	/**
1307 	 * a state change happened
1308 	 */
1309 	STATE_CHANGED = 64,
1310 	/**
1311 	 * an element changed state in a streaming thread.
1312 	 * This message is deprecated.
1313 	 */
1314 	STATE_DIRTY = 128,
1315 	/**
1316 	 * a stepping operation finished.
1317 	 */
1318 	STEP_DONE = 256,
1319 	/**
1320 	 * an element notifies its capability of providing
1321 	 * a clock. This message is used internally and
1322 	 * never forwarded to the application.
1323 	 */
1324 	CLOCK_PROVIDE = 512,
1325 	/**
1326 	 * The current clock as selected by the pipeline became
1327 	 * unusable. The pipeline will select a new clock on
1328 	 * the next PLAYING state change. The application
1329 	 * should set the pipeline to PAUSED and back to
1330 	 * PLAYING when this message is received.
1331 	 */
1332 	CLOCK_LOST = 1024,
1333 	/**
1334 	 * a new clock was selected in the pipeline.
1335 	 */
1336 	NEW_CLOCK = 2048,
1337 	/**
1338 	 * the structure of the pipeline changed. This
1339 	 * message is used internally and never forwarded to the application.
1340 	 */
1341 	STRUCTURE_CHANGE = 4096,
1342 	/**
1343 	 * status about a stream, emitted when it starts,
1344 	 * stops, errors, etc..
1345 	 */
1346 	STREAM_STATUS = 8192,
1347 	/**
1348 	 * message posted by the application, possibly
1349 	 * via an application-specific element.
1350 	 */
1351 	APPLICATION = 16384,
1352 	/**
1353 	 * element-specific message, see the specific element's
1354 	 * documentation
1355 	 */
1356 	ELEMENT = 32768,
1357 	/**
1358 	 * pipeline started playback of a segment. This
1359 	 * message is used internally and never forwarded to the application.
1360 	 */
1361 	SEGMENT_START = 65536,
1362 	/**
1363 	 * pipeline completed playback of a segment. This
1364 	 * message is forwarded to the application after all elements that posted
1365 	 * @GST_MESSAGE_SEGMENT_START posted a GST_MESSAGE_SEGMENT_DONE message.
1366 	 */
1367 	SEGMENT_DONE = 131072,
1368 	/**
1369 	 * The duration of a pipeline changed. The
1370 	 * application can get the new duration with a duration query.
1371 	 */
1372 	DURATION_CHANGED = 262144,
1373 	/**
1374 	 * Posted by elements when their latency changes. The
1375 	 * application should recalculate and distribute a new latency.
1376 	 */
1377 	LATENCY = 524288,
1378 	/**
1379 	 * Posted by elements when they start an ASYNC
1380 	 * #GstStateChange. This message is not forwarded to the application but is used
1381 	 * internally.
1382 	 */
1383 	ASYNC_START = 1048576,
1384 	/**
1385 	 * Posted by elements when they complete an ASYNC
1386 	 * #GstStateChange. The application will only receive this message from the toplevel
1387 	 * pipeline.
1388 	 */
1389 	ASYNC_DONE = 2097152,
1390 	/**
1391 	 * Posted by elements when they want the pipeline to
1392 	 * change state. This message is a suggestion to the application which can
1393 	 * decide to perform the state change on (part of) the pipeline.
1394 	 */
1395 	REQUEST_STATE = 4194304,
1396 	/**
1397 	 * A stepping operation was started.
1398 	 */
1399 	STEP_START = 8388608,
1400 	/**
1401 	 * A buffer was dropped or an element changed its processing
1402 	 * strategy for Quality of Service reasons.
1403 	 */
1404 	QOS = 16777216,
1405 	/**
1406 	 * A progress message.
1407 	 */
1408 	PROGRESS = 33554432,
1409 	/**
1410 	 * A new table of contents (TOC) was found or previously found TOC
1411 	 * was updated.
1412 	 */
1413 	TOC = 67108864,
1414 	/**
1415 	 * Message to request resetting the pipeline's
1416 	 * running time from the pipeline. This is an internal message which
1417 	 * applications will likely never receive.
1418 	 */
1419 	RESET_TIME = 134217728,
1420 	/**
1421 	 * Message indicating start of a new stream. Useful
1422 	 * e.g. when using playbin in gapless playback mode, to get notified when
1423 	 * the next title actually starts playing (which will be some time after
1424 	 * the URI for the next title has been set).
1425 	 */
1426 	STREAM_START = 268435456,
1427 	/**
1428 	 * Message indicating that an element wants a specific context (Since 1.2)
1429 	 */
1430 	NEED_CONTEXT = 536870912,
1431 	/**
1432 	 * Message indicating that an element created a context (Since 1.2)
1433 	 */
1434 	HAVE_CONTEXT = 1073741824,
1435 	/**
1436 	 * Message is an extended message type (see below).
1437 	 * These extended message IDs can't be used directly with mask-based API
1438 	 * like gst_bus_poll() or gst_bus_timed_pop_filtered(), but you can still
1439 	 * filter for GST_MESSAGE_EXTENDED and then check the result for the
1440 	 * specific type. (Since 1.4)
1441 	 */
1442 	EXTENDED = 2147483648,
1443 	/**
1444 	 * Message indicating a #GstDevice was added to
1445 	 * a #GstDeviceProvider (Since 1.4)
1446 	 */
1447 	DEVICE_ADDED = 2147483649,
1448 	/**
1449 	 * Message indicating a #GstDevice was removed
1450 	 * from a #GstDeviceProvider (Since 1.4)
1451 	 */
1452 	DEVICE_REMOVED = 2147483650,
1453 	/**
1454 	 * Message indicating a #GObject property has
1455 	 * changed (Since 1.10)
1456 	 */
1457 	PROPERTY_NOTIFY = 2147483651,
1458 	/**
1459 	 * Message indicating a new #GstStreamCollection
1460 	 * is available (Since 1.10)
1461 	 */
1462 	STREAM_COLLECTION = 2147483652,
1463 	/**
1464 	 * Message indicating the active selection of
1465 	 * #GstStreams has changed (Since 1.10)
1466 	 */
1467 	STREAMS_SELECTED = 2147483653,
1468 	/**
1469 	 * Message indicating to request the application to
1470 	 * try to play the given URL(s). Useful if for example a HTTP 302/303
1471 	 * response is received with a non-HTTP URL inside. (Since 1.10)
1472 	 */
1473 	REDIRECT = 2147483654,
1474 	/**
1475 	 * Message indicating a #GstDevice was changed
1476 	 * a #GstDeviceProvider (Since 1.16)
1477 	 */
1478 	DEVICE_CHANGED = 2147483654,
1479 	/**
1480 	 * mask for all of the above messages.
1481 	 */
1482 	ANY = 4294967295,
1483 }
1484 alias GstMessageType MessageType;
1485 
1486 /**
1487  * Extra metadata flags.
1488  */
1489 public enum GstMetaFlags
1490 {
1491 	/**
1492 	 * no flags
1493 	 */
1494 	NONE = 0,
1495 	/**
1496 	 * metadata should not be modified
1497 	 */
1498 	READONLY = 1,
1499 	/**
1500 	 * metadata is managed by a bufferpool
1501 	 */
1502 	POOLED = 2,
1503 	/**
1504 	 * metadata should not be removed
1505 	 */
1506 	LOCKED = 4,
1507 	/**
1508 	 * additional flags can be added starting from this flag.
1509 	 */
1510 	LAST = 65536,
1511 }
1512 alias GstMetaFlags MetaFlags;
1513 
1514 /**
1515  * Flags for the mini object
1516  */
1517 public enum GstMiniObjectFlags
1518 {
1519 	/**
1520 	 * the object can be locked and unlocked with
1521 	 * gst_mini_object_lock() and gst_mini_object_unlock().
1522 	 */
1523 	LOCKABLE = 1,
1524 	/**
1525 	 * the object is permanently locked in
1526 	 * READONLY mode. Only read locks can be performed on the object.
1527 	 */
1528 	LOCK_READONLY = 2,
1529 	/**
1530 	 * the object is expected to stay alive
1531 	 * even after gst_deinit() has been called and so should be ignored by leak
1532 	 * detection tools. (Since 1.10)
1533 	 */
1534 	MAY_BE_LEAKED = 4,
1535 	/**
1536 	 * first flag that can be used by subclasses.
1537 	 */
1538 	LAST = 16,
1539 }
1540 alias GstMiniObjectFlags MiniObjectFlags;
1541 
1542 /**
1543  * The standard flags that an gstobject may have.
1544  */
1545 public enum GstObjectFlags
1546 {
1547 	/**
1548 	 * the object is expected to stay alive even
1549 	 * after gst_deinit() has been called and so should be ignored by leak
1550 	 * detection tools. (Since 1.10)
1551 	 */
1552 	MAY_BE_LEAKED = 1,
1553 	/**
1554 	 * subclasses can add additional flags starting from this flag
1555 	 */
1556 	LAST = 16,
1557 }
1558 alias GstObjectFlags ObjectFlags;
1559 
1560 /**
1561  * The direction of a pad.
1562  */
1563 public enum GstPadDirection
1564 {
1565 	/**
1566 	 * direction is unknown.
1567 	 */
1568 	UNKNOWN = 0,
1569 	/**
1570 	 * the pad is a source pad.
1571 	 */
1572 	SRC = 1,
1573 	/**
1574 	 * the pad is a sink pad.
1575 	 */
1576 	SINK = 2,
1577 }
1578 alias GstPadDirection PadDirection;
1579 
1580 /**
1581  * Pad state flags
1582  */
1583 public enum GstPadFlags
1584 {
1585 	/**
1586 	 * is dataflow on a pad blocked
1587 	 */
1588 	BLOCKED = 16,
1589 	/**
1590 	 * is pad flushing
1591 	 */
1592 	FLUSHING = 32,
1593 	/**
1594 	 * is pad in EOS state
1595 	 */
1596 	EOS = 64,
1597 	/**
1598 	 * is pad currently blocking on a buffer or event
1599 	 */
1600 	BLOCKING = 128,
1601 	/**
1602 	 * ensure that there is a parent object before calling
1603 	 * into the pad callbacks.
1604 	 */
1605 	NEED_PARENT = 256,
1606 	/**
1607 	 * the pad should be reconfigured/renegotiated.
1608 	 * The flag has to be unset manually after
1609 	 * reconfiguration happened.
1610 	 */
1611 	NEED_RECONFIGURE = 512,
1612 	/**
1613 	 * the pad has pending events
1614 	 */
1615 	PENDING_EVENTS = 1024,
1616 	/**
1617 	 * the pad is using fixed caps. This means that
1618 	 * once the caps are set on the pad, the default caps query function
1619 	 * will only return those caps.
1620 	 */
1621 	FIXED_CAPS = 2048,
1622 	/**
1623 	 * the default event and query handler will forward
1624 	 * all events and queries to the internally linked pads
1625 	 * instead of discarding them.
1626 	 */
1627 	PROXY_CAPS = 4096,
1628 	/**
1629 	 * the default query handler will forward
1630 	 * allocation queries to the internally linked pads
1631 	 * instead of discarding them.
1632 	 */
1633 	PROXY_ALLOCATION = 8192,
1634 	/**
1635 	 * the default query handler will forward
1636 	 * scheduling queries to the internally linked pads
1637 	 * instead of discarding them.
1638 	 */
1639 	PROXY_SCHEDULING = 16384,
1640 	/**
1641 	 * the default accept-caps handler will check
1642 	 * it the caps intersect the query-caps result instead
1643 	 * of checking for a subset. This is interesting for
1644 	 * parsers that can accept incompletely specified caps.
1645 	 */
1646 	ACCEPT_INTERSECT = 32768,
1647 	/**
1648 	 * the default accept-caps handler will use
1649 	 * the template pad caps instead of query caps to
1650 	 * compare with the accept caps. Use this in combination
1651 	 * with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since 1.6)
1652 	 */
1653 	ACCEPT_TEMPLATE = 65536,
1654 	/**
1655 	 * offset to define more flags
1656 	 */
1657 	LAST = 1048576,
1658 }
1659 alias GstPadFlags PadFlags;
1660 
1661 /**
1662  * The amount of checking to be done when linking pads. @GST_PAD_LINK_CHECK_CAPS
1663  * and @GST_PAD_LINK_CHECK_TEMPLATE_CAPS are mutually exclusive. If both are
1664  * specified, expensive but safe @GST_PAD_LINK_CHECK_CAPS are performed.
1665  *
1666  * > Only disable some of the checks if you are 100% certain you know the link
1667  * > will not fail because of hierarchy/caps compatibility failures. If uncertain,
1668  * > use the default checks (%GST_PAD_LINK_CHECK_DEFAULT) or the regular methods
1669  * > for linking the pads.
1670  */
1671 public enum GstPadLinkCheck
1672 {
1673 	/**
1674 	 * Don't check hierarchy or caps compatibility.
1675 	 */
1676 	NOTHING = 0,
1677 	/**
1678 	 * Check the pads have same parents/grandparents.
1679 	 * Could be omitted if it is already known that the two elements that own the
1680 	 * pads are in the same bin.
1681 	 */
1682 	HIERARCHY = 1,
1683 	/**
1684 	 * Check if the pads are compatible by using
1685 	 * their template caps. This is much faster than @GST_PAD_LINK_CHECK_CAPS, but
1686 	 * would be unsafe e.g. if one pad has %GST_CAPS_ANY.
1687 	 */
1688 	TEMPLATE_CAPS = 2,
1689 	/**
1690 	 * Check if the pads are compatible by comparing the
1691 	 * caps returned by gst_pad_query_caps().
1692 	 */
1693 	CAPS = 4,
1694 	/**
1695 	 * Disables pushing a reconfigure event when pads are
1696 	 * linked.
1697 	 */
1698 	NO_RECONFIGURE = 8,
1699 	/**
1700 	 * The default checks done when linking
1701 	 * pads (i.e. the ones used by gst_pad_link()).
1702 	 */
1703 	DEFAULT = 5,
1704 }
1705 alias GstPadLinkCheck PadLinkCheck;
1706 
1707 /**
1708  * Result values from gst_pad_link and friends.
1709  */
1710 public enum GstPadLinkReturn
1711 {
1712 	/**
1713 	 * link succeeded
1714 	 */
1715 	OK = 0,
1716 	/**
1717 	 * pads have no common grandparent
1718 	 */
1719 	WRONG_HIERARCHY = -1,
1720 	/**
1721 	 * pad was already linked
1722 	 */
1723 	WAS_LINKED = -2,
1724 	/**
1725 	 * pads have wrong direction
1726 	 */
1727 	WRONG_DIRECTION = -3,
1728 	/**
1729 	 * pads do not have common format
1730 	 */
1731 	NOFORMAT = -4,
1732 	/**
1733 	 * pads cannot cooperate in scheduling
1734 	 */
1735 	NOSCHED = -5,
1736 	/**
1737 	 * refused for some reason
1738 	 */
1739 	REFUSED = -6,
1740 }
1741 alias GstPadLinkReturn PadLinkReturn;
1742 
1743 /**
1744  * The status of a GstPad. After activating a pad, which usually happens when the
1745  * parent element goes from READY to PAUSED, the GstPadMode defines if the
1746  * pad operates in push or pull mode.
1747  */
1748 public enum GstPadMode
1749 {
1750 	/**
1751 	 * Pad will not handle dataflow
1752 	 */
1753 	NONE = 0,
1754 	/**
1755 	 * Pad handles dataflow in downstream push mode
1756 	 */
1757 	PUSH = 1,
1758 	/**
1759 	 * Pad handles dataflow in upstream pull mode
1760 	 */
1761 	PULL = 2,
1762 }
1763 alias GstPadMode PadMode;
1764 
1765 /**
1766  * Indicates when this pad will become available.
1767  */
1768 public enum GstPadPresence
1769 {
1770 	/**
1771 	 * the pad is always available
1772 	 */
1773 	ALWAYS = 0,
1774 	/**
1775 	 * the pad will become available depending on the media stream
1776 	 */
1777 	SOMETIMES = 1,
1778 	/**
1779 	 * the pad is only available on request with
1780 	 * gst_element_request_pad().
1781 	 */
1782 	REQUEST = 2,
1783 }
1784 alias GstPadPresence PadPresence;
1785 
1786 /**
1787  * Different return values for the #GstPadProbeCallback.
1788  */
1789 public enum GstPadProbeReturn
1790 {
1791 	/**
1792 	 * drop data in data probes. For push mode this means that
1793 	 * the data item is not sent downstream. For pull mode, it means that
1794 	 * the data item is not passed upstream. In both cases, no other probes
1795 	 * are called for this item and %GST_FLOW_OK or %TRUE is returned to the
1796 	 * caller.
1797 	 */
1798 	DROP = 0,
1799 	/**
1800 	 * normal probe return value. This leaves the probe in
1801 	 * place, and defers decisions about dropping or passing data to other
1802 	 * probes, if any. If there are no other probes, the default behaviour
1803 	 * for the probe type applies ('block' for blocking probes,
1804 	 * and 'pass' for non-blocking probes).
1805 	 */
1806 	OK = 1,
1807 	/**
1808 	 * remove this probe.
1809 	 */
1810 	REMOVE = 2,
1811 	/**
1812 	 * pass the data item in the block probe and block on the
1813 	 * next item.
1814 	 */
1815 	PASS = 3,
1816 	/**
1817 	 * Data has been handled in the probe and will not be
1818 	 * forwarded further. For events and buffers this is the same behaviour as
1819 	 * %GST_PAD_PROBE_DROP (except that in this case you need to unref the buffer
1820 	 * or event yourself). For queries it will also return %TRUE to the caller.
1821 	 * The probe can also modify the #GstFlowReturn value by using the
1822 	 * #GST_PAD_PROBE_INFO_FLOW_RETURN() accessor.
1823 	 * Note that the resulting query must contain valid entries.
1824 	 * Since: 1.6
1825 	 */
1826 	HANDLED = 4,
1827 }
1828 alias GstPadProbeReturn PadProbeReturn;
1829 
1830 /**
1831  * The different probing types that can occur. When either one of
1832  * @GST_PAD_PROBE_TYPE_IDLE or @GST_PAD_PROBE_TYPE_BLOCK is used, the probe will be a
1833  * blocking probe.
1834  */
1835 public enum GstPadProbeType
1836 {
1837 	/**
1838 	 * invalid probe type
1839 	 */
1840 	INVALID = 0,
1841 	/**
1842 	 * probe idle pads and block while the callback is called
1843 	 */
1844 	IDLE = 1,
1845 	/**
1846 	 * probe and block pads
1847 	 */
1848 	BLOCK = 2,
1849 	/**
1850 	 * probe buffers
1851 	 */
1852 	BUFFER = 16,
1853 	/**
1854 	 * probe buffer lists
1855 	 */
1856 	BUFFER_LIST = 32,
1857 	/**
1858 	 * probe downstream events
1859 	 */
1860 	EVENT_DOWNSTREAM = 64,
1861 	/**
1862 	 * probe upstream events
1863 	 */
1864 	EVENT_UPSTREAM = 128,
1865 	/**
1866 	 * probe flush events. This probe has to be
1867 	 * explicitly enabled and is not included in the
1868 	 * @@GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM or
1869 	 * @@GST_PAD_PROBE_TYPE_EVENT_UPSTREAM probe types.
1870 	 */
1871 	EVENT_FLUSH = 256,
1872 	/**
1873 	 * probe downstream queries
1874 	 */
1875 	QUERY_DOWNSTREAM = 512,
1876 	/**
1877 	 * probe upstream queries
1878 	 */
1879 	QUERY_UPSTREAM = 1024,
1880 	/**
1881 	 * probe push
1882 	 */
1883 	PUSH = 4096,
1884 	/**
1885 	 * probe pull
1886 	 */
1887 	PULL = 8192,
1888 	/**
1889 	 * probe and block at the next opportunity, at data flow or when idle
1890 	 */
1891 	BLOCKING = 3,
1892 	/**
1893 	 * probe downstream data (buffers, buffer lists, and events)
1894 	 */
1895 	DATA_DOWNSTREAM = 112,
1896 	/**
1897 	 * probe upstream data (events)
1898 	 */
1899 	DATA_UPSTREAM = 128,
1900 	/**
1901 	 * probe upstream and downstream data (buffers, buffer lists, and events)
1902 	 */
1903 	DATA_BOTH = 240,
1904 	/**
1905 	 * probe and block downstream data (buffers, buffer lists, and events)
1906 	 */
1907 	BLOCK_DOWNSTREAM = 114,
1908 	/**
1909 	 * probe and block upstream data (events)
1910 	 */
1911 	BLOCK_UPSTREAM = 130,
1912 	/**
1913 	 * probe upstream and downstream events
1914 	 */
1915 	EVENT_BOTH = 192,
1916 	/**
1917 	 * probe upstream and downstream queries
1918 	 */
1919 	QUERY_BOTH = 1536,
1920 	/**
1921 	 * probe upstream events and queries and downstream buffers, buffer lists, events and queries
1922 	 */
1923 	ALL_BOTH = 1776,
1924 	/**
1925 	 * probe push and pull
1926 	 */
1927 	SCHEDULING = 12288,
1928 }
1929 alias GstPadProbeType PadProbeType;
1930 
1931 /**
1932  * Flags for the padtemplate
1933  */
1934 public enum GstPadTemplateFlags
1935 {
1936 	/**
1937 	 * first flag that can be used by subclasses.
1938 	 */
1939 	LAST = 256,
1940 }
1941 alias GstPadTemplateFlags PadTemplateFlags;
1942 
1943 /**
1944  * The different parsing errors that can occur.
1945  */
1946 public enum GstParseError
1947 {
1948 	/**
1949 	 * A syntax error occurred.
1950 	 */
1951 	SYNTAX = 0,
1952 	/**
1953 	 * The description contained an unknown element
1954 	 */
1955 	NO_SUCH_ELEMENT = 1,
1956 	/**
1957 	 * An element did not have a specified property
1958 	 */
1959 	NO_SUCH_PROPERTY = 2,
1960 	/**
1961 	 * There was an error linking two pads.
1962 	 */
1963 	LINK = 3,
1964 	/**
1965 	 * There was an error setting a property
1966 	 */
1967 	COULD_NOT_SET_PROPERTY = 4,
1968 	/**
1969 	 * An empty bin was specified.
1970 	 */
1971 	EMPTY_BIN = 5,
1972 	/**
1973 	 * An empty description was specified
1974 	 */
1975 	EMPTY = 6,
1976 	/**
1977 	 * A delayed link did not get resolved.
1978 	 */
1979 	DELAYED_LINK = 7,
1980 }
1981 alias GstParseError ParseError;
1982 
1983 /**
1984  * Parsing options.
1985  */
1986 public enum GstParseFlags
1987 {
1988 	/**
1989 	 * Do not use any special parsing options.
1990 	 */
1991 	NONE = 0,
1992 	/**
1993 	 * Always return %NULL when an error occurs
1994 	 * (default behaviour is to return partially constructed bins or elements
1995 	 * in some cases)
1996 	 */
1997 	FATAL_ERRORS = 1,
1998 	/**
1999 	 * If a bin only has a single element,
2000 	 * just return the element.
2001 	 */
2002 	NO_SINGLE_ELEMENT_BINS = 2,
2003 	/**
2004 	 * If more than one toplevel element is described
2005 	 * by the pipeline description string, put them in a #GstBin instead of a
2006 	 * #GstPipeline. (Since 1.10)
2007 	 */
2008 	PLACE_IN_BIN = 4,
2009 }
2010 alias GstParseFlags ParseFlags;
2011 
2012 /**
2013  * Pipeline flags
2014  */
2015 public enum GstPipelineFlags
2016 {
2017 	/**
2018 	 * this pipeline works with a fixed clock
2019 	 */
2020 	FIXED_CLOCK = 524288,
2021 	/**
2022 	 * offset to define more flags
2023 	 */
2024 	LAST = 8388608,
2025 }
2026 alias GstPipelineFlags PipelineFlags;
2027 
2028 /**
2029  * Flags used in connection with gst_plugin_add_dependency().
2030  */
2031 public enum GstPluginDependencyFlags
2032 {
2033 	/**
2034 	 * no special flags
2035 	 */
2036 	NONE = 0,
2037 	/**
2038 	 * recurse into subdirectories
2039 	 */
2040 	RECURSE = 1,
2041 	/**
2042 	 * use paths
2043 	 * argument only if none of the environment variables is set
2044 	 */
2045 	PATHS_ARE_DEFAULT_ONLY = 2,
2046 	/**
2047 	 * interpret
2048 	 * filename argument as filter suffix and check all matching files in
2049 	 * the directory
2050 	 */
2051 	FILE_NAME_IS_SUFFIX = 4,
2052 	/**
2053 	 * interpret
2054 	 * filename argument as filter prefix and check all matching files in
2055 	 * the directory. Since 1.8.
2056 	 */
2057 	FILE_NAME_IS_PREFIX = 8,
2058 	/**
2059 	 * interpret
2060 	 * non-absolute paths as relative to the main executable directory. Since
2061 	 * 1.14.
2062 	 */
2063 	PATHS_ARE_RELATIVE_TO_EXE = 16,
2064 }
2065 alias GstPluginDependencyFlags PluginDependencyFlags;
2066 
2067 /**
2068  * The plugin loading errors
2069  */
2070 public enum GstPluginError
2071 {
2072 	/**
2073 	 * The plugin could not be loaded
2074 	 */
2075 	MODULE = 0,
2076 	/**
2077 	 * The plugin has unresolved dependencies
2078 	 */
2079 	DEPENDENCIES = 1,
2080 	/**
2081 	 * The plugin has already be loaded from a different file
2082 	 */
2083 	NAME_MISMATCH = 2,
2084 }
2085 alias GstPluginError PluginError;
2086 
2087 /**
2088  * The plugin loading state
2089  */
2090 public enum GstPluginFlags
2091 {
2092 	/**
2093 	 * Temporarily loaded plugins
2094 	 */
2095 	CACHED = 16,
2096 	/**
2097 	 * The plugin won't be scanned (again)
2098 	 */
2099 	BLACKLISTED = 32,
2100 }
2101 alias GstPluginFlags PluginFlags;
2102 
2103 /**
2104  * The type of a %GST_MESSAGE_PROGRESS. The progress messages inform the
2105  * application of the status of asynchronous tasks.
2106  */
2107 public enum GstProgressType
2108 {
2109 	/**
2110 	 * A new task started.
2111 	 */
2112 	START = 0,
2113 	/**
2114 	 * A task completed and a new one continues.
2115 	 */
2116 	CONTINUE = 1,
2117 	/**
2118 	 * A task completed.
2119 	 */
2120 	COMPLETE = 2,
2121 	/**
2122 	 * A task was canceled.
2123 	 */
2124 	CANCELED = 3,
2125 	/**
2126 	 * A task caused an error. An error message is also
2127 	 * posted on the bus.
2128 	 */
2129 	ERROR = 4,
2130 }
2131 alias GstProgressType ProgressType;
2132 
2133 /**
2134  * The result of a #GstPromise
2135  *
2136  * Since: 1.14
2137  */
2138 public enum GstPromiseResult
2139 {
2140 	/**
2141 	 * Initial state. Waiting for transition to any
2142 	 * other state.
2143 	 */
2144 	PENDING = 0,
2145 	/**
2146 	 * Interrupted by the consumer as it doesn't
2147 	 * want the value anymore.
2148 	 */
2149 	INTERRUPTED = 1,
2150 	/**
2151 	 * A producer marked a reply
2152 	 */
2153 	REPLIED = 2,
2154 	/**
2155 	 * The promise expired (the carrying object
2156 	 * lost all refs) and the promise will never be fulfilled.
2157 	 */
2158 	EXPIRED = 3,
2159 }
2160 alias GstPromiseResult PromiseResult;
2161 
2162 /**
2163  * The different types of QoS events that can be given to the
2164  * gst_event_new_qos() method.
2165  */
2166 public enum GstQOSType
2167 {
2168 	/**
2169 	 * The QoS event type that is produced when upstream
2170 	 * elements are producing data too quickly and the element can't keep up
2171 	 * processing the data. Upstream should reduce their production rate. This
2172 	 * type is also used when buffers arrive early or in time.
2173 	 */
2174 	OVERFLOW = 0,
2175 	/**
2176 	 * The QoS event type that is produced when upstream
2177 	 * elements are producing data too slowly and need to speed up their
2178 	 * production rate.
2179 	 */
2180 	UNDERFLOW = 1,
2181 	/**
2182 	 * The QoS event type that is produced when the
2183 	 * application enabled throttling to limit the data rate.
2184 	 */
2185 	THROTTLE = 2,
2186 }
2187 alias GstQOSType QOSType;
2188 
2189 /**
2190  * Standard predefined Query types
2191  */
2192 public enum GstQueryType
2193 {
2194 	/**
2195 	 * unknown query type
2196 	 */
2197 	UNKNOWN = 0,
2198 	/**
2199 	 * current position in stream
2200 	 */
2201 	POSITION = 2563,
2202 	/**
2203 	 * total duration of the stream
2204 	 */
2205 	DURATION = 5123,
2206 	/**
2207 	 * latency of stream
2208 	 */
2209 	LATENCY = 7683,
2210 	/**
2211 	 * current jitter of stream
2212 	 */
2213 	JITTER = 10243,
2214 	/**
2215 	 * current rate of the stream
2216 	 */
2217 	RATE = 12803,
2218 	/**
2219 	 * seeking capabilities
2220 	 */
2221 	SEEKING = 15363,
2222 	/**
2223 	 * segment start/stop positions
2224 	 */
2225 	SEGMENT = 17923,
2226 	/**
2227 	 * convert values between formats
2228 	 */
2229 	CONVERT = 20483,
2230 	/**
2231 	 * query supported formats for convert
2232 	 */
2233 	FORMATS = 23043,
2234 	/**
2235 	 * query available media for efficient seeking.
2236 	 */
2237 	BUFFERING = 28163,
2238 	/**
2239 	 * a custom application or element defined query.
2240 	 */
2241 	CUSTOM = 30723,
2242 	/**
2243 	 * query the URI of the source or sink.
2244 	 */
2245 	URI = 33283,
2246 	/**
2247 	 * the buffer allocation properties
2248 	 */
2249 	ALLOCATION = 35846,
2250 	/**
2251 	 * the scheduling properties
2252 	 */
2253 	SCHEDULING = 38401,
2254 	/**
2255 	 * the accept caps query
2256 	 */
2257 	ACCEPT_CAPS = 40963,
2258 	/**
2259 	 * the caps query
2260 	 */
2261 	CAPS = 43523,
2262 	/**
2263 	 * wait till all serialized data is consumed downstream
2264 	 */
2265 	DRAIN = 46086,
2266 	/**
2267 	 * query the pipeline-local context from
2268 	 * downstream or upstream (since 1.2)
2269 	 */
2270 	CONTEXT = 48643,
2271 	/**
2272 	 * the bitrate query (since 1.16)
2273 	 */
2274 	BITRATE = 51202,
2275 }
2276 alias GstQueryType QueryType;
2277 
2278 /**
2279  * #GstQueryTypeFlags indicate the aspects of the different #GstQueryType
2280  * values. You can get the type flags of a #GstQueryType with the
2281  * gst_query_type_get_flags() function.
2282  */
2283 public enum GstQueryTypeFlags
2284 {
2285 	/**
2286 	 * Set if the query can travel upstream.
2287 	 */
2288 	UPSTREAM = 1,
2289 	/**
2290 	 * Set if the query can travel downstream.
2291 	 */
2292 	DOWNSTREAM = 2,
2293 	/**
2294 	 * Set if the query should be serialized with data
2295 	 * flow.
2296 	 */
2297 	SERIALIZED = 4,
2298 }
2299 alias GstQueryTypeFlags QueryTypeFlags;
2300 
2301 /**
2302  * Element priority ranks. Defines the order in which the autoplugger (or
2303  * similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri())
2304  * will choose this element over an alternative one with the same function.
2305  *
2306  * These constants serve as a rough guidance for defining the rank of a
2307  * #GstPluginFeature. Any value is valid, including values bigger than
2308  * @GST_RANK_PRIMARY.
2309  */
2310 public enum GstRank
2311 {
2312 	/**
2313 	 * will be chosen last or not at all
2314 	 */
2315 	NONE = 0,
2316 	/**
2317 	 * unlikely to be chosen
2318 	 */
2319 	MARGINAL = 64,
2320 	/**
2321 	 * likely to be chosen
2322 	 */
2323 	SECONDARY = 128,
2324 	/**
2325 	 * will be chosen first
2326 	 */
2327 	PRIMARY = 256,
2328 }
2329 alias GstRank Rank;
2330 
2331 /**
2332  * Resource errors are for any resource used by an element:
2333  * memory, files, network connections, process space, ...
2334  * They're typically used by source and sink elements.
2335  */
2336 public enum GstResourceError
2337 {
2338 	/**
2339 	 * a general error which doesn't fit in any other
2340 	 * category.  Make sure you add a custom message to the error call.
2341 	 */
2342 	FAILED = 1,
2343 	/**
2344 	 * do not use this except as a placeholder for
2345 	 * deciding where to go while developing code.
2346 	 */
2347 	TOO_LAZY = 2,
2348 	/**
2349 	 * used when the resource could not be found.
2350 	 */
2351 	NOT_FOUND = 3,
2352 	/**
2353 	 * used when resource is busy.
2354 	 */
2355 	BUSY = 4,
2356 	/**
2357 	 * used when resource fails to open for reading.
2358 	 */
2359 	OPEN_READ = 5,
2360 	/**
2361 	 * used when resource fails to open for writing.
2362 	 */
2363 	OPEN_WRITE = 6,
2364 	/**
2365 	 * used when resource cannot be opened for
2366 	 * both reading and writing, or either (but unspecified which).
2367 	 */
2368 	OPEN_READ_WRITE = 7,
2369 	/**
2370 	 * used when the resource can't be closed.
2371 	 */
2372 	CLOSE = 8,
2373 	/**
2374 	 * used when the resource can't be read from.
2375 	 */
2376 	READ = 9,
2377 	/**
2378 	 * used when the resource can't be written to.
2379 	 */
2380 	WRITE = 10,
2381 	/**
2382 	 * used when a seek on the resource fails.
2383 	 */
2384 	SEEK = 11,
2385 	/**
2386 	 * used when a synchronize on the resource fails.
2387 	 */
2388 	SYNC = 12,
2389 	/**
2390 	 * used when settings can't be manipulated on.
2391 	 */
2392 	SETTINGS = 13,
2393 	/**
2394 	 * used when the resource has no space left.
2395 	 */
2396 	NO_SPACE_LEFT = 14,
2397 	/**
2398 	 * used when the resource can't be opened
2399 	 * due to missing authorization.
2400 	 * (Since 1.2.4)
2401 	 */
2402 	NOT_AUTHORIZED = 15,
2403 	/**
2404 	 * the number of resource error types.
2405 	 */
2406 	NUM_ERRORS = 16,
2407 }
2408 alias GstResourceError ResourceError;
2409 
2410 /**
2411  * The different scheduling flags.
2412  */
2413 public enum GstSchedulingFlags
2414 {
2415 	/**
2416 	 * if seeking is possible
2417 	 */
2418 	SEEKABLE = 1,
2419 	/**
2420 	 * if sequential access is recommended
2421 	 */
2422 	SEQUENTIAL = 2,
2423 	/**
2424 	 * if bandwidth is limited and buffering possible (since 1.2)
2425 	 */
2426 	BANDWIDTH_LIMITED = 4,
2427 }
2428 alias GstSchedulingFlags SchedulingFlags;
2429 
2430 /**
2431  * The different search modes.
2432  */
2433 public enum GstSearchMode
2434 {
2435 	/**
2436 	 * Only search for exact matches.
2437 	 */
2438 	EXACT = 0,
2439 	/**
2440 	 * Search for an exact match or the element just before.
2441 	 */
2442 	BEFORE = 1,
2443 	/**
2444 	 * Search for an exact match or the element just after.
2445 	 */
2446 	AFTER = 2,
2447 }
2448 alias GstSearchMode SearchMode;
2449 
2450 /**
2451  * Flags to be used with gst_element_seek() or gst_event_new_seek(). All flags
2452  * can be used together.
2453  *
2454  * A non flushing seek might take some time to perform as the currently
2455  * playing data in the pipeline will not be cleared.
2456  *
2457  * An accurate seek might be slower for formats that don't have any indexes
2458  * or timestamp markers in the stream. Specifying this flag might require a
2459  * complete scan of the file in those cases.
2460  *
2461  * When performing a segment seek: after the playback of the segment completes,
2462  * no EOS will be emitted by the element that performed the seek, but a
2463  * %GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
2464  * When this message is posted, it is possible to send a new seek event to
2465  * continue playback. With this seek method it is possible to perform seamless
2466  * looping or simple linear editing.
2467  *
2468  * When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode
2469  * playback, the %GST_SEEK_FLAG_TRICKMODE flag can be used to instruct decoders
2470  * and demuxers to adjust the playback rate by skipping frames. This can improve
2471  * performance and decrease CPU usage because not all frames need to be decoded.
2472  *
2473  * Beyond that, the %GST_SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to
2474  * request that decoders skip all frames except key units, and
2475  * %GST_SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio
2476  * decoders do no decoding at all, and simple output silence.
2477  *
2478  * The %GST_SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous
2479  * relevant location, and the %GST_SEEK_FLAG_SNAP_AFTER flag can be used to
2480  * select the next relevant location. If %GST_SEEK_FLAG_KEY_UNIT is specified,
2481  * the relevant location is a keyframe. If both flags are specified, the nearest
2482  * of these locations will be selected. If none are specified, the implementation is
2483  * free to select whichever it wants.
2484  *
2485  * The before and after here are in running time, so when playing backwards,
2486  * the next location refers to the one that will played in next, and not the
2487  * one that is located after in the actual source stream.
2488  *
2489  * Also see part-seeking.txt in the GStreamer design documentation for more
2490  * details on the meaning of these flags and the behaviour expected of
2491  * elements that handle them.
2492  */
2493 public enum GstSeekFlags
2494 {
2495 	/**
2496 	 * no flag
2497 	 */
2498 	NONE = 0,
2499 	/**
2500 	 * flush pipeline
2501 	 */
2502 	FLUSH = 1,
2503 	/**
2504 	 * accurate position is requested, this might
2505 	 * be considerably slower for some formats.
2506 	 */
2507 	ACCURATE = 2,
2508 	/**
2509 	 * seek to the nearest keyframe. This might be
2510 	 * faster but less accurate.
2511 	 */
2512 	KEY_UNIT = 4,
2513 	/**
2514 	 * perform a segment seek.
2515 	 */
2516 	SEGMENT = 8,
2517 	/**
2518 	 * when doing fast forward or fast reverse playback, allow
2519 	 * elements to skip frames instead of generating all
2520 	 * frames. (Since 1.6)
2521 	 */
2522 	TRICKMODE = 16,
2523 	/**
2524 	 * Deprecated backward compatibility flag, replaced
2525 	 * by %GST_SEEK_FLAG_TRICKMODE
2526 	 */
2527 	SKIP = 16,
2528 	/**
2529 	 * go to a location before the requested position,
2530 	 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at or before
2531 	 * the requested position the one at or before the seek target.
2532 	 */
2533 	SNAP_BEFORE = 32,
2534 	/**
2535 	 * go to a location after the requested position,
2536 	 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe at of after the
2537 	 * requested position.
2538 	 */
2539 	SNAP_AFTER = 64,
2540 	/**
2541 	 * go to a position near the requested position,
2542 	 * if %GST_SEEK_FLAG_KEY_UNIT this means the keyframe closest
2543 	 * to the requested position, if both keyframes are at an equal
2544 	 * distance, behaves like %GST_SEEK_FLAG_SNAP_BEFORE.
2545 	 */
2546 	SNAP_NEAREST = 96,
2547 	/**
2548 	 * when doing fast forward or fast reverse
2549 	 * playback, request that elements only decode keyframes
2550 	 * and skip all other content, for formats that have
2551 	 * keyframes. (Since 1.6)
2552 	 */
2553 	TRICKMODE_KEY_UNITS = 128,
2554 	/**
2555 	 * when doing fast forward or fast reverse
2556 	 * playback, request that audio decoder elements skip
2557 	 * decoding and output only gap events or silence. (Since 1.6)
2558 	 */
2559 	TRICKMODE_NO_AUDIO = 256,
2560 }
2561 alias GstSeekFlags SeekFlags;
2562 
2563 /**
2564  * The different types of seek events. When constructing a seek event with
2565  * gst_event_new_seek() or when doing gst_segment_do_seek ().
2566  */
2567 public enum GstSeekType
2568 {
2569 	/**
2570 	 * no change in position is required
2571 	 */
2572 	NONE = 0,
2573 	/**
2574 	 * absolute position is requested
2575 	 */
2576 	SET = 1,
2577 	/**
2578 	 * relative position to duration is requested
2579 	 */
2580 	END = 2,
2581 }
2582 alias GstSeekType SeekType;
2583 
2584 /**
2585  * Flags for the GstSegment structure. Currently mapped to the corresponding
2586  * values of the seek flags.
2587  */
2588 public enum GstSegmentFlags
2589 {
2590 	/**
2591 	 * no flags
2592 	 */
2593 	NONE = 0,
2594 	/**
2595 	 * reset the pipeline running_time to the segment
2596 	 * running_time
2597 	 */
2598 	RESET = 1,
2599 	/**
2600 	 * perform skip playback (Since 1.6)
2601 	 */
2602 	TRICKMODE = 16,
2603 	/**
2604 	 * Deprecated backward compatibility flag, replaced
2605 	 * by @GST_SEGMENT_FLAG_TRICKMODE
2606 	 */
2607 	SKIP = 16,
2608 	/**
2609 	 * send SEGMENT_DONE instead of EOS
2610 	 */
2611 	SEGMENT = 8,
2612 	/**
2613 	 * Decode only keyframes, where
2614 	 * possible (Since 1.6)
2615 	 */
2616 	TRICKMODE_KEY_UNITS = 128,
2617 	/**
2618 	 * Do not decode any audio, where
2619 	 * possible (Since 1.6)
2620 	 */
2621 	TRICKMODE_NO_AUDIO = 256,
2622 }
2623 alias GstSegmentFlags SegmentFlags;
2624 
2625 public enum GstStackTraceFlags
2626 {
2627 	/**
2628 	 * Try to retrieve as much information as
2629 	 * possible when getting the stack trace
2630 	 */
2631 	FULL = 1,
2632 }
2633 alias GstStackTraceFlags StackTraceFlags;
2634 
2635 /**
2636  * The possible states an element can be in. States can be changed using
2637  * gst_element_set_state() and checked using gst_element_get_state().
2638  */
2639 public enum GstState
2640 {
2641 	/**
2642 	 * no pending state.
2643 	 */
2644 	VOID_PENDING = 0,
2645 	/**
2646 	 * the NULL state or initial state of an element.
2647 	 */
2648 	NULL = 1,
2649 	/**
2650 	 * the element is ready to go to PAUSED.
2651 	 */
2652 	READY = 2,
2653 	/**
2654 	 * the element is PAUSED, it is ready to accept and
2655 	 * process data. Sink elements however only accept one
2656 	 * buffer and then block.
2657 	 */
2658 	PAUSED = 3,
2659 	/**
2660 	 * the element is PLAYING, the #GstClock is running and
2661 	 * the data is flowing.
2662 	 */
2663 	PLAYING = 4,
2664 }
2665 alias GstState State;
2666 
2667 /**
2668  * These are the different state changes an element goes through.
2669  * %GST_STATE_NULL &rArr; %GST_STATE_PLAYING is called an upwards state change
2670  * and %GST_STATE_PLAYING &rArr; %GST_STATE_NULL a downwards state change.
2671  */
2672 public enum GstStateChange
2673 {
2674 	/**
2675 	 * state change from NULL to READY.
2676 	 * * The element must check if the resources it needs are available. Device
2677 	 * sinks and -sources typically try to probe the device to constrain their
2678 	 * caps.
2679 	 * * The element opens the device (in case feature need to be probed).
2680 	 */
2681 	NULL_TO_READY = 10,
2682 	/**
2683 	 * state change from READY to PAUSED.
2684 	 * * The element pads are activated in order to receive data in PAUSED.
2685 	 * Streaming threads are started.
2686 	 * * Some elements might need to return %GST_STATE_CHANGE_ASYNC and complete
2687 	 * the state change when they have enough information. It is a requirement
2688 	 * for sinks to return %GST_STATE_CHANGE_ASYNC and complete the state change
2689 	 * when they receive the first buffer or %GST_EVENT_EOS (preroll).
2690 	 * Sinks also block the dataflow when in PAUSED.
2691 	 * * A pipeline resets the running_time to 0.
2692 	 * * Live sources return %GST_STATE_CHANGE_NO_PREROLL and don't generate data.
2693 	 */
2694 	READY_TO_PAUSED = 19,
2695 	/**
2696 	 * state change from PAUSED to PLAYING.
2697 	 * * Most elements ignore this state change.
2698 	 * * The pipeline selects a #GstClock and distributes this to all the children
2699 	 * before setting them to PLAYING. This means that it is only allowed to
2700 	 * synchronize on the #GstClock in the PLAYING state.
2701 	 * * The pipeline uses the #GstClock and the running_time to calculate the
2702 	 * base_time. The base_time is distributed to all children when performing
2703 	 * the state change.
2704 	 * * Sink elements stop blocking on the preroll buffer or event and start
2705 	 * rendering the data.
2706 	 * * Sinks can post %GST_MESSAGE_EOS in the PLAYING state. It is not allowed
2707 	 * to post %GST_MESSAGE_EOS when not in the PLAYING state.
2708 	 * * While streaming in PAUSED or PLAYING elements can create and remove
2709 	 * sometimes pads.
2710 	 * * Live sources start generating data and return %GST_STATE_CHANGE_SUCCESS.
2711 	 */
2712 	PAUSED_TO_PLAYING = 28,
2713 	/**
2714 	 * state change from PLAYING to PAUSED.
2715 	 * * Most elements ignore this state change.
2716 	 * * The pipeline calculates the running_time based on the last selected
2717 	 * #GstClock and the base_time. It stores this information to continue
2718 	 * playback when going back to the PLAYING state.
2719 	 * * Sinks unblock any #GstClock wait calls.
2720 	 * * When a sink does not have a pending buffer to play, it returns
2721 	 * #GST_STATE_CHANGE_ASYNC from this state change and completes the state
2722 	 * change when it receives a new buffer or an %GST_EVENT_EOS.
2723 	 * * Any queued %GST_MESSAGE_EOS items are removed since they will be reposted
2724 	 * when going back to the PLAYING state. The EOS messages are queued in
2725 	 * #GstBin containers.
2726 	 * * Live sources stop generating data and return %GST_STATE_CHANGE_NO_PREROLL.
2727 	 */
2728 	PLAYING_TO_PAUSED = 35,
2729 	/**
2730 	 * state change from PAUSED to READY.
2731 	 * * Sinks unblock any waits in the preroll.
2732 	 * * Elements unblock any waits on devices
2733 	 * * Chain or get_range functions return %GST_FLOW_FLUSHING.
2734 	 * * The element pads are deactivated so that streaming becomes impossible and
2735 	 * all streaming threads are stopped.
2736 	 * * The sink forgets all negotiated formats
2737 	 * * Elements remove all sometimes pads
2738 	 */
2739 	PAUSED_TO_READY = 26,
2740 	/**
2741 	 * state change from READY to NULL.
2742 	 * * Elements close devices
2743 	 * * Elements reset any internal state.
2744 	 */
2745 	READY_TO_NULL = 17,
2746 	/**
2747 	 * state change from NULL to NULL. (Since 1.14)
2748 	 */
2749 	NULL_TO_NULL = 9,
2750 	/**
2751 	 * state change from READY to READY,
2752 	 * This might happen when going to PAUSED asynchronously failed, in that case
2753 	 * elements should make sure they are in a proper, coherent READY state. (Since 1.14)
2754 	 */
2755 	READY_TO_READY = 18,
2756 	/**
2757 	 * state change from PAUSED to PAUSED.
2758 	 * This might happen when elements were in PLAYING state and 'lost state',
2759 	 * they should make sure to go back to real 'PAUSED' state (prerolling for example). (Since 1.14)
2760 	 */
2761 	PAUSED_TO_PAUSED = 27,
2762 	/**
2763 	 * state change from PLAYING to PLAYING. (Since 1.14)
2764 	 */
2765 	PLAYING_TO_PLAYING = 36,
2766 }
2767 alias GstStateChange StateChange;
2768 
2769 /**
2770  * The possible return values from a state change function such as
2771  * gst_element_set_state(). Only @GST_STATE_CHANGE_FAILURE is a real failure.
2772  */
2773 public enum GstStateChangeReturn
2774 {
2775 	/**
2776 	 * the state change failed
2777 	 */
2778 	FAILURE = 0,
2779 	/**
2780 	 * the state change succeeded
2781 	 */
2782 	SUCCESS = 1,
2783 	/**
2784 	 * the state change will happen asynchronously
2785 	 */
2786 	ASYNC = 2,
2787 	/**
2788 	 * the state change succeeded but the element
2789 	 * cannot produce data in %GST_STATE_PAUSED.
2790 	 * This typically happens with live sources.
2791 	 */
2792 	NO_PREROLL = 3,
2793 }
2794 alias GstStateChangeReturn StateChangeReturn;
2795 
2796 /**
2797  * Stream errors are for anything related to the stream being processed:
2798  * format errors, media type errors, ...
2799  * They're typically used by decoders, demuxers, converters, ...
2800  */
2801 public enum GstStreamError
2802 {
2803 	/**
2804 	 * a general error which doesn't fit in any other
2805 	 * category.  Make sure you add a custom message to the error call.
2806 	 */
2807 	FAILED = 1,
2808 	/**
2809 	 * do not use this except as a placeholder for
2810 	 * deciding where to go while developing code.
2811 	 */
2812 	TOO_LAZY = 2,
2813 	/**
2814 	 * use this when you do not want to implement
2815 	 * this functionality yet.
2816 	 */
2817 	NOT_IMPLEMENTED = 3,
2818 	/**
2819 	 * used when the element doesn't know the
2820 	 * stream's type.
2821 	 */
2822 	TYPE_NOT_FOUND = 4,
2823 	/**
2824 	 * used when the element doesn't handle this type
2825 	 * of stream.
2826 	 */
2827 	WRONG_TYPE = 5,
2828 	/**
2829 	 * used when there's no codec to handle the
2830 	 * stream's type.
2831 	 */
2832 	CODEC_NOT_FOUND = 6,
2833 	/**
2834 	 * used when decoding fails.
2835 	 */
2836 	DECODE = 7,
2837 	/**
2838 	 * used when encoding fails.
2839 	 */
2840 	ENCODE = 8,
2841 	/**
2842 	 * used when demuxing fails.
2843 	 */
2844 	DEMUX = 9,
2845 	/**
2846 	 * used when muxing fails.
2847 	 */
2848 	MUX = 10,
2849 	/**
2850 	 * used when the stream is of the wrong format
2851 	 * (for example, wrong caps).
2852 	 */
2853 	FORMAT = 11,
2854 	/**
2855 	 * used when the stream is encrypted and can't be
2856 	 * decrypted because this is not supported by the element.
2857 	 */
2858 	DECRYPT = 12,
2859 	/**
2860 	 * used when the stream is encrypted and
2861 	 * can't be decrypted because no suitable key is available.
2862 	 */
2863 	DECRYPT_NOKEY = 13,
2864 	/**
2865 	 * the number of stream error types.
2866 	 */
2867 	NUM_ERRORS = 14,
2868 }
2869 alias GstStreamError StreamError;
2870 
2871 public enum GstStreamFlags
2872 {
2873 	/**
2874 	 * This stream has no special attributes
2875 	 */
2876 	NONE = 0,
2877 	/**
2878 	 * This stream is a sparse stream (e.g. a subtitle
2879 	 * stream), data may flow only in irregular intervals with large gaps in
2880 	 * between.
2881 	 */
2882 	SPARSE = 1,
2883 	/**
2884 	 * This stream should be selected by default. This
2885 	 * flag may be used by demuxers to signal that a stream should be selected
2886 	 * by default in a playback scenario.
2887 	 */
2888 	SELECT = 2,
2889 	/**
2890 	 * This stream should not be selected by default.
2891 	 * This flag may be used by demuxers to signal that a stream should not
2892 	 * be selected by default in a playback scenario, but only if explicitly
2893 	 * selected by the user (e.g. an audio track for the hard of hearing or
2894 	 * a director's commentary track).
2895 	 */
2896 	UNSELECT = 4,
2897 }
2898 alias GstStreamFlags StreamFlags;
2899 
2900 /**
2901  * The type of a %GST_MESSAGE_STREAM_STATUS. The stream status messages inform the
2902  * application of new streaming threads and their status.
2903  */
2904 public enum GstStreamStatusType
2905 {
2906 	/**
2907 	 * A new thread need to be created.
2908 	 */
2909 	CREATE = 0,
2910 	/**
2911 	 * a thread entered its loop function
2912 	 */
2913 	ENTER = 1,
2914 	/**
2915 	 * a thread left its loop function
2916 	 */
2917 	LEAVE = 2,
2918 	/**
2919 	 * a thread is destroyed
2920 	 */
2921 	DESTROY = 3,
2922 	/**
2923 	 * a thread is started
2924 	 */
2925 	START = 8,
2926 	/**
2927 	 * a thread is paused
2928 	 */
2929 	PAUSE = 9,
2930 	/**
2931 	 * a thread is stopped
2932 	 */
2933 	STOP = 10,
2934 }
2935 alias GstStreamStatusType StreamStatusType;
2936 
2937 /**
2938  * #GstStreamType describes a high level classification set for
2939  * flows of data in #GstStream objects.
2940  *
2941  * Note that this is a flag, and therefore users should not assume it
2942  * will be a single value. Do not use the equality operator for checking
2943  * whether a stream is of a certain type.
2944  *
2945  * Since: 1.10
2946  */
2947 public enum GstStreamType
2948 {
2949 	/**
2950 	 * The stream is of unknown (unclassified) type.
2951 	 */
2952 	UNKNOWN = 1,
2953 	/**
2954 	 * The stream is of audio data
2955 	 */
2956 	AUDIO = 2,
2957 	/**
2958 	 * The stream carries video data
2959 	 */
2960 	VIDEO = 4,
2961 	/**
2962 	 * The stream is a muxed container type
2963 	 */
2964 	CONTAINER = 8,
2965 	/**
2966 	 * The stream contains subtitle / subpicture data.
2967 	 */
2968 	TEXT = 16,
2969 }
2970 alias GstStreamType StreamType;
2971 
2972 /**
2973  * The type of a %GST_MESSAGE_STRUCTURE_CHANGE.
2974  */
2975 public enum GstStructureChangeType
2976 {
2977 	/**
2978 	 * Pad linking is starting or done.
2979 	 */
2980 	LINK = 0,
2981 	/**
2982 	 * Pad unlinking is starting or done.
2983 	 */
2984 	UNLINK = 1,
2985 }
2986 alias GstStructureChangeType StructureChangeType;
2987 
2988 /**
2989  * Extra tag flags used when registering tags.
2990  */
2991 public enum GstTagFlag
2992 {
2993 	/**
2994 	 * undefined flag
2995 	 */
2996 	UNDEFINED = 0,
2997 	/**
2998 	 * tag is meta data
2999 	 */
3000 	META = 1,
3001 	/**
3002 	 * tag is encoded
3003 	 */
3004 	ENCODED = 2,
3005 	/**
3006 	 * tag is decoded
3007 	 */
3008 	DECODED = 3,
3009 	/**
3010 	 * number of tag flags
3011 	 */
3012 	COUNT = 4,
3013 }
3014 alias GstTagFlag TagFlag;
3015 
3016 /**
3017  * The different tag merging modes are basically replace, overwrite and append,
3018  * but they can be seen from two directions. Given two taglists: (A) the tags
3019  * already in the element and (B) the ones that are supplied to the element (
3020  * e.g. via gst_tag_setter_merge_tags() / gst_tag_setter_add_tags() or a
3021  * %GST_EVENT_TAG), how are these tags merged?
3022  * In the table below this is shown for the cases that a tag exists in the list
3023  * (A) or does not exists (!A) and combinations thereof.
3024  *
3025  * <table frame="all" colsep="1" rowsep="1">
3026  * <title>merge mode</title>
3027  * <tgroup cols='5' align='left'>
3028  * <thead>
3029  * <row>
3030  * <entry>merge mode</entry>
3031  * <entry>A + B</entry>
3032  * <entry>A + !B</entry>
3033  * <entry>!A + B</entry>
3034  * <entry>!A + !B</entry>
3035  * </row>
3036  * </thead>
3037  * <tbody>
3038  * <row>
3039  * <entry>REPLACE_ALL</entry>
3040  * <entry>B</entry>
3041  * <entry>-</entry>
3042  * <entry>B</entry>
3043  * <entry>-</entry>
3044  * </row>
3045  * <row>
3046  * <entry>REPLACE</entry>
3047  * <entry>B</entry>
3048  * <entry>A</entry>
3049  * <entry>B</entry>
3050  * <entry>-</entry>
3051  * </row>
3052  * <row>
3053  * <entry>APPEND</entry>
3054  * <entry>A, B</entry>
3055  * <entry>A</entry>
3056  * <entry>B</entry>
3057  * <entry>-</entry>
3058  * </row>
3059  * <row>
3060  * <entry>PREPEND</entry>
3061  * <entry>B, A</entry>
3062  * <entry>A</entry>
3063  * <entry>B</entry>
3064  * <entry>-</entry>
3065  * </row>
3066  * <row>
3067  * <entry>KEEP</entry>
3068  * <entry>A</entry>
3069  * <entry>A</entry>
3070  * <entry>B</entry>
3071  * <entry>-</entry>
3072  * </row>
3073  * <row>
3074  * <entry>KEEP_ALL</entry>
3075  * <entry>A</entry>
3076  * <entry>A</entry>
3077  * <entry>-</entry>
3078  * <entry>-</entry>
3079  * </row>
3080  * </tbody>
3081  * </tgroup>
3082  * </table>
3083  */
3084 public enum GstTagMergeMode
3085 {
3086 	/**
3087 	 * undefined merge mode
3088 	 */
3089 	UNDEFINED = 0,
3090 	/**
3091 	 * replace all tags (clear list and append)
3092 	 */
3093 	REPLACE_ALL = 1,
3094 	/**
3095 	 * replace tags
3096 	 */
3097 	REPLACE = 2,
3098 	/**
3099 	 * append tags
3100 	 */
3101 	APPEND = 3,
3102 	/**
3103 	 * prepend tags
3104 	 */
3105 	PREPEND = 4,
3106 	/**
3107 	 * keep existing tags
3108 	 */
3109 	KEEP = 5,
3110 	/**
3111 	 * keep all existing tags
3112 	 */
3113 	KEEP_ALL = 6,
3114 	/**
3115 	 * the number of merge modes
3116 	 */
3117 	COUNT = 7,
3118 }
3119 alias GstTagMergeMode TagMergeMode;
3120 
3121 /**
3122  * GstTagScope specifies if a taglist applies to the complete
3123  * medium or only to one single stream.
3124  */
3125 public enum GstTagScope
3126 {
3127 	/**
3128 	 * tags specific to this single stream
3129 	 */
3130 	STREAM = 0,
3131 	/**
3132 	 * global tags for the complete medium
3133 	 */
3134 	GLOBAL = 1,
3135 }
3136 alias GstTagScope TagScope;
3137 
3138 /**
3139  * The different states a task can be in
3140  */
3141 public enum GstTaskState
3142 {
3143 	/**
3144 	 * the task is started and running
3145 	 */
3146 	STARTED = 0,
3147 	/**
3148 	 * the task is stopped
3149 	 */
3150 	STOPPED = 1,
3151 	/**
3152 	 * the task is paused
3153 	 */
3154 	PAUSED = 2,
3155 }
3156 alias GstTaskState TaskState;
3157 
3158 /**
3159  * The different types of TOC entries (see #GstTocEntry).
3160  *
3161  * There are two types of TOC entries: alternatives or parts in a sequence.
3162  */
3163 public enum GstTocEntryType
3164 {
3165 	/**
3166 	 * entry is an angle (i.e. an alternative)
3167 	 */
3168 	ANGLE = -3,
3169 	/**
3170 	 * entry is a version (i.e. alternative)
3171 	 */
3172 	VERSION = -2,
3173 	/**
3174 	 * entry is an edition (i.e. alternative)
3175 	 */
3176 	EDITION = -1,
3177 	/**
3178 	 * invalid entry type value
3179 	 */
3180 	INVALID = 0,
3181 	/**
3182 	 * entry is a title (i.e. a part of a sequence)
3183 	 */
3184 	TITLE = 1,
3185 	/**
3186 	 * entry is a track (i.e. a part of a sequence)
3187 	 */
3188 	TRACK = 2,
3189 	/**
3190 	 * entry is a chapter (i.e. a part of a sequence)
3191 	 */
3192 	CHAPTER = 3,
3193 }
3194 alias GstTocEntryType TocEntryType;
3195 
3196 /**
3197  * How a #GstTocEntry should be repeated. By default, entries are played a
3198  * single time.
3199  *
3200  * Since: 1.4
3201  */
3202 public enum GstTocLoopType
3203 {
3204 	/**
3205 	 * single forward playback
3206 	 */
3207 	NONE = 0,
3208 	/**
3209 	 * repeat forward
3210 	 */
3211 	FORWARD = 1,
3212 	/**
3213 	 * repeat backward
3214 	 */
3215 	REVERSE = 2,
3216 	/**
3217 	 * repeat forward and backward
3218 	 */
3219 	PING_PONG = 3,
3220 }
3221 alias GstTocLoopType TocLoopType;
3222 
3223 /**
3224  * The scope of a TOC.
3225  */
3226 public enum GstTocScope
3227 {
3228 	/**
3229 	 * global TOC representing all selectable options
3230 	 * (this is what applications are usually interested in)
3231 	 */
3232 	GLOBAL = 1,
3233 	/**
3234 	 * TOC for the currently active/selected stream
3235 	 * (this is a TOC representing the current stream from start to EOS,
3236 	 * and is what a TOC writer / muxer is usually interested in; it will
3237 	 * usually be a subset of the global TOC, e.g. just the chapters of
3238 	 * the current title, or the chapters selected for playback from the
3239 	 * current title)
3240 	 */
3241 	CURRENT = 2,
3242 }
3243 alias GstTocScope TocScope;
3244 
3245 /**
3246  * Flag that describe the value. These flags help applications processing the
3247  * logs to understand the values.
3248  */
3249 public enum GstTracerValueFlags
3250 {
3251 	/**
3252 	 * no flags
3253 	 */
3254 	NONE = 0,
3255 	/**
3256 	 * the value is optional. When using this flag
3257 	 * one need to have an additional boolean arg before this value in the
3258 	 * var-args list passed to  gst_tracer_record_log().
3259 	 */
3260 	OPTIONAL = 1,
3261 	/**
3262 	 * the value is a combined figure, since the
3263 	 * start of tracing. Examples are averages or timestamps.
3264 	 */
3265 	AGGREGATED = 2,
3266 }
3267 alias GstTracerValueFlags TracerValueFlags;
3268 
3269 /**
3270  * Tracing record will contain fields that contain a measured value or extra
3271  * meta-data. One such meta data are values that tell where a measurement was
3272  * taken. This enumerating declares to which scope such a meta data field
3273  * relates to. If it is e.g. %GST_TRACER_VALUE_SCOPE_PAD, then each of the log
3274  * events may contain values for different #GstPads.
3275  *
3276  * Since: 1.8
3277  */
3278 public enum GstTracerValueScope
3279 {
3280 	/**
3281 	 * the value is related to the process
3282 	 */
3283 	PROCESS = 0,
3284 	/**
3285 	 * the value is related to a thread
3286 	 */
3287 	THREAD = 1,
3288 	/**
3289 	 * the value is related to an #GstElement
3290 	 */
3291 	ELEMENT = 2,
3292 	/**
3293 	 * the value is related to a #GstPad
3294 	 */
3295 	PAD = 3,
3296 }
3297 alias GstTracerValueScope TracerValueScope;
3298 
3299 /**
3300  * The probability of the typefind function. Higher values have more certainty
3301  * in doing a reliable typefind.
3302  */
3303 public enum GstTypeFindProbability
3304 {
3305 	/**
3306 	 * type undetected.
3307 	 */
3308 	NONE = 0,
3309 	/**
3310 	 * unlikely typefind.
3311 	 */
3312 	MINIMUM = 1,
3313 	/**
3314 	 * possible type detected.
3315 	 */
3316 	POSSIBLE = 50,
3317 	/**
3318 	 * likely a type was detected.
3319 	 */
3320 	LIKELY = 80,
3321 	/**
3322 	 * nearly certain that a type was detected.
3323 	 */
3324 	NEARLY_CERTAIN = 99,
3325 	/**
3326 	 * very certain a type was detected.
3327 	 */
3328 	MAXIMUM = 100,
3329 }
3330 alias GstTypeFindProbability TypeFindProbability;
3331 
3332 /**
3333  * Different URI-related errors that can occur.
3334  */
3335 public enum GstURIError
3336 {
3337 	/**
3338 	 * The protocol is not supported
3339 	 */
3340 	UNSUPPORTED_PROTOCOL = 0,
3341 	/**
3342 	 * There was a problem with the URI
3343 	 */
3344 	BAD_URI = 1,
3345 	/**
3346 	 * Could not set or change the URI because the
3347 	 * URI handler was in a state where that is not possible or not permitted
3348 	 */
3349 	BAD_STATE = 2,
3350 	/**
3351 	 * There was a problem with the entity that
3352 	 * the URI references
3353 	 */
3354 	BAD_REFERENCE = 3,
3355 }
3356 alias GstURIError URIError;
3357 
3358 /**
3359  * The different types of URI direction.
3360  */
3361 public enum GstURIType
3362 {
3363 	/**
3364 	 * The URI direction is unknown
3365 	 */
3366 	UNKNOWN = 0,
3367 	/**
3368 	 * The URI is a consumer.
3369 	 */
3370 	SINK = 1,
3371 	/**
3372 	 * The URI is a producer.
3373 	 */
3374 	SRC = 2,
3375 }
3376 alias GstURIType URIType;
3377 
3378 struct GstAllocationParams
3379 {
3380 	/**
3381 	 * flags to control allocation
3382 	 */
3383 	GstMemoryFlags flags;
3384 	/**
3385 	 * the desired alignment of the memory
3386 	 */
3387 	size_t align_;
3388 	/**
3389 	 * the desired prefix
3390 	 */
3391 	size_t prefix;
3392 	/**
3393 	 * the desired padding
3394 	 */
3395 	size_t padding;
3396 	void*[4] GstReserved;
3397 }
3398 
3399 struct GstAllocator
3400 {
3401 	GstObject object;
3402 	const(char)* memType;
3403 	/**
3404 	 * the implementation of the GstMemoryMapFunction
3405 	 */
3406 	GstMemoryMapFunction memMap;
3407 	/**
3408 	 * the implementation of the GstMemoryUnmapFunction
3409 	 */
3410 	GstMemoryUnmapFunction memUnmap;
3411 	/**
3412 	 * the implementation of the GstMemoryCopyFunction
3413 	 */
3414 	GstMemoryCopyFunction memCopy;
3415 	/**
3416 	 * the implementation of the GstMemoryShareFunction
3417 	 */
3418 	GstMemoryShareFunction memShare;
3419 	/**
3420 	 * the implementation of the GstMemoryIsSpanFunction
3421 	 */
3422 	GstMemoryIsSpanFunction memIsSpan;
3423 	/**
3424 	 * the implementation of the GstMemoryMapFullFunction.
3425 	 * Will be used instead of @mem_map if present. (Since 1.6)
3426 	 */
3427 	GstMemoryMapFullFunction memMapFull;
3428 	/**
3429 	 * the implementation of the GstMemoryUnmapFullFunction.
3430 	 * Will be used instead of @mem_unmap if present. (Since 1.6)
3431 	 */
3432 	GstMemoryUnmapFullFunction memUnmapFull;
3433 	void*[2] GstReserved;
3434 	GstAllocatorPrivate* priv;
3435 }
3436 
3437 /**
3438  * The #GstAllocator is used to create new memory.
3439  */
3440 struct GstAllocatorClass
3441 {
3442 	/**
3443 	 * Object parent class
3444 	 */
3445 	GstObjectClass objectClass;
3446 	/**
3447 	 *
3448 	 * Params:
3449 	 *     allocator = a #GstAllocator to use
3450 	 *     size = size of the visible memory area
3451 	 *     params = optional parameters
3452 	 * Returns: a new #GstMemory.
3453 	 */
3454 	extern(C) GstMemory* function(GstAllocator* allocator, size_t size, GstAllocationParams* params) alloc;
3455 	/** */
3456 	extern(C) void function(GstAllocator* allocator, GstMemory* memory) free;
3457 	void*[4] GstReserved;
3458 }
3459 
3460 struct GstAllocatorPrivate;
3461 
3462 struct GstAtomicQueue;
3463 
3464 struct GstBin
3465 {
3466 	GstElement element;
3467 	/**
3468 	 * the number of children in this bin
3469 	 */
3470 	int numchildren;
3471 	/**
3472 	 * the list of children in this bin
3473 	 */
3474 	GList* children;
3475 	/**
3476 	 * updated whenever @children changes
3477 	 */
3478 	uint childrenCookie;
3479 	/**
3480 	 * internal bus for handling child messages
3481 	 */
3482 	GstBus* childBus;
3483 	/**
3484 	 * queued and cached messages
3485 	 */
3486 	GList* messages;
3487 	/**
3488 	 * the bin is currently calculating its state
3489 	 */
3490 	bool polling;
3491 	/**
3492 	 * the bin needs to recalculate its state (deprecated)
3493 	 */
3494 	bool stateDirty;
3495 	/**
3496 	 * the bin needs to select a new clock
3497 	 */
3498 	bool clockDirty;
3499 	/**
3500 	 * the last clock selected
3501 	 */
3502 	GstClock* providedClock;
3503 	/**
3504 	 * the element that provided @provided_clock
3505 	 */
3506 	GstElement* clockProvider;
3507 	GstBinPrivate* priv;
3508 	void*[4] GstReserved;
3509 }
3510 
3511 /**
3512  * Subclasses can override the @add_element and @remove_element to
3513  * update the list of children in the bin.
3514  *
3515  * The @handle_message method can be overridden to implement custom
3516  * message handling.  @handle_message takes ownership of the message, just like
3517  * #gst_element_post_message.
3518  *
3519  * The @deep_element_added vfunc will be called when a new element has been
3520  * added to any bin inside this bin, so it will also be called if a new child
3521  * was added to a sub-bin of this bin. #GstBin implementations that override
3522  * this message should chain up to the parent class implementation so the
3523  * element-added-deep signal is emitted on all parents.
3524  */
3525 struct GstBinClass
3526 {
3527 	/**
3528 	 * bin parent class
3529 	 */
3530 	GstElementClass parentClass;
3531 	GThreadPool* pool;
3532 	/** */
3533 	extern(C) void function(GstBin* bin, GstElement* child) elementAdded;
3534 	/** */
3535 	extern(C) void function(GstBin* bin, GstElement* child) elementRemoved;
3536 	/** */
3537 	extern(C) int function(GstBin* bin, GstElement* element) addElement;
3538 	/** */
3539 	extern(C) int function(GstBin* bin, GstElement* element) removeElement;
3540 	/** */
3541 	extern(C) void function(GstBin* bin, GstMessage* message) handleMessage;
3542 	/** */
3543 	extern(C) int function(GstBin* bin) doLatency;
3544 	/** */
3545 	extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementAdded;
3546 	/** */
3547 	extern(C) void function(GstBin* bin, GstBin* subBin, GstElement* child) deepElementRemoved;
3548 	void*[2] GstReserved;
3549 }
3550 
3551 struct GstBinPrivate;
3552 
3553 struct GstBitmask;
3554 
3555 struct GstBuffer
3556 {
3557 	/**
3558 	 * the parent structure
3559 	 */
3560 	GstMiniObject miniObject;
3561 	/**
3562 	 * pointer to the pool owner of the buffer
3563 	 */
3564 	GstBufferPool* pool;
3565 	/**
3566 	 * presentation timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the
3567 	 * pts is not known or relevant. The pts contains the timestamp when the
3568 	 * media should be presented to the user.
3569 	 */
3570 	GstClockTime pts;
3571 	/**
3572 	 * decoding timestamp of the buffer, can be #GST_CLOCK_TIME_NONE when the
3573 	 * dts is not known or relevant. The dts contains the timestamp when the
3574 	 * media should be processed.
3575 	 */
3576 	GstClockTime dts;
3577 	/**
3578 	 * duration in time of the buffer data, can be #GST_CLOCK_TIME_NONE
3579 	 * when the duration is not known or relevant.
3580 	 */
3581 	GstClockTime duration;
3582 	/**
3583 	 * a media specific offset for the buffer data.
3584 	 * For video frames, this is the frame number of this buffer.
3585 	 * For audio samples, this is the offset of the first sample in this buffer.
3586 	 * For file data or compressed data this is the byte offset of the first
3587 	 * byte in this buffer.
3588 	 */
3589 	ulong offset;
3590 	/**
3591 	 * the last offset contained in this buffer. It has the same
3592 	 * format as @offset.
3593 	 */
3594 	ulong offsetEnd;
3595 }
3596 
3597 struct GstBufferList;
3598 
3599 struct GstBufferPool
3600 {
3601 	GstObject object;
3602 	int flushing;
3603 	GstBufferPoolPrivate* priv;
3604 	void*[4] GstReserved;
3605 }
3606 
3607 /**
3608  * Parameters passed to the gst_buffer_pool_acquire_buffer() function to control the
3609  * allocation of the buffer.
3610  *
3611  * The default implementation ignores the @start and @stop members but other
3612  * implementations can use this extra information to decide what buffer to
3613  * return.
3614  */
3615 struct GstBufferPoolAcquireParams
3616 {
3617 	/**
3618 	 * the format of @start and @stop
3619 	 */
3620 	GstFormat format;
3621 	/**
3622 	 * the start position
3623 	 */
3624 	long start;
3625 	/**
3626 	 * the stop position
3627 	 */
3628 	long stop;
3629 	/**
3630 	 * additional flags
3631 	 */
3632 	GstBufferPoolAcquireFlags flags;
3633 	void*[4] GstReserved;
3634 }
3635 
3636 /**
3637  * The GstBufferPool class.
3638  */
3639 struct GstBufferPoolClass
3640 {
3641 	/**
3642 	 * Object parent class
3643 	 */
3644 	GstObjectClass objectClass;
3645 	/**
3646 	 *
3647 	 * Params:
3648 	 *     pool = a #GstBufferPool
3649 	 * Returns: a %NULL terminated array
3650 	 *     of strings.
3651 	 */
3652 	extern(C) char** function(GstBufferPool* pool) getOptions;
3653 	/**
3654 	 *
3655 	 * Params:
3656 	 *     pool = a #GstBufferPool
3657 	 *     config = a #GstStructure
3658 	 * Returns: %TRUE when the configuration could be set.
3659 	 */
3660 	extern(C) int function(GstBufferPool* pool, GstStructure* config) setConfig;
3661 	/** */
3662 	extern(C) int function(GstBufferPool* pool) start;
3663 	/** */
3664 	extern(C) int function(GstBufferPool* pool) stop;
3665 	/**
3666 	 *
3667 	 * Params:
3668 	 *     pool = a #GstBufferPool
3669 	 *     buffer = a location for a #GstBuffer
3670 	 *     params = parameters.
3671 	 * Returns: a #GstFlowReturn such as %GST_FLOW_FLUSHING when the pool is
3672 	 *     inactive.
3673 	 */
3674 	extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) acquireBuffer;
3675 	/** */
3676 	extern(C) GstFlowReturn function(GstBufferPool* pool, GstBuffer** buffer, GstBufferPoolAcquireParams* params) allocBuffer;
3677 	/** */
3678 	extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) resetBuffer;
3679 	/** */
3680 	extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) releaseBuffer;
3681 	/** */
3682 	extern(C) void function(GstBufferPool* pool, GstBuffer* buffer) freeBuffer;
3683 	/** */
3684 	extern(C) void function(GstBufferPool* pool) flushStart;
3685 	/** */
3686 	extern(C) void function(GstBufferPool* pool) flushStop;
3687 	void*[2] GstReserved;
3688 }
3689 
3690 struct GstBufferPoolPrivate;
3691 
3692 struct GstBus
3693 {
3694 	GstObject object;
3695 	GstBusPrivate* priv;
3696 	void*[4] GstReserved;
3697 }
3698 
3699 struct GstBusClass
3700 {
3701 	GstObjectClass parentClass;
3702 	/** */
3703 	extern(C) void function(GstBus* bus, GstMessage* message) message;
3704 	/** */
3705 	extern(C) void function(GstBus* bus, GstMessage* message) syncMessage;
3706 	void*[4] GstReserved;
3707 }
3708 
3709 struct GstBusPrivate;
3710 
3711 struct GstCaps
3712 {
3713 	/**
3714 	 * the parent type
3715 	 */
3716 	GstMiniObject miniObject;
3717 }
3718 
3719 struct GstCapsFeatures;
3720 
3721 struct GstChildProxy;
3722 
3723 /**
3724  * #GstChildProxy interface.
3725  */
3726 struct GstChildProxyInterface
3727 {
3728 	/**
3729 	 * parent interface type.
3730 	 */
3731 	GTypeInterface parent;
3732 	/**
3733 	 *
3734 	 * Params:
3735 	 *     parent = the parent object to get the child from
3736 	 *     name = the child's name
3737 	 * Returns: the child object or %NULL if
3738 	 *     not found. Unref after usage.
3739 	 *
3740 	 *     MT safe.
3741 	 */
3742 	extern(C) GObject* function(GstChildProxy* parent, const(char)* name) getChildByName;
3743 	/**
3744 	 *
3745 	 * Params:
3746 	 *     parent = the parent object to get the child from
3747 	 *     index = the child's position in the child list
3748 	 * Returns: the child object or %NULL if
3749 	 *     not found (index too high). Unref after usage.
3750 	 *
3751 	 *     MT safe.
3752 	 */
3753 	extern(C) GObject* function(GstChildProxy* parent, uint index) getChildByIndex;
3754 	/**
3755 	 *
3756 	 * Params:
3757 	 *     parent = the parent object
3758 	 * Returns: the number of child objects
3759 	 *
3760 	 *     MT safe.
3761 	 */
3762 	extern(C) uint function(GstChildProxy* parent) getChildrenCount;
3763 	/** */
3764 	extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childAdded;
3765 	/** */
3766 	extern(C) void function(GstChildProxy* parent, GObject* child, const(char)* name) childRemoved;
3767 	void*[4] GstReserved;
3768 }
3769 
3770 struct GstClock
3771 {
3772 	GstObject object;
3773 	GstClockPrivate* priv;
3774 	void*[4] GstReserved;
3775 }
3776 
3777 /**
3778  * GStreamer clock class. Override the vmethods to implement the clock
3779  * functionality.
3780  */
3781 struct GstClockClass
3782 {
3783 	/**
3784 	 * the parent class structure
3785 	 */
3786 	GstObjectClass parentClass;
3787 	/** */
3788 	extern(C) GstClockTime function(GstClock* clock, GstClockTime oldResolution, GstClockTime newResolution) changeResolution;
3789 	/**
3790 	 *
3791 	 * Params:
3792 	 *     clock = a #GstClock
3793 	 * Returns: the resolution of the clock in units of #GstClockTime.
3794 	 *
3795 	 *     MT safe.
3796 	 */
3797 	extern(C) GstClockTime function(GstClock* clock) getResolution;
3798 	/**
3799 	 *
3800 	 * Params:
3801 	 *     clock = a #GstClock to query
3802 	 * Returns: the internal time of the clock. Or GST_CLOCK_TIME_NONE when
3803 	 *     given invalid input.
3804 	 *
3805 	 *     MT safe.
3806 	 */
3807 	extern(C) GstClockTime function(GstClock* clock) getInternalTime;
3808 	/** */
3809 	extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry, GstClockTimeDiff* jitter) wait;
3810 	/** */
3811 	extern(C) GstClockReturn function(GstClock* clock, GstClockEntry* entry) waitAsync;
3812 	/** */
3813 	extern(C) void function(GstClock* clock, GstClockEntry* entry) unschedule;
3814 	void*[4] GstReserved;
3815 }
3816 
3817 /**
3818  * All pending timeouts or periodic notifies are converted into
3819  * an entry.
3820  * Note that GstClockEntry should be treated as an opaque structure. It must
3821  * not be extended or allocated using a custom allocator.
3822  */
3823 struct GstClockEntry
3824 {
3825 	/**
3826 	 * reference counter (read-only)
3827 	 */
3828 	int refcount;
3829 	GstClock* clock;
3830 	GstClockEntryType type;
3831 	GstClockTime time;
3832 	GstClockTime interval;
3833 	GstClockReturn status;
3834 	GstClockCallback func;
3835 	void* userData;
3836 	GDestroyNotify destroyData;
3837 	bool unscheduled;
3838 	bool wokenUp;
3839 	void*[4] GstReserved;
3840 }
3841 
3842 struct GstClockPrivate;
3843 
3844 struct GstContext;
3845 
3846 struct GstControlBinding
3847 {
3848 	GstObject parent;
3849 	/**
3850 	 * name of the property of this binding
3851 	 */
3852 	char* name;
3853 	/**
3854 	 * #GParamSpec for this property
3855 	 */
3856 	GParamSpec* pspec;
3857 	GstObject* object;
3858 	bool disabled;
3859 	union ABI
3860 	{
3861 		struct Abi
3862 		{
3863 			GstControlBindingPrivate* priv;
3864 		}
3865 		Abi abi;
3866 		void*[4] GstReserved;
3867 	}
3868 	ABI abi;
3869 }
3870 
3871 /**
3872  * The class structure of #GstControlBinding.
3873  */
3874 struct GstControlBindingClass
3875 {
3876 	/**
3877 	 * Parent class
3878 	 */
3879 	GstObjectClass parentClass;
3880 	/**
3881 	 *
3882 	 * Params:
3883 	 *     binding = the control binding
3884 	 *     object = the object that has controlled properties
3885 	 *     timestamp = the time that should be processed
3886 	 *     lastSync = the last time this was called
3887 	 * Returns: %TRUE if the controller value could be applied to the object
3888 	 *     property, %FALSE otherwise
3889 	 */
3890 	extern(C) int function(GstControlBinding* binding, GstObject* object, GstClockTime timestamp, GstClockTime lastSync) syncValues;
3891 	/**
3892 	 *
3893 	 * Params:
3894 	 *     binding = the control binding
3895 	 *     timestamp = the time the control-change should be read from
3896 	 * Returns: the GValue of the property at the given time,
3897 	 *     or %NULL if the property isn't controlled.
3898 	 */
3899 	extern(C) GValue* function(GstControlBinding* binding, GstClockTime timestamp) getValue;
3900 	/**
3901 	 *
3902 	 * Params:
3903 	 *     binding = the control binding
3904 	 *     timestamp = the time that should be processed
3905 	 *     interval = the time spacing between subsequent values
3906 	 *     nValues = the number of values
3907 	 *     values = array to put control-values in
3908 	 * Returns: %TRUE if the given array could be filled, %FALSE otherwise
3909 	 */
3910 	extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, void* values) getValueArray;
3911 	/**
3912 	 *
3913 	 * Params:
3914 	 *     binding = the control binding
3915 	 *     timestamp = the time that should be processed
3916 	 *     interval = the time spacing between subsequent values
3917 	 *     nValues = the number of values
3918 	 *     values = array to put control-values in
3919 	 * Returns: %TRUE if the given array could be filled, %FALSE otherwise
3920 	 */
3921 	extern(C) int function(GstControlBinding* binding, GstClockTime timestamp, GstClockTime interval, uint nValues, GValue* values) getGValueArray;
3922 	void*[4] GstReserved;
3923 }
3924 
3925 struct GstControlBindingPrivate;
3926 
3927 struct GstControlSource
3928 {
3929 	GstObject parent;
3930 	/**
3931 	 * Function for returning a value for a given timestamp
3932 	 */
3933 	GstControlSourceGetValue getValue;
3934 	/**
3935 	 * Function for returning a values array for a given timestamp
3936 	 */
3937 	GstControlSourceGetValueArray getValueArray;
3938 	void*[4] GstReserved;
3939 }
3940 
3941 /**
3942  * The class structure of #GstControlSource.
3943  */
3944 struct GstControlSourceClass
3945 {
3946 	/**
3947 	 * Parent class
3948 	 */
3949 	GstObjectClass parentClass;
3950 	void*[4] GstReserved;
3951 }
3952 
3953 struct GstDateTime;
3954 
3955 struct GstDebugCategory
3956 {
3957 	int threshold;
3958 	uint color;
3959 	const(char)* name;
3960 	const(char)* description;
3961 }
3962 
3963 struct GstDebugMessage;
3964 
3965 struct GstDevice
3966 {
3967 	/**
3968 	 * The parent #GstObject structure.
3969 	 */
3970 	GstObject parent;
3971 	GstDevicePrivate* priv;
3972 	void*[4] GstReserved;
3973 }
3974 
3975 /**
3976  * The class structure for a #GstDevice object.
3977  *
3978  * Since: 1.4
3979  */
3980 struct GstDeviceClass
3981 {
3982 	/**
3983 	 * The parent #GstObjectClass structure.
3984 	 */
3985 	GstObjectClass parentClass;
3986 	/**
3987 	 *
3988 	 * Params:
3989 	 *     device = a #GstDevice
3990 	 *     name = name of new element, or %NULL to automatically
3991 	 *         create a unique name.
3992 	 * Returns: a new #GstElement configured to use
3993 	 *     this device
3994 	 */
3995 	extern(C) GstElement* function(GstDevice* device, const(char)* name) createElement;
3996 	/**
3997 	 *
3998 	 * Params:
3999 	 *     device = a #GstDevice
4000 	 *     element = a #GstElement
4001 	 * Returns: %TRUE if the element could be reconfigured to use this device,
4002 	 *     %FALSE otherwise.
4003 	 */
4004 	extern(C) int function(GstDevice* device, GstElement* element) reconfigureElement;
4005 	void*[4] GstReserved;
4006 }
4007 
4008 struct GstDeviceMonitor
4009 {
4010 	/**
4011 	 * the parent #GstObject structure
4012 	 */
4013 	GstObject parent;
4014 	GstDeviceMonitorPrivate* priv;
4015 	void*[4] GstReserved;
4016 }
4017 
4018 /**
4019  * Opaque device monitor class structure.
4020  *
4021  * Since: 1.4
4022  */
4023 struct GstDeviceMonitorClass
4024 {
4025 	/**
4026 	 * the parent #GstObjectClass structure
4027 	 */
4028 	GstObjectClass parentClass;
4029 	void*[4] GstReserved;
4030 }
4031 
4032 struct GstDeviceMonitorPrivate;
4033 
4034 struct GstDevicePrivate;
4035 
4036 struct GstDeviceProvider
4037 {
4038 	/**
4039 	 * The parent #GstObject
4040 	 */
4041 	GstObject parent;
4042 	/**
4043 	 * a #GList of the #GstDevice objects
4044 	 */
4045 	GList* devices;
4046 	GstDeviceProviderPrivate* priv;
4047 	void*[4] GstReserved;
4048 }
4049 
4050 struct GstDeviceProviderClass
4051 {
4052 	/**
4053 	 * the parent #GstObjectClass structure
4054 	 */
4055 	GstObjectClass parentClass;
4056 	/**
4057 	 * a pointer to the #GstDeviceProviderFactory that creates this
4058 	 * provider
4059 	 */
4060 	GstDeviceProviderFactory* factory;
4061 	/** */
4062 	extern(C) GList* function(GstDeviceProvider* provider) probe;
4063 	/**
4064 	 *
4065 	 * Params:
4066 	 *     provider = A #GstDeviceProvider
4067 	 * Returns: %TRUE if the device providering could be started
4068 	 */
4069 	extern(C) int function(GstDeviceProvider* provider) start;
4070 	/** */
4071 	extern(C) void function(GstDeviceProvider* provider) stop;
4072 	void* metadata;
4073 	void*[4] GstReserved;
4074 }
4075 
4076 struct GstDeviceProviderFactory;
4077 
4078 /**
4079  * The opaque #GstDeviceProviderFactoryClass data structure.
4080  *
4081  * Since: 1.4
4082  */
4083 struct GstDeviceProviderFactoryClass;
4084 
4085 struct GstDeviceProviderPrivate;
4086 
4087 struct GstDoubleRange;
4088 
4089 struct GstDynamicTypeFactory;
4090 
4091 struct GstDynamicTypeFactoryClass;
4092 
4093 struct GstElement
4094 {
4095 	GstObject object;
4096 	/**
4097 	 * Used to serialize execution of gst_element_set_state()
4098 	 */
4099 	GRecMutex stateLock;
4100 	/**
4101 	 * Used to signal completion of a state change
4102 	 */
4103 	GCond stateCond;
4104 	/**
4105 	 * Used to detect concurrent execution of
4106 	 * gst_element_set_state() and gst_element_get_state()
4107 	 */
4108 	uint stateCookie;
4109 	/**
4110 	 * the target state of an element as set by the application
4111 	 */
4112 	GstState targetState;
4113 	/**
4114 	 * the current state of an element
4115 	 */
4116 	GstState currentState;
4117 	/**
4118 	 * the next state of an element, can be #GST_STATE_VOID_PENDING if
4119 	 * the element is in the correct state.
4120 	 */
4121 	GstState nextState;
4122 	/**
4123 	 * the final state the element should go to, can be
4124 	 * #GST_STATE_VOID_PENDING if the element is in the correct state
4125 	 */
4126 	GstState pendingState;
4127 	/**
4128 	 * the last return value of an element state change
4129 	 */
4130 	GstStateChangeReturn lastReturn;
4131 	/**
4132 	 * the bus of the element. This bus is provided to the element by the
4133 	 * parent element or the application. A #GstPipeline has a bus of its own.
4134 	 */
4135 	GstBus* bus;
4136 	/**
4137 	 * the clock of the element. This clock is usually provided to the
4138 	 * element by the toplevel #GstPipeline.
4139 	 */
4140 	GstClock* clock;
4141 	/**
4142 	 * the time of the clock right before the element is set to
4143 	 * PLAYING. Subtracting @base_time from the current clock time in the PLAYING
4144 	 * state will yield the running_time against the clock.
4145 	 */
4146 	GstClockTimeDiff baseTime;
4147 	/**
4148 	 * the running_time of the last PAUSED state
4149 	 */
4150 	GstClockTime startTime;
4151 	/**
4152 	 * number of pads of the element, includes both source and sink pads.
4153 	 */
4154 	ushort numpads;
4155 	/**
4156 	 * list of pads
4157 	 */
4158 	GList* pads;
4159 	/**
4160 	 * number of source pads of the element.
4161 	 */
4162 	ushort numsrcpads;
4163 	/**
4164 	 * list of source pads
4165 	 */
4166 	GList* srcpads;
4167 	/**
4168 	 * number of sink pads of the element.
4169 	 */
4170 	ushort numsinkpads;
4171 	/**
4172 	 * list of sink pads
4173 	 */
4174 	GList* sinkpads;
4175 	/**
4176 	 * updated whenever the a pad is added or removed
4177 	 */
4178 	uint padsCookie;
4179 	/**
4180 	 * list of contexts
4181 	 */
4182 	GList* contexts;
4183 	void*[3] GstReserved;
4184 }
4185 
4186 struct GstElementClass
4187 {
4188 	/**
4189 	 * the parent class structure
4190 	 */
4191 	GstObjectClass parentClass;
4192 	/**
4193 	 * metadata for elements of this class
4194 	 */
4195 	void* metadata;
4196 	/**
4197 	 * the #GstElementFactory that creates these elements
4198 	 */
4199 	GstElementFactory* elementfactory;
4200 	/**
4201 	 * a #GList of #GstPadTemplate
4202 	 */
4203 	GList* padtemplates;
4204 	/**
4205 	 * the number of padtemplates
4206 	 */
4207 	int numpadtemplates;
4208 	/**
4209 	 * changed whenever the padtemplates change
4210 	 */
4211 	uint padTemplCookie;
4212 	/** */
4213 	extern(C) void function(GstElement* element, GstPad* pad) padAdded;
4214 	/** */
4215 	extern(C) void function(GstElement* element, GstPad* pad) padRemoved;
4216 	/** */
4217 	extern(C) void function(GstElement* element) noMorePads;
4218 	/**
4219 	 *
4220 	 * Params:
4221 	 *     element = a #GstElement to find a request pad of.
4222 	 *     templ = a #GstPadTemplate of which we want a pad of.
4223 	 *     name = the name of the request #GstPad
4224 	 *         to retrieve. Can be %NULL.
4225 	 *     caps = the caps of the pad we want to
4226 	 *         request. Can be %NULL.
4227 	 * Returns: requested #GstPad if found,
4228 	 *     otherwise %NULL.  Release after usage.
4229 	 */
4230 	extern(C) GstPad* function(GstElement* element, GstPadTemplate* templ, const(char)* name, GstCaps* caps) requestNewPad;
4231 	/** */
4232 	extern(C) void function(GstElement* element, GstPad* pad) releasePad;
4233 	/**
4234 	 *
4235 	 * Params:
4236 	 *     element = a #GstElement to get the state of.
4237 	 *     state = a pointer to #GstState to hold the state.
4238 	 *         Can be %NULL.
4239 	 *     pending = a pointer to #GstState to hold the pending
4240 	 *         state. Can be %NULL.
4241 	 *     timeout = a #GstClockTime to specify the timeout for an async
4242 	 *         state change or %GST_CLOCK_TIME_NONE for infinite timeout.
4243 	 * Returns: %GST_STATE_CHANGE_SUCCESS if the element has no more pending state
4244 	 *     and the last state change succeeded, %GST_STATE_CHANGE_ASYNC if the
4245 	 *     element is still performing a state change or
4246 	 *     %GST_STATE_CHANGE_FAILURE if the last state change failed.
4247 	 *
4248 	 *     MT safe.
4249 	 */
4250 	extern(C) GstStateChangeReturn function(GstElement* element, GstState* state, GstState* pending, GstClockTime timeout) getState;
4251 	/**
4252 	 *
4253 	 * Params:
4254 	 *     element = a #GstElement to change state of.
4255 	 *     state = the element's new #GstState.
4256 	 * Returns: Result of the state change using #GstStateChangeReturn.
4257 	 *
4258 	 *     MT safe.
4259 	 */
4260 	extern(C) GstStateChangeReturn function(GstElement* element, GstState state) setState;
4261 	/**
4262 	 *
4263 	 * Params:
4264 	 *     element = a #GstElement
4265 	 *     transition = the requested transition
4266 	 * Returns: the #GstStateChangeReturn of the state transition.
4267 	 */
4268 	extern(C) GstStateChangeReturn function(GstElement* element, GstStateChange transition) changeState;
4269 	/** */
4270 	extern(C) void function(GstElement* element, GstState oldstate, GstState newstate, GstState pending) stateChanged;
4271 	/** */
4272 	extern(C) void function(GstElement* element, GstBus* bus) setBus;
4273 	/**
4274 	 *
4275 	 * Params:
4276 	 *     element = a #GstElement to query
4277 	 * Returns: the GstClock provided by the
4278 	 *     element or %NULL if no clock could be provided.  Unref after usage.
4279 	 *
4280 	 *     MT safe.
4281 	 */
4282 	extern(C) GstClock* function(GstElement* element) provideClock;
4283 	/**
4284 	 *
4285 	 * Params:
4286 	 *     element = a #GstElement to set the clock for.
4287 	 *     clock = the #GstClock to set for the element.
4288 	 * Returns: %TRUE if the element accepted the clock. An element can refuse a
4289 	 *     clock when it, for example, is not able to slave its internal clock to the
4290 	 *     @clock or when it requires a specific clock to operate.
4291 	 *
4292 	 *     MT safe.
4293 	 */
4294 	extern(C) int function(GstElement* element, GstClock* clock) setClock;
4295 	/**
4296 	 *
4297 	 * Params:
4298 	 *     element = a #GstElement to send the event to.
4299 	 *     event = the #GstEvent to send to the element.
4300 	 * Returns: %TRUE if the event was handled. Events that trigger a preroll (such
4301 	 *     as flushing seeks and steps) will emit %GST_MESSAGE_ASYNC_DONE.
4302 	 */
4303 	extern(C) int function(GstElement* element, GstEvent* event) sendEvent;
4304 	/**
4305 	 *
4306 	 * Params:
4307 	 *     element = a #GstElement to perform the query on.
4308 	 *     query = the #GstQuery.
4309 	 * Returns: %TRUE if the query could be performed.
4310 	 *
4311 	 *     MT safe.
4312 	 */
4313 	extern(C) int function(GstElement* element, GstQuery* query) query;
4314 	/**
4315 	 *
4316 	 * Params:
4317 	 *     element = a #GstElement posting the message
4318 	 *     message = a #GstMessage to post
4319 	 * Returns: %TRUE if the message was successfully posted. The function returns
4320 	 *     %FALSE if the element did not have a bus.
4321 	 *
4322 	 *     MT safe.
4323 	 */
4324 	extern(C) int function(GstElement* element, GstMessage* message) postMessage;
4325 	/** */
4326 	extern(C) void function(GstElement* element, GstContext* context) setContext;
4327 	void*[18] GstReserved;
4328 }
4329 
4330 struct GstElementFactory;
4331 
4332 struct GstElementFactoryClass;
4333 
4334 struct GstEvent
4335 {
4336 	/**
4337 	 * the parent structure
4338 	 */
4339 	GstMiniObject miniObject;
4340 	/**
4341 	 * the #GstEventType of the event
4342 	 */
4343 	GstEventType type;
4344 	/**
4345 	 * the timestamp of the event
4346 	 */
4347 	ulong timestamp;
4348 	/**
4349 	 * the sequence number of the event
4350 	 */
4351 	uint seqnum;
4352 }
4353 
4354 struct GstFlagSet;
4355 
4356 /**
4357  * A format definition
4358  */
4359 struct GstFormatDefinition
4360 {
4361 	/**
4362 	 * The unique id of this format
4363 	 */
4364 	GstFormat value;
4365 	/**
4366 	 * A short nick of the format
4367 	 */
4368 	const(char)* nick;
4369 	/**
4370 	 * A longer description of the format
4371 	 */
4372 	const(char)* description;
4373 	/**
4374 	 * A quark for the nick
4375 	 */
4376 	GQuark quark;
4377 }
4378 
4379 struct GstFraction;
4380 
4381 struct GstFractionRange;
4382 
4383 struct GstGhostPad
4384 {
4385 	GstProxyPad pad;
4386 	GstGhostPadPrivate* priv;
4387 }
4388 
4389 struct GstGhostPadClass
4390 {
4391 	GstProxyPadClass parentClass;
4392 	void*[4] GstReserved;
4393 }
4394 
4395 struct GstGhostPadPrivate;
4396 
4397 struct GstInt64Range;
4398 
4399 struct GstIntRange;
4400 
4401 struct GstIterator
4402 {
4403 	/**
4404 	 * The function to copy the iterator
4405 	 */
4406 	GstIteratorCopyFunction copy;
4407 	/**
4408 	 * The function to get the next item in the iterator
4409 	 */
4410 	GstIteratorNextFunction next;
4411 	/**
4412 	 * The function to be called for each item retrieved
4413 	 */
4414 	GstIteratorItemFunction item;
4415 	/**
4416 	 * The function to call when a resync is needed.
4417 	 */
4418 	GstIteratorResyncFunction resync;
4419 	/**
4420 	 * The function to call when the iterator is freed
4421 	 */
4422 	GstIteratorFreeFunction free;
4423 	/**
4424 	 * The iterator that is currently pushed with gst_iterator_push()
4425 	 */
4426 	GstIterator* pushed;
4427 	/**
4428 	 * The type of the object that this iterator will return
4429 	 */
4430 	GType type;
4431 	/**
4432 	 * The lock protecting the data structure and the cookie.
4433 	 */
4434 	GMutex* lock;
4435 	/**
4436 	 * The cookie; the value of the master_cookie when this iterator was
4437 	 * created.
4438 	 */
4439 	uint cookie;
4440 	/**
4441 	 * A pointer to the master cookie.
4442 	 */
4443 	uint* masterCookie;
4444 	/**
4445 	 * the size of the iterator
4446 	 */
4447 	uint size;
4448 	void*[4] GstReserved;
4449 }
4450 
4451 /**
4452  * A structure containing the result of a map operation such as
4453  * gst_memory_map(). It contains the data and size.
4454  */
4455 struct GstMapInfo
4456 {
4457 	/**
4458 	 * a pointer to the mapped memory
4459 	 */
4460 	GstMemory* memory;
4461 	/**
4462 	 * flags used when mapping the memory
4463 	 */
4464 	GstMapFlags flags;
4465 	/**
4466 	 * a pointer to the mapped data
4467 	 */
4468 	ubyte* data;
4469 	/**
4470 	 * the valid size in @data
4471 	 */
4472 	size_t size;
4473 	/**
4474 	 * the maximum bytes in @data
4475 	 */
4476 	size_t maxsize;
4477 	/**
4478 	 * extra private user_data that the implementation of the memory
4479 	 * can use to store extra info.
4480 	 */
4481 	void*[4] userData;
4482 	void*[4] GstReserved;
4483 }
4484 
4485 struct GstMemory
4486 {
4487 	/**
4488 	 * parent structure
4489 	 */
4490 	GstMiniObject miniObject;
4491 	/**
4492 	 * pointer to the #GstAllocator
4493 	 */
4494 	GstAllocator* allocator;
4495 	/**
4496 	 * parent memory block
4497 	 */
4498 	GstMemory* parent;
4499 	/**
4500 	 * the maximum size allocated
4501 	 */
4502 	size_t maxsize;
4503 	/**
4504 	 * the alignment of the memory
4505 	 */
4506 	size_t align_;
4507 	/**
4508 	 * the offset where valid data starts
4509 	 */
4510 	size_t offset;
4511 	/**
4512 	 * the size of valid data
4513 	 */
4514 	size_t size;
4515 }
4516 
4517 struct GstMessage
4518 {
4519 	/**
4520 	 * the parent structure
4521 	 */
4522 	GstMiniObject miniObject;
4523 	/**
4524 	 * the #GstMessageType of the message
4525 	 */
4526 	GstMessageType type;
4527 	/**
4528 	 * the timestamp of the message
4529 	 */
4530 	ulong timestamp;
4531 	/**
4532 	 * the src of the message
4533 	 */
4534 	GstObject* src;
4535 	/**
4536 	 * the sequence number of the message
4537 	 */
4538 	uint seqnum;
4539 	GMutex lock;
4540 	GCond cond;
4541 }
4542 
4543 struct GstMeta
4544 {
4545 	/**
4546 	 * extra flags for the metadata
4547 	 */
4548 	GstMetaFlags flags;
4549 	/**
4550 	 * pointer to the #GstMetaInfo
4551 	 */
4552 	GstMetaInfo* info;
4553 }
4554 
4555 /**
4556  * The #GstMetaInfo provides information about a specific metadata
4557  * structure.
4558  */
4559 struct GstMetaInfo
4560 {
4561 	/**
4562 	 * tag identifying the metadata structure and api
4563 	 */
4564 	GType api;
4565 	/**
4566 	 * type identifying the implementor of the api
4567 	 */
4568 	GType type;
4569 	/**
4570 	 * size of the metadata
4571 	 */
4572 	size_t size;
4573 	/**
4574 	 * function for initializing the metadata
4575 	 */
4576 	GstMetaInitFunction initFunc;
4577 	/**
4578 	 * function for freeing the metadata
4579 	 */
4580 	GstMetaFreeFunction freeFunc;
4581 	/**
4582 	 * function for transforming the metadata
4583 	 */
4584 	GstMetaTransformFunction transformFunc;
4585 }
4586 
4587 /**
4588  * Extra data passed to a "gst-copy" transform #GstMetaTransformFunction.
4589  */
4590 struct GstMetaTransformCopy
4591 {
4592 	/**
4593 	 * %TRUE if only region is copied
4594 	 */
4595 	bool region;
4596 	/**
4597 	 * the offset to copy, 0 if @region is %FALSE, otherwise > 0
4598 	 */
4599 	size_t offset;
4600 	/**
4601 	 * the size to copy, -1 or the buffer size when @region is %FALSE
4602 	 */
4603 	size_t size;
4604 }
4605 
4606 struct GstMiniObject
4607 {
4608 	/**
4609 	 * the GType of the object
4610 	 */
4611 	GType type;
4612 	/**
4613 	 * atomic refcount
4614 	 */
4615 	int refcount;
4616 	/**
4617 	 * atomic state of the locks
4618 	 */
4619 	int lockstate;
4620 	/**
4621 	 * extra flags.
4622 	 */
4623 	uint flags;
4624 	/**
4625 	 * a copy function
4626 	 */
4627 	GstMiniObjectCopyFunction copy;
4628 	/**
4629 	 * a dispose function
4630 	 */
4631 	GstMiniObjectDisposeFunction dispose;
4632 	/**
4633 	 * the free function
4634 	 */
4635 	GstMiniObjectFreeFunction free;
4636 	uint privUint;
4637 	void* privPointer;
4638 }
4639 
4640 struct GstObject
4641 {
4642 	GObject object;
4643 	/**
4644 	 * object LOCK
4645 	 */
4646 	GMutex lock;
4647 	/**
4648 	 * The name of the object
4649 	 */
4650 	char* name;
4651 	/**
4652 	 * this object's parent, weak ref
4653 	 */
4654 	GstObject* parent;
4655 	/**
4656 	 * flags for this object
4657 	 */
4658 	uint flags;
4659 	GList* controlBindings;
4660 	ulong controlRate;
4661 	ulong lastSync;
4662 	void* GstReserved;
4663 }
4664 
4665 /**
4666  * GStreamer base object class.
4667  */
4668 struct GstObjectClass
4669 {
4670 	/**
4671 	 * parent
4672 	 */
4673 	GObjectClass parentClass;
4674 	/**
4675 	 * separator used by gst_object_get_path_string()
4676 	 */
4677 	const(char)* pathStringSeparator;
4678 	/** */
4679 	extern(C) void function(GstObject* object, GstObject* orig, GParamSpec* pspec) deepNotify;
4680 	void*[4] GstReserved;
4681 }
4682 
4683 struct GstPad
4684 {
4685 	GstObject object;
4686 	/**
4687 	 * private data owned by the parent element
4688 	 */
4689 	void* elementPrivate;
4690 	/**
4691 	 * padtemplate for this pad
4692 	 */
4693 	GstPadTemplate* padtemplate;
4694 	/**
4695 	 * the direction of the pad, cannot change after creating
4696 	 * the pad.
4697 	 */
4698 	GstPadDirection direction;
4699 	GRecMutex streamRecLock;
4700 	GstTask* task;
4701 	GCond blockCond;
4702 	GHookList probes;
4703 	GstPadMode mode;
4704 	GstPadActivateFunction activatefunc;
4705 	void* activatedata;
4706 	GDestroyNotify activatenotify;
4707 	GstPadActivateModeFunction activatemodefunc;
4708 	void* activatemodedata;
4709 	GDestroyNotify activatemodenotify;
4710 	GstPad* peer;
4711 	GstPadLinkFunction linkfunc;
4712 	void* linkdata;
4713 	GDestroyNotify linknotify;
4714 	GstPadUnlinkFunction unlinkfunc;
4715 	void* unlinkdata;
4716 	GDestroyNotify unlinknotify;
4717 	GstPadChainFunction chainfunc;
4718 	void* chaindata;
4719 	GDestroyNotify chainnotify;
4720 	GstPadChainListFunction chainlistfunc;
4721 	void* chainlistdata;
4722 	GDestroyNotify chainlistnotify;
4723 	GstPadGetRangeFunction getrangefunc;
4724 	void* getrangedata;
4725 	GDestroyNotify getrangenotify;
4726 	GstPadEventFunction eventfunc;
4727 	void* eventdata;
4728 	GDestroyNotify eventnotify;
4729 	long offset;
4730 	GstPadQueryFunction queryfunc;
4731 	void* querydata;
4732 	GDestroyNotify querynotify;
4733 	GstPadIterIntLinkFunction iterintlinkfunc;
4734 	void* iterintlinkdata;
4735 	GDestroyNotify iterintlinknotify;
4736 	int numProbes;
4737 	int numBlocked;
4738 	GstPadPrivate* priv;
4739 	union ABI
4740 	{
4741 		void*[4] GstReserved;
4742 		struct Abi
4743 		{
4744 			GstFlowReturn lastFlowret;
4745 			GstPadEventFullFunction eventfullfunc;
4746 		}
4747 		Abi abi;
4748 	}
4749 	ABI abi;
4750 }
4751 
4752 struct GstPadClass
4753 {
4754 	GstObjectClass parentClass;
4755 	/** */
4756 	extern(C) void function(GstPad* pad, GstPad* peer) linked;
4757 	/** */
4758 	extern(C) void function(GstPad* pad, GstPad* peer) unlinked;
4759 	void*[4] GstReserved;
4760 }
4761 
4762 struct GstPadPrivate;
4763 
4764 struct GstPadProbeInfo
4765 {
4766 	/**
4767 	 * the current probe type
4768 	 */
4769 	GstPadProbeType type;
4770 	/**
4771 	 * the id of the probe
4772 	 */
4773 	gulong id;
4774 	/**
4775 	 * type specific data, check the @type field to know the
4776 	 * datatype.  This field can be %NULL.
4777 	 */
4778 	void* data;
4779 	/**
4780 	 * offset of pull probe, this field is valid when @type contains
4781 	 * #GST_PAD_PROBE_TYPE_PULL
4782 	 */
4783 	ulong offset;
4784 	/**
4785 	 * size of pull probe, this field is valid when @type contains
4786 	 * #GST_PAD_PROBE_TYPE_PULL
4787 	 */
4788 	uint size;
4789 	union ABI
4790 	{
4791 		void*[4] GstReserved;
4792 		struct Abi
4793 		{
4794 			GstFlowReturn flowRet;
4795 		}
4796 		Abi abi;
4797 	}
4798 	ABI abi;
4799 }
4800 
4801 struct GstPadTemplate
4802 {
4803 	GstObject object;
4804 	char* nameTemplate;
4805 	GstPadDirection direction;
4806 	GstPadPresence presence;
4807 	GstCaps* caps;
4808 	union ABI
4809 	{
4810 		void*[4] GstReserved;
4811 		struct Abi
4812 		{
4813 			GType gtype;
4814 		}
4815 		Abi abi;
4816 	}
4817 	ABI abi;
4818 }
4819 
4820 struct GstPadTemplateClass
4821 {
4822 	GstObjectClass parentClass;
4823 	/** */
4824 	extern(C) void function(GstPadTemplate* templ, GstPad* pad) padCreated;
4825 	void*[4] GstReserved;
4826 }
4827 
4828 struct GstParamArray;
4829 
4830 struct GstParamFraction;
4831 
4832 /**
4833  * A GParamSpec derived structure for arrays of values.
4834  */
4835 struct GstParamSpecArray
4836 {
4837 	/**
4838 	 * super class
4839 	 */
4840 	GParamSpec parentInstance;
4841 	/**
4842 	 * the #GParamSpec of the type of values in the array
4843 	 */
4844 	GParamSpec* elementSpec;
4845 }
4846 
4847 /**
4848  * A GParamSpec derived structure that contains the meta data for fractional
4849  * properties.
4850  */
4851 struct GstParamSpecFraction
4852 {
4853 	/**
4854 	 * super class
4855 	 */
4856 	GParamSpec parentInstance;
4857 	/**
4858 	 * minimal numerator
4859 	 */
4860 	int minNum;
4861 	/**
4862 	 * minimal denominator
4863 	 */
4864 	int minDen;
4865 	/**
4866 	 * maximal numerator
4867 	 */
4868 	int maxNum;
4869 	/**
4870 	 * maximal denominator
4871 	 */
4872 	int maxDen;
4873 	/**
4874 	 * default numerator
4875 	 */
4876 	int defNum;
4877 	/**
4878 	 * default denominator
4879 	 */
4880 	int defDen;
4881 }
4882 
4883 /**
4884  * The #GstParentBufferMeta is a #GstMeta which can be attached to a #GstBuffer
4885  * to hold a reference to another buffer that is only released when the child
4886  * #GstBuffer is released.
4887  *
4888  * Typically, #GstParentBufferMeta is used when the child buffer is directly
4889  * using the #GstMemory of the parent buffer, and wants to prevent the parent
4890  * buffer from being returned to a buffer pool until the #GstMemory is available
4891  * for re-use.
4892  *
4893  * Since: 1.6
4894  */
4895 struct GstParentBufferMeta
4896 {
4897 	/**
4898 	 * the parent #GstMeta structure
4899 	 */
4900 	GstMeta parent;
4901 	/**
4902 	 * the #GstBuffer on which a reference is being held.
4903 	 */
4904 	GstBuffer* buffer;
4905 }
4906 
4907 struct GstParseContext;
4908 
4909 struct GstPipeline
4910 {
4911 	GstBin bin;
4912 	/**
4913 	 * The fixed clock of the pipeline, used when
4914 	 * GST_PIPELINE_FLAG_FIXED_CLOCK is set.
4915 	 */
4916 	GstClock* fixedClock;
4917 	/**
4918 	 * The stream time of the pipeline. A better name for this
4919 	 * property would be the running_time, the total time spent in the
4920 	 * PLAYING state without being flushed. (deprecated, use the start_time
4921 	 * on GstElement).
4922 	 */
4923 	GstClockTime streamTime;
4924 	/**
4925 	 * Extra delay added to base_time to compensate for computing delays
4926 	 * when setting elements to PLAYING.
4927 	 */
4928 	GstClockTime delay;
4929 	GstPipelinePrivate* priv;
4930 	void*[4] GstReserved;
4931 }
4932 
4933 struct GstPipelineClass
4934 {
4935 	GstBinClass parentClass;
4936 	void*[4] GstReserved;
4937 }
4938 
4939 struct GstPipelinePrivate;
4940 
4941 struct GstPlugin;
4942 
4943 struct GstPluginClass;
4944 
4945 /**
4946  * A plugin should export a variable of this type called plugin_desc. The plugin
4947  * loader will use the data provided there to initialize the plugin.
4948  *
4949  * The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL,
4950  * BSD, MIT/X11, Proprietary, unknown.
4951  */
4952 struct GstPluginDesc
4953 {
4954 	/**
4955 	 * the major version number of core that plugin was compiled for
4956 	 */
4957 	int majorVersion;
4958 	/**
4959 	 * the minor version number of core that plugin was compiled for
4960 	 */
4961 	int minorVersion;
4962 	/**
4963 	 * a unique name of the plugin
4964 	 */
4965 	const(char)* name;
4966 	/**
4967 	 * description of plugin
4968 	 */
4969 	const(char)* description;
4970 	/**
4971 	 * pointer to the init function of this plugin.
4972 	 */
4973 	GstPluginInitFunc pluginInit;
4974 	/**
4975 	 * version of the plugin
4976 	 */
4977 	const(char)* version_;
4978 	/**
4979 	 * effective license of plugin
4980 	 */
4981 	const(char)* license;
4982 	/**
4983 	 * source module plugin belongs to
4984 	 */
4985 	const(char)* source;
4986 	/**
4987 	 * shipped package plugin belongs to
4988 	 */
4989 	const(char)* package_;
4990 	/**
4991 	 * URL to provider of plugin
4992 	 */
4993 	const(char)* origin;
4994 	/**
4995 	 * date time string in ISO 8601
4996 	 * format (or rather, a subset thereof), or %NULL. Allowed are the
4997 	 * following formats: "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with
4998 	 * 'T' a separator and 'Z' indicating UTC/Zulu time). This field
4999 	 * should be set via the GST_PACKAGE_RELEASE_DATETIME
5000 	 * preprocessor macro.
5001 	 */
5002 	const(char)* releaseDatetime;
5003 	void*[4] GstReserved;
5004 }
5005 
5006 struct GstPluginFeature;
5007 
5008 struct GstPluginFeatureClass;
5009 
5010 struct GstPoll;
5011 
5012 struct GstPollFD
5013 {
5014 	/**
5015 	 * a file descriptor
5016 	 */
5017 	int fd;
5018 	int idx;
5019 }
5020 
5021 struct GstPreset;
5022 
5023 /**
5024  * #GstPreset interface.
5025  */
5026 struct GstPresetInterface
5027 {
5028 	/**
5029 	 * parent interface type.
5030 	 */
5031 	GTypeInterface parent;
5032 	/**
5033 	 *
5034 	 * Params:
5035 	 *     preset = a #GObject that implements #GstPreset
5036 	 * Returns: list with names, use g_strfreev() after usage.
5037 	 */
5038 	extern(C) char** function(GstPreset* preset) getPresetNames;
5039 	/**
5040 	 *
5041 	 * Params:
5042 	 *     preset = a #GObject that implements #GstPreset
5043 	 * Returns: an
5044 	 *     array of property names which should be freed with g_strfreev() after use.
5045 	 */
5046 	extern(C) char** function(GstPreset* preset) getPropertyNames;
5047 	/**
5048 	 *
5049 	 * Params:
5050 	 *     preset = a #GObject that implements #GstPreset
5051 	 *     name = preset name to load
5052 	 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name
5053 	 */
5054 	extern(C) int function(GstPreset* preset, const(char)* name) loadPreset;
5055 	/**
5056 	 *
5057 	 * Params:
5058 	 *     preset = a #GObject that implements #GstPreset
5059 	 *     name = preset name to save
5060 	 * Returns: %TRUE for success, %FALSE
5061 	 */
5062 	extern(C) int function(GstPreset* preset, const(char)* name) savePreset;
5063 	/**
5064 	 *
5065 	 * Params:
5066 	 *     preset = a #GObject that implements #GstPreset
5067 	 *     oldName = current preset name
5068 	 *     newName = new preset name
5069 	 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with @old_name
5070 	 */
5071 	extern(C) int function(GstPreset* preset, const(char)* oldName, const(char)* newName) renamePreset;
5072 	/**
5073 	 *
5074 	 * Params:
5075 	 *     preset = a #GObject that implements #GstPreset
5076 	 *     name = preset name to remove
5077 	 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name
5078 	 */
5079 	extern(C) int function(GstPreset* preset, const(char)* name) deletePreset;
5080 	/**
5081 	 *
5082 	 * Params:
5083 	 *     preset = a #GObject that implements #GstPreset
5084 	 *     name = preset name
5085 	 *     tag = meta data item name
5086 	 *     value = new value
5087 	 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name
5088 	 */
5089 	extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, const(char)* value) setMeta;
5090 	/**
5091 	 *
5092 	 * Params:
5093 	 *     preset = a #GObject that implements #GstPreset
5094 	 *     name = preset name
5095 	 *     tag = meta data item name
5096 	 *     value = value
5097 	 * Returns: %TRUE for success, %FALSE if e.g. there is no preset with that @name
5098 	 *     or no value for the given @tag
5099 	 */
5100 	extern(C) int function(GstPreset* preset, const(char)* name, const(char)* tag, char** value) getMeta;
5101 	void*[4] GstReserved;
5102 }
5103 
5104 struct GstPromise
5105 {
5106 	/**
5107 	 * parent #GstMiniObject
5108 	 */
5109 	GstMiniObject parent;
5110 }
5111 
5112 /**
5113  * Metadata type that holds information about a sample from a protection-protected
5114  * track, including the information needed to decrypt it (if it is encrypted).
5115  *
5116  * Since: 1.6
5117  */
5118 struct GstProtectionMeta
5119 {
5120 	/**
5121 	 * the parent #GstMeta.
5122 	 */
5123 	GstMeta meta;
5124 	/**
5125 	 * the cryptographic information needed to decrypt the sample.
5126 	 */
5127 	GstStructure* info;
5128 }
5129 
5130 struct GstProxyPad
5131 {
5132 	GstPad pad;
5133 	GstProxyPadPrivate* priv;
5134 }
5135 
5136 struct GstProxyPadClass
5137 {
5138 	GstPadClass parentClass;
5139 	void*[1] GstReserved;
5140 }
5141 
5142 struct GstProxyPadPrivate;
5143 
5144 struct GstQuery
5145 {
5146 	/**
5147 	 * The parent #GstMiniObject type
5148 	 */
5149 	GstMiniObject miniObject;
5150 	/**
5151 	 * the #GstQueryType
5152 	 */
5153 	GstQueryType type;
5154 }
5155 
5156 /**
5157  * #GstReferenceTimestampMeta can be used to attach alternative timestamps and
5158  * possibly durations to a #GstBuffer. These are generally not according to
5159  * the pipeline clock and could be e.g. the NTP timestamp when the media was
5160  * captured.
5161  *
5162  * The reference is stored as a #GstCaps in @reference. Examples of valid
5163  * references would be "timestamp/x-drivername-stream" for timestamps that are locally
5164  * generated by some driver named "drivername" when generating the stream,
5165  * e.g. based on a frame counter, or "timestamp/x-ntp, host=pool.ntp.org,
5166  * port=123" for timestamps based on a specific NTP server.
5167  *
5168  * Since: 1.14
5169  */
5170 struct GstReferenceTimestampMeta
5171 {
5172 	/**
5173 	 * the parent #GstMeta structure
5174 	 */
5175 	GstMeta parent;
5176 	/**
5177 	 * identifier for the timestamp reference.
5178 	 */
5179 	GstCaps* reference;
5180 	/**
5181 	 * timestamp
5182 	 */
5183 	GstClockTime timestamp;
5184 	/**
5185 	 * duration, or %GST_CLOCK_TIME_NONE
5186 	 */
5187 	GstClockTime duration;
5188 }
5189 
5190 struct GstRegistry
5191 {
5192 	GstObject object;
5193 	GstRegistryPrivate* priv;
5194 }
5195 
5196 struct GstRegistryClass
5197 {
5198 	GstObjectClass parentClass;
5199 }
5200 
5201 struct GstRegistryPrivate;
5202 
5203 struct GstSample;
5204 
5205 struct GstSegment
5206 {
5207 	/**
5208 	 * flags for this segment
5209 	 */
5210 	GstSegmentFlags flags;
5211 	/**
5212 	 * the playback rate of the segment
5213 	 */
5214 	double rate;
5215 	/**
5216 	 * the already applied rate to the segment
5217 	 */
5218 	double appliedRate;
5219 	/**
5220 	 * the format of the segment values
5221 	 */
5222 	GstFormat format;
5223 	/**
5224 	 * the running time (plus elapsed time, see offset) of the segment start
5225 	 */
5226 	ulong base;
5227 	/**
5228 	 * the amount (in buffer timestamps) that has already been elapsed in
5229 	 * the segment
5230 	 */
5231 	ulong offset;
5232 	/**
5233 	 * the start of the segment in buffer timestamp time (PTS)
5234 	 */
5235 	ulong start;
5236 	/**
5237 	 * the stop of the segment in buffer timestamp time (PTS)
5238 	 */
5239 	ulong stop;
5240 	/**
5241 	 * the stream time of the segment start
5242 	 */
5243 	ulong time;
5244 	/**
5245 	 * the buffer timestamp position in the segment (used internally by
5246 	 * elements such as sources, demuxers or parsers to track progress)
5247 	 */
5248 	ulong position;
5249 	/**
5250 	 * the duration of the stream
5251 	 */
5252 	ulong duration;
5253 	void*[4] GstReserved;
5254 }
5255 
5256 struct GstStaticCaps
5257 {
5258 	/**
5259 	 * the cached #GstCaps
5260 	 */
5261 	GstCaps* caps;
5262 	/**
5263 	 * a string describing a caps
5264 	 */
5265 	const(char)* string_;
5266 	void*[4] GstReserved;
5267 }
5268 
5269 struct GstStaticPadTemplate
5270 {
5271 	/**
5272 	 * the name of the template
5273 	 */
5274 	const(char)* nameTemplate;
5275 	/**
5276 	 * the direction of the template
5277 	 */
5278 	GstPadDirection direction;
5279 	/**
5280 	 * the presence of the template
5281 	 */
5282 	GstPadPresence presence;
5283 	/**
5284 	 * the caps of the template.
5285 	 */
5286 	GstStaticCaps staticCaps;
5287 }
5288 
5289 struct GstStream
5290 {
5291 	GstObject object;
5292 	/**
5293 	 * The Stream Identifier for this #GstStream
5294 	 */
5295 	const(char)* streamId;
5296 	GstStreamPrivate* priv;
5297 	void*[4] GstReserved;
5298 }
5299 
5300 /**
5301  * GstStream class structure
5302  */
5303 struct GstStreamClass
5304 {
5305 	/**
5306 	 * the parent class structure
5307 	 */
5308 	GstObjectClass parentClass;
5309 	void*[4] GstReserved;
5310 }
5311 
5312 struct GstStreamCollection
5313 {
5314 	GstObject object;
5315 	char* upstreamId;
5316 	GstStreamCollectionPrivate* priv;
5317 	void*[4] GstReserved;
5318 }
5319 
5320 /**
5321  * GstStreamCollection class structure
5322  */
5323 struct GstStreamCollectionClass
5324 {
5325 	/**
5326 	 * the parent class structure
5327 	 */
5328 	GstObjectClass parentClass;
5329 	/** */
5330 	extern(C) void function(GstStreamCollection* collection, GstStream* stream, GParamSpec* pspec) streamNotify;
5331 	void*[4] GstReserved;
5332 }
5333 
5334 struct GstStreamCollectionPrivate;
5335 
5336 struct GstStreamPrivate;
5337 
5338 struct GstStructure
5339 {
5340 	/**
5341 	 * the GType of a structure
5342 	 */
5343 	GType type;
5344 	GQuark name;
5345 }
5346 
5347 struct GstSystemClock
5348 {
5349 	GstClock clock;
5350 	GstSystemClockPrivate* priv;
5351 	void*[4] GstReserved;
5352 }
5353 
5354 struct GstSystemClockClass
5355 {
5356 	GstClockClass parentClass;
5357 	void*[4] GstReserved;
5358 }
5359 
5360 struct GstSystemClockPrivate;
5361 
5362 struct GstTagList
5363 {
5364 	/**
5365 	 * the parent type
5366 	 */
5367 	GstMiniObject miniObject;
5368 }
5369 
5370 struct GstTagSetter;
5371 
5372 /**
5373  * #GstTagSetterInterface interface.
5374  */
5375 struct GstTagSetterInterface
5376 {
5377 	/**
5378 	 * parent interface type.
5379 	 */
5380 	GTypeInterface gIface;
5381 }
5382 
5383 struct GstTask
5384 {
5385 	GstObject object;
5386 	/**
5387 	 * the state of the task
5388 	 */
5389 	GstTaskState state;
5390 	/**
5391 	 * used to pause/resume the task
5392 	 */
5393 	GCond cond;
5394 	/**
5395 	 * The lock taken when iterating the task function
5396 	 */
5397 	GRecMutex* lock;
5398 	/**
5399 	 * the function executed by this task
5400 	 */
5401 	GstTaskFunction func;
5402 	/**
5403 	 * user_data passed to the task function
5404 	 */
5405 	void* userData;
5406 	/**
5407 	 * GDestroyNotify for @user_data
5408 	 */
5409 	GDestroyNotify notify;
5410 	/**
5411 	 * a flag indicating that the task is running
5412 	 */
5413 	bool running;
5414 	GThread* thread;
5415 	GstTaskPrivate* priv;
5416 	void*[4] GstReserved;
5417 }
5418 
5419 struct GstTaskClass
5420 {
5421 	GstObjectClass parentClass;
5422 	GstTaskPool* pool;
5423 	void*[4] GstReserved;
5424 }
5425 
5426 struct GstTaskPool
5427 {
5428 	GstObject object;
5429 	GThreadPool* pool;
5430 	void*[4] GstReserved;
5431 }
5432 
5433 /**
5434  * The #GstTaskPoolClass object.
5435  */
5436 struct GstTaskPoolClass
5437 {
5438 	/**
5439 	 * the parent class structure
5440 	 */
5441 	GstObjectClass parentClass;
5442 	/** */
5443 	extern(C) void function(GstTaskPool* pool, GError** err) prepare;
5444 	/** */
5445 	extern(C) void function(GstTaskPool* pool) cleanup;
5446 	/**
5447 	 *
5448 	 * Params:
5449 	 *     pool = a #GstTaskPool
5450 	 *     func = the function to call
5451 	 *     userData = data to pass to @func
5452 	 * Returns: a pointer that should be used
5453 	 *     for the gst_task_pool_join function. This pointer can be %NULL, you
5454 	 *     must check @error to detect errors.
5455 	 *
5456 	 * Throws: GException on failure.
5457 	 */
5458 	extern(C) void* function(GstTaskPool* pool, GstTaskPoolFunction func, void* userData, GError** err) push;
5459 	/** */
5460 	extern(C) void function(GstTaskPool* pool, void* id) join;
5461 	void*[4] GstReserved;
5462 }
5463 
5464 struct GstTaskPrivate;
5465 
5466 /**
5467  * Structure for saving a timestamp and a value.
5468  */
5469 struct GstTimedValue
5470 {
5471 	/**
5472 	 * timestamp of the value change
5473 	 */
5474 	GstClockTime timestamp;
5475 	/**
5476 	 * the corresponding value
5477 	 */
5478 	double value;
5479 }
5480 
5481 struct GstToc;
5482 
5483 struct GstTocEntry;
5484 
5485 struct GstTocSetter;
5486 
5487 /**
5488  * #GstTocSetterInterface interface.
5489  */
5490 struct GstTocSetterInterface
5491 {
5492 	/**
5493 	 * parent interface type.
5494 	 */
5495 	GTypeInterface gIface;
5496 }
5497 
5498 struct GstTracer
5499 {
5500 	GstObject parent;
5501 	GstTracerPrivate* priv;
5502 	void*[4] GstReserved;
5503 }
5504 
5505 struct GstTracerClass
5506 {
5507 	GstObjectClass parentClass;
5508 	void*[4] GstReserved;
5509 }
5510 
5511 struct GstTracerFactory;
5512 
5513 struct GstTracerFactoryClass;
5514 
5515 struct GstTracerPrivate;
5516 
5517 struct GstTracerRecord;
5518 
5519 struct GstTracerRecordClass;
5520 
5521 struct GstTypeFind
5522 {
5523 	/** */
5524 	extern(C) ubyte* function(void* data, long offset, uint size) peek;
5525 	/** */
5526 	extern(C) void function(void* data, uint probability, GstCaps* caps) suggest;
5527 	/**
5528 	 * The data used by the caller of the typefinding function.
5529 	 */
5530 	void* data;
5531 	/** */
5532 	extern(C) ulong function(void* data) getLength;
5533 	void*[4] GstReserved;
5534 }
5535 
5536 struct GstTypeFindFactory;
5537 
5538 struct GstTypeFindFactoryClass;
5539 
5540 struct GstURIHandler;
5541 
5542 /**
5543  * Any #GstElement using this interface should implement these methods.
5544  */
5545 struct GstURIHandlerInterface
5546 {
5547 	/**
5548 	 * The parent interface type
5549 	 */
5550 	GTypeInterface parent;
5551 	/** */
5552 	extern(C) GstURIType function(GType type) getType;
5553 	/** */
5554 	extern(C) char** function(GType type) getProtocols;
5555 	/**
5556 	 *
5557 	 * Params:
5558 	 *     handler = A #GstURIHandler
5559 	 * Returns: the URI currently handled by
5560 	 *     the @handler.  Returns %NULL if there are no URI currently
5561 	 *     handled. The returned string must be freed with g_free() when no
5562 	 *     longer needed.
5563 	 */
5564 	extern(C) char* function(GstURIHandler* handler) getUri;
5565 	/**
5566 	 *
5567 	 * Params:
5568 	 *     handler = A #GstURIHandler
5569 	 *     uri = URI to set
5570 	 * Returns: %TRUE if the URI was set successfully, else %FALSE.
5571 	 *
5572 	 * Throws: GException on failure.
5573 	 */
5574 	extern(C) int function(GstURIHandler* handler, const(char)* uri, GError** err) setUri;
5575 }
5576 
5577 struct GstUri;
5578 
5579 struct GstValueArray;
5580 
5581 struct GstValueList;
5582 
5583 /**
5584  * VTable for the #GValue @type.
5585  */
5586 struct GstValueTable
5587 {
5588 	/**
5589 	 * a #GType
5590 	 */
5591 	GType type;
5592 	/**
5593 	 * a #GstValueCompareFunc
5594 	 */
5595 	GstValueCompareFunc compare;
5596 	/**
5597 	 * a #GstValueSerializeFunc
5598 	 */
5599 	GstValueSerializeFunc serialize;
5600 	/**
5601 	 * a #GstValueDeserializeFunc
5602 	 */
5603 	GstValueDeserializeFunc deserialize;
5604 	void*[4] GstReserved;
5605 }
5606 
5607 /**
5608  * A function that will be called from gst_buffer_foreach_meta(). The @meta
5609  * field will point to a the reference of the meta.
5610  *
5611  * @buffer should not be modified from this callback.
5612  *
5613  * When this function returns %TRUE, the next meta will be
5614  * returned. When %FALSE is returned, gst_buffer_foreach_meta() will return.
5615  *
5616  * When @meta is set to %NULL, the item will be removed from the buffer.
5617  *
5618  * Params:
5619  *     buffer = a #GstBuffer
5620  *     meta = a pointer to a #GstMeta
5621  *     userData = user data passed to gst_buffer_foreach_meta()
5622  *
5623  * Returns: %FALSE when gst_buffer_foreach_meta() should stop
5624  */
5625 public alias extern(C) int function(GstBuffer* buffer, GstMeta** meta, void* userData) GstBufferForeachMetaFunc;
5626 
5627 /**
5628  * A function that will be called from gst_buffer_list_foreach(). The @buffer
5629  * field will point to a the reference of the buffer at @idx.
5630  *
5631  * When this function returns %TRUE, the next buffer will be
5632  * returned. When %FALSE is returned, gst_buffer_list_foreach() will return.
5633  *
5634  * When @buffer is set to %NULL, the item will be removed from the bufferlist.
5635  * When @buffer has been made writable, the new buffer reference can be assigned
5636  * to @buffer. This function is responsible for unreffing the old buffer when
5637  * removing or modifying.
5638  *
5639  * Params:
5640  *     buffer = pointer the buffer
5641  *     idx = the index of @buffer
5642  *     userData = user data passed to gst_buffer_list_foreach()
5643  *
5644  * Returns: %FALSE when gst_buffer_list_foreach() should stop
5645  */
5646 public alias extern(C) int function(GstBuffer** buffer, uint idx, void* userData) GstBufferListFunc;
5647 
5648 /**
5649  * Specifies the type of function passed to gst_bus_add_watch() or
5650  * gst_bus_add_watch_full(), which is called from the mainloop when a message
5651  * is available on the bus.
5652  *
5653  * The message passed to the function will be unreffed after execution of this
5654  * function so it should not be freed in the function.
5655  *
5656  * Note that this function is used as a GSourceFunc which means that returning
5657  * %FALSE will remove the GSource from the mainloop.
5658  *
5659  * Params:
5660  *     bus = the #GstBus that sent the message
5661  *     message = the #GstMessage
5662  *     userData = user data that has been given, when registering the handler
5663  *
5664  * Returns: %FALSE if the event source should be removed.
5665  */
5666 public alias extern(C) int function(GstBus* bus, GstMessage* message, void* userData) GstBusFunc;
5667 
5668 /**
5669  * Handler will be invoked synchronously, when a new message has been injected
5670  * into the bus. This function is mostly used internally. Only one sync handler
5671  * can be attached to a given bus.
5672  *
5673  * If the handler returns GST_BUS_DROP, it should unref the message, else the
5674  * message should not be unreffed by the sync handler.
5675  *
5676  * Params:
5677  *     bus = the #GstBus that sent the message
5678  *     message = the #GstMessage
5679  *     userData = user data that has been given, when registering the handler
5680  *
5681  * Returns: #GstBusSyncReply stating what to do with the message
5682  */
5683 public alias extern(C) GstBusSyncReply function(GstBus* bus, GstMessage* message, void* userData) GstBusSyncHandler;
5684 
5685 /**
5686  * A function that will be called in gst_caps_filter_and_map_in_place().
5687  * The function may modify @features and @structure, and both will be
5688  * removed from the caps if %FALSE is returned.
5689  *
5690  * Params:
5691  *     features = the #GstCapsFeatures
5692  *     structure = the #GstStructure
5693  *     userData = user data
5694  *
5695  * Returns: %TRUE if the features and structure should be preserved,
5696  *     %FALSE if it should be removed.
5697  */
5698 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsFilterMapFunc;
5699 
5700 /**
5701  * A function that will be called in gst_caps_foreach(). The function may
5702  * not modify @features or @structure.
5703  *
5704  * Params:
5705  *     features = the #GstCapsFeatures
5706  *     structure = the #GstStructure
5707  *     userData = user data
5708  *
5709  * Returns: %TRUE if the foreach operation should continue, %FALSE if
5710  *     the foreach operation should stop with %FALSE.
5711  *
5712  * Since: 1.6
5713  */
5714 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsForeachFunc;
5715 
5716 /**
5717  * A function that will be called in gst_caps_map_in_place(). The function
5718  * may modify @features and @structure.
5719  *
5720  * Params:
5721  *     features = the #GstCapsFeatures
5722  *     structure = the #GstStructure
5723  *     userData = user data
5724  *
5725  * Returns: %TRUE if the map operation should continue, %FALSE if
5726  *     the map operation should stop with %FALSE.
5727  */
5728 public alias extern(C) int function(GstCapsFeatures* features, GstStructure* structure, void* userData) GstCapsMapFunc;
5729 
5730 /**
5731  * The function prototype of the callback.
5732  *
5733  * Params:
5734  *     clock = The clock that triggered the callback
5735  *     time = The time it was triggered
5736  *     id = The #GstClockID that expired
5737  *     userData = user data passed in the gst_clock_id_wait_async() function
5738  *
5739  * Returns: %TRUE or %FALSE (currently unused)
5740  */
5741 public alias extern(C) int function(GstClock* clock, GstClockTime time, GstClockID id, void* userData) GstClockCallback;
5742 
5743 /** */
5744 public alias extern(C) void function(GstControlBinding* binding, double srcValue, GValue* destValue) GstControlBindingConvert;
5745 
5746 /**
5747  * Function for returning a value for a given timestamp.
5748  *
5749  * Params:
5750  *     self = the #GstControlSource instance
5751  *     timestamp = timestamp for which a value should be calculated
5752  *     value = a value which will be set to the result.
5753  *
5754  * Returns: %TRUE if the value was successfully calculated.
5755  */
5756 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, double* value) GstControlSourceGetValue;
5757 
5758 /**
5759  * Function for returning an array of values for starting at a given timestamp.
5760  *
5761  * Params:
5762  *     self = the #GstControlSource instance
5763  *     timestamp = timestamp for which a value should be calculated
5764  *     interval = the time spacing between subsequent values
5765  *     nValues = the number of values
5766  *     values = array to put control-values in
5767  *
5768  * Returns: %TRUE if the values were successfully calculated.
5769  */
5770 public alias extern(C) int function(GstControlSource* self, GstClockTime timestamp, GstClockTime interval, uint nValues, double* values) GstControlSourceGetValueArray;
5771 
5772 /** */
5773 public alias extern(C) void function() GstDebugFuncPtr;
5774 
5775 /** */
5776 public alias extern(C) void function(GstElement* element, void* userData) GstElementCallAsyncFunc;
5777 
5778 /**
5779  * Function called for each pad when using gst_element_foreach_sink_pad(),
5780  * gst_element_foreach_src_pad(), or gst_element_foreach_pad().
5781  *
5782  * Params:
5783  *     element = the #GstElement
5784  *     pad = a #GstPad
5785  *     userData = user data passed to the foreach function
5786  *
5787  * Returns: %FALSE to stop iterating pads, %TRUE to continue
5788  *
5789  * Since: 1.14
5790  */
5791 public alias extern(C) int function(GstElement* element, GstPad* pad, void* userData) GstElementForeachPadFunc;
5792 
5793 /**
5794  * This function will be called when creating a copy of @it and should
5795  * create a copy of all custom iterator fields or increase their
5796  * reference counts.
5797  *
5798  * Params:
5799  *     it = The original iterator
5800  *     copy = The copied iterator
5801  */
5802 public alias extern(C) void function(GstIterator* it, GstIterator* copy) GstIteratorCopyFunction;
5803 
5804 /**
5805  * A function to be passed to gst_iterator_fold().
5806  *
5807  * Params:
5808  *     item = the item to fold
5809  *     ret = a #GValue collecting the result
5810  *     userData = data passed to gst_iterator_fold()
5811  *
5812  * Returns: %TRUE if the fold should continue, %FALSE if it should stop.
5813  */
5814 public alias extern(C) int function(GValue* item, GValue* ret, void* userData) GstIteratorFoldFunction;
5815 
5816 /**
5817  * A function that is called by gst_iterator_foreach() for every element.
5818  *
5819  * Params:
5820  *     item = The item
5821  *     userData = User data
5822  */
5823 public alias extern(C) void function(GValue* item, void* userData) GstIteratorForeachFunction;
5824 
5825 /**
5826  * This function will be called when the iterator is freed.
5827  *
5828  * Implementors of a #GstIterator should implement this
5829  * function and pass it to the constructor of the custom iterator.
5830  * The function will be called with the iterator lock held.
5831  *
5832  * Params:
5833  *     it = the iterator
5834  */
5835 public alias extern(C) void function(GstIterator* it) GstIteratorFreeFunction;
5836 
5837 /**
5838  * The function that will be called after the next item of the iterator
5839  * has been retrieved. This function can be used to skip items or stop
5840  * the iterator.
5841  *
5842  * The function will be called with the iterator lock held.
5843  *
5844  * Params:
5845  *     it = the iterator
5846  *     item = the item being retrieved.
5847  *
5848  * Returns: the result of the operation.
5849  */
5850 public alias extern(C) GstIteratorItem function(GstIterator* it, GValue* item) GstIteratorItemFunction;
5851 
5852 /**
5853  * The function that will be called when the next element of the iterator
5854  * should be retrieved.
5855  *
5856  * Implementors of a #GstIterator should implement this
5857  * function and pass it to the constructor of the custom iterator.
5858  * The function will be called with the iterator lock held.
5859  *
5860  * Params:
5861  *     it = the iterator
5862  *     result = a pointer to hold the next item
5863  *
5864  * Returns: the result of the operation.
5865  */
5866 public alias extern(C) GstIteratorResult function(GstIterator* it, GValue* result) GstIteratorNextFunction;
5867 
5868 /**
5869  * This function will be called whenever a concurrent update happened
5870  * to the iterated datastructure. The implementor of the iterator should
5871  * restart the iterator from the beginning and clean up any state it might
5872  * have.
5873  *
5874  * Implementors of a #GstIterator should implement this
5875  * function and pass it to the constructor of the custom iterator.
5876  * The function will be called with the iterator lock held.
5877  *
5878  * Params:
5879  *     it = the iterator
5880  */
5881 public alias extern(C) void function(GstIterator* it) GstIteratorResyncFunction;
5882 
5883 /**
5884  * Function prototype for a logging function that can be registered with
5885  * gst_debug_add_log_function().
5886  * Use G_GNUC_NO_INSTRUMENT on that function.
5887  *
5888  * Params:
5889  *     category = a #GstDebugCategory
5890  *     level = a #GstDebugLevel
5891  *     file = file name
5892  *     function_ = function name
5893  *     line = line number
5894  *     object = a #GObject
5895  *     message = the message
5896  *     userData = user data for the log function
5897  */
5898 public alias extern(C) void function(GstDebugCategory* category, GstDebugLevel level, const(char)* file, const(char)* function_, int line, GObject* object, GstDebugMessage* message, void* userData) GstLogFunction;
5899 
5900 /**
5901  * Copy @size bytes from @mem starting at @offset and return them wrapped in a
5902  * new GstMemory object.
5903  * If @size is set to -1, all bytes starting at @offset are copied.
5904  *
5905  * Params:
5906  *     mem = a #GstMemory
5907  *     offset = an offset
5908  *     size = a size or -1
5909  *
5910  * Returns: a new #GstMemory object wrapping a copy of the requested region in
5911  *     @mem.
5912  */
5913 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryCopyFunction;
5914 
5915 /**
5916  * Check if @mem1 and @mem2 occupy contiguous memory and return the offset of
5917  * @mem1 in the parent buffer in @offset.
5918  *
5919  * Params:
5920  *     mem1 = a #GstMemory
5921  *     mem2 = a #GstMemory
5922  *     offset = a result offset
5923  *
5924  * Returns: %TRUE if @mem1 and @mem2 are in contiguous memory.
5925  */
5926 public alias extern(C) int function(GstMemory* mem1, GstMemory* mem2, size_t* offset) GstMemoryIsSpanFunction;
5927 
5928 /**
5929  * Get the memory of @mem that can be accessed according to the mode specified
5930  * in @info's flags. The function should return a pointer that contains at least
5931  * @maxsize bytes.
5932  *
5933  * Params:
5934  *     mem = a #GstMemory
5935  *     info = the #GstMapInfo to map with
5936  *     maxsize = size to map
5937  *
5938  * Returns: a pointer to memory of which at least @maxsize bytes can be
5939  *     accessed according to the access pattern in @info's flags.
5940  */
5941 public alias extern(C) void* function(GstMemory* mem, GstMapInfo* info, size_t maxsize) GstMemoryMapFullFunction;
5942 
5943 /**
5944  * Get the memory of @mem that can be accessed according to the mode specified
5945  * in @flags. The function should return a pointer that contains at least
5946  * @maxsize bytes.
5947  *
5948  * Params:
5949  *     mem = a #GstMemory
5950  *     maxsize = size to map
5951  *     flags = access mode for the memory
5952  *
5953  * Returns: a pointer to memory of which at least @maxsize bytes can be
5954  *     accessed according to the access pattern in @flags.
5955  */
5956 public alias extern(C) void* function(GstMemory* mem, size_t maxsize, GstMapFlags flags) GstMemoryMapFunction;
5957 
5958 /**
5959  * Share @size bytes from @mem starting at @offset and return them wrapped in a
5960  * new GstMemory object. If @size is set to -1, all bytes starting at @offset are
5961  * shared. This function does not make a copy of the bytes in @mem.
5962  *
5963  * Params:
5964  *     mem = a #GstMemory
5965  *     offset = an offset
5966  *     size = a size or -1
5967  *
5968  * Returns: a new #GstMemory object sharing the requested region in @mem.
5969  */
5970 public alias extern(C) GstMemory* function(GstMemory* mem, ptrdiff_t offset, ptrdiff_t size) GstMemoryShareFunction;
5971 
5972 /**
5973  * Return the pointer previously retrieved with gst_memory_map() with @info.
5974  *
5975  * Params:
5976  *     mem = a #GstMemory
5977  *     info = a #GstMapInfo
5978  */
5979 public alias extern(C) void function(GstMemory* mem, GstMapInfo* info) GstMemoryUnmapFullFunction;
5980 
5981 /**
5982  * Return the pointer previously retrieved with gst_memory_map().
5983  *
5984  * Params:
5985  *     mem = a #GstMemory
5986  */
5987 public alias extern(C) void function(GstMemory* mem) GstMemoryUnmapFunction;
5988 
5989 /**
5990  * Function called when @meta is freed in @buffer.
5991  *
5992  * Params:
5993  *     meta = a #GstMeta
5994  *     buffer = a #GstBuffer
5995  */
5996 public alias extern(C) void function(GstMeta* meta, GstBuffer* buffer) GstMetaFreeFunction;
5997 
5998 /**
5999  * Function called when @meta is initialized in @buffer.
6000  *
6001  * Params:
6002  *     meta = a #GstMeta
6003  *     params = parameters passed to the init function
6004  *     buffer = a #GstBuffer
6005  */
6006 public alias extern(C) int function(GstMeta* meta, void* params, GstBuffer* buffer) GstMetaInitFunction;
6007 
6008 /**
6009  * Function called for each @meta in @buffer as a result of performing a
6010  * transformation on @transbuf. Additional @type specific transform data
6011  * is passed to the function as @data.
6012  *
6013  * Implementations should check the @type of the transform and parse
6014  * additional type specific fields in @data that should be used to update
6015  * the metadata on @transbuf.
6016  *
6017  * Params:
6018  *     transbuf = a #GstBuffer
6019  *     meta = a #GstMeta
6020  *     buffer = a #GstBuffer
6021  *     type = the transform type
6022  *     data = transform specific data.
6023  *
6024  * Returns: %TRUE if the transform could be performed
6025  */
6026 public alias extern(C) int function(GstBuffer* transbuf, GstMeta* meta, GstBuffer* buffer, GQuark type, void* data) GstMetaTransformFunction;
6027 
6028 /**
6029  * Function prototype for methods to create copies of instances.
6030  *
6031  * Params:
6032  *     obj = MiniObject to copy
6033  *
6034  * Returns: reference to cloned instance.
6035  */
6036 public alias extern(C) GstMiniObject* function(GstMiniObject* obj) GstMiniObjectCopyFunction;
6037 
6038 /**
6039  * Function prototype for when a miniobject has lost its last refcount.
6040  * Implementation of the mini object are allowed to revive the
6041  * passed object by doing a gst_mini_object_ref(). If the object is not
6042  * revived after the dispose function, the function should return %TRUE
6043  * and the memory associated with the object is freed.
6044  *
6045  * Params:
6046  *     obj = MiniObject to dispose
6047  *
6048  * Returns: %TRUE if the object should be cleaned up.
6049  */
6050 public alias extern(C) int function(GstMiniObject* obj) GstMiniObjectDisposeFunction;
6051 
6052 /**
6053  * Virtual function prototype for methods to free resources used by
6054  * mini-objects.
6055  *
6056  * Params:
6057  *     obj = MiniObject to free
6058  */
6059 public alias extern(C) void function(GstMiniObject* obj) GstMiniObjectFreeFunction;
6060 
6061 /**
6062  * A #GstMiniObjectNotify function can be added to a mini object as a
6063  * callback that gets triggered when gst_mini_object_unref() drops the
6064  * last ref and @obj is about to be freed.
6065  *
6066  * Params:
6067  *     userData = data that was provided when the notify was added
6068  *     obj = the mini object
6069  */
6070 public alias extern(C) void function(void* userData, GstMiniObject* obj) GstMiniObjectNotify;
6071 
6072 /**
6073  * This function is called when the pad is activated during the element
6074  * READY to PAUSED state change. By default this function will call the
6075  * activate function that puts the pad in push mode but elements can
6076  * override this function to activate the pad in pull mode if they wish.
6077  *
6078  * Params:
6079  *     pad = a #GstPad
6080  *     parent = the parent of @pad
6081  *
6082  * Returns: %TRUE if the pad could be activated.
6083  */
6084 public alias extern(C) int function(GstPad* pad, GstObject* parent) GstPadActivateFunction;
6085 
6086 /**
6087  * The prototype of the push and pull activate functions.
6088  *
6089  * Params:
6090  *     pad = a #GstPad
6091  *     parent = the parent of @pad
6092  *     mode = the requested activation mode of @pad
6093  *     active = activate or deactivate the pad.
6094  *
6095  * Returns: %TRUE if the pad could be activated or deactivated.
6096  */
6097 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstPadMode mode, int active) GstPadActivateModeFunction;
6098 
6099 /**
6100  * A function that will be called on sinkpads when chaining buffers.
6101  * The function typically processes the data contained in the buffer and
6102  * either consumes the data or passes it on to the internally linked pad(s).
6103  *
6104  * The implementer of this function receives a refcount to @buffer and should
6105  * gst_buffer_unref() when the buffer is no longer needed.
6106  *
6107  * When a chain function detects an error in the data stream, it must post an
6108  * error on the bus and return an appropriate #GstFlowReturn value.
6109  *
6110  * Params:
6111  *     pad = the sink #GstPad that performed the chain.
6112  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6113  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6114  *         during the execution of this function.
6115  *     buffer = the #GstBuffer that is chained, not %NULL.
6116  *
6117  * Returns: #GST_FLOW_OK for success
6118  */
6119 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBuffer* buffer) GstPadChainFunction;
6120 
6121 /**
6122  * A function that will be called on sinkpads when chaining buffer lists.
6123  * The function typically processes the data contained in the buffer list and
6124  * either consumes the data or passes it on to the internally linked pad(s).
6125  *
6126  * The implementer of this function receives a refcount to @list and
6127  * should gst_buffer_list_unref() when the list is no longer needed.
6128  *
6129  * When a chainlist function detects an error in the data stream, it must
6130  * post an error on the bus and return an appropriate #GstFlowReturn value.
6131  *
6132  * Params:
6133  *     pad = the sink #GstPad that performed the chain.
6134  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6135  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6136  *         during the execution of this function.
6137  *     list = the #GstBufferList that is chained, not %NULL.
6138  *
6139  * Returns: #GST_FLOW_OK for success
6140  */
6141 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstBufferList* list) GstPadChainListFunction;
6142 
6143 /**
6144  * Function signature to handle an event for the pad.
6145  *
6146  * This variant is for specific elements that will take into account the
6147  * last downstream flow return (from a pad push), in which case they can
6148  * return it.
6149  *
6150  * Params:
6151  *     pad = the #GstPad to handle the event.
6152  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6153  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6154  *         during the execution of this function.
6155  *     event = the #GstEvent to handle.
6156  *
6157  * Returns: %GST_FLOW_OK if the event was handled properly, or any other
6158  *     #GstFlowReturn dependent on downstream state.
6159  *
6160  * Since: 1.8
6161  */
6162 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFullFunction;
6163 
6164 /**
6165  * Function signature to handle an event for the pad.
6166  *
6167  * Params:
6168  *     pad = the #GstPad to handle the event.
6169  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6170  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6171  *         during the execution of this function.
6172  *     event = the #GstEvent to handle.
6173  *
6174  * Returns: %TRUE if the pad could handle the event.
6175  */
6176 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstEvent* event) GstPadEventFunction;
6177 
6178 /**
6179  * A forward function is called for all internally linked pads, see
6180  * gst_pad_forward().
6181  *
6182  * Params:
6183  *     pad = the #GstPad that is forwarded.
6184  *     userData = the gpointer to optional user data.
6185  *
6186  * Returns: %TRUE if the dispatching procedure has to be stopped.
6187  */
6188 public alias extern(C) int function(GstPad* pad, void* userData) GstPadForwardFunction;
6189 
6190 /**
6191  * This function will be called on source pads when a peer element
6192  * request a buffer at the specified @offset and @length. If this function
6193  * returns #GST_FLOW_OK, the result buffer will be stored in @buffer. The
6194  * contents of @buffer is invalid for any other return value.
6195  *
6196  * This function is installed on a source pad with
6197  * gst_pad_set_getrange_function() and can only be called on source pads after
6198  * they are successfully activated with gst_pad_activate_mode() with the
6199  * #GST_PAD_MODE_PULL.
6200  *
6201  * @offset and @length are always given in byte units. @offset must normally be a value
6202  * between 0 and the length in bytes of the data available on @pad. The
6203  * length (duration in bytes) can be retrieved with a #GST_QUERY_DURATION or with a
6204  * #GST_QUERY_SEEKING.
6205  *
6206  * Any @offset larger or equal than the length will make the function return
6207  * #GST_FLOW_EOS, which corresponds to EOS. In this case @buffer does not
6208  * contain a valid buffer.
6209  *
6210  * The buffer size of @buffer will only be smaller than @length when @offset is
6211  * near the end of the stream. In all other cases, the size of @buffer must be
6212  * exactly the requested size.
6213  *
6214  * It is allowed to call this function with a 0 @length and valid @offset, in
6215  * which case @buffer will contain a 0-sized buffer and the function returns
6216  * #GST_FLOW_OK.
6217  *
6218  * When this function is called with a -1 @offset, the sequentially next buffer
6219  * of length @length in the stream is returned.
6220  *
6221  * When this function is called with a -1 @length, a buffer with a default
6222  * optimal length is returned in @buffer. The length might depend on the value
6223  * of @offset.
6224  *
6225  * Params:
6226  *     pad = the src #GstPad to perform the getrange on.
6227  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6228  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6229  *         during the execution of this function.
6230  *     offset = the offset of the range
6231  *     length = the length of the range
6232  *     buffer = a memory location to hold the result buffer, cannot be %NULL.
6233  *
6234  * Returns: #GST_FLOW_OK for success and a valid buffer in @buffer. Any other
6235  *     return value leaves @buffer undefined.
6236  */
6237 public alias extern(C) GstFlowReturn function(GstPad* pad, GstObject* parent, ulong offset, uint length, GstBuffer** buffer) GstPadGetRangeFunction;
6238 
6239 /**
6240  * The signature of the internal pad link iterator function.
6241  *
6242  * Params:
6243  *     pad = The #GstPad to query.
6244  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6245  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6246  *         during the execution of this function.
6247  *
6248  * Returns: a new #GstIterator that will iterate over all pads that are
6249  *     linked to the given pad on the inside of the parent element.
6250  *
6251  *     the caller must call gst_iterator_free() after usage.
6252  */
6253 public alias extern(C) GstIterator* function(GstPad* pad, GstObject* parent) GstPadIterIntLinkFunction;
6254 
6255 /**
6256  * Function signature to handle a new link on the pad.
6257  *
6258  * Params:
6259  *     pad = the #GstPad that is linked.
6260  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6261  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6262  *         during the execution of this function.
6263  *     peer = the peer #GstPad of the link
6264  *
6265  * Returns: the result of the link with the specified peer.
6266  */
6267 public alias extern(C) GstPadLinkReturn function(GstPad* pad, GstObject* parent, GstPad* peer) GstPadLinkFunction;
6268 
6269 /**
6270  * Callback used by gst_pad_add_probe(). Gets called to notify about the current
6271  * blocking type.
6272  *
6273  * The callback is allowed to modify the data pointer in @info.
6274  *
6275  * Params:
6276  *     pad = the #GstPad that is blocked
6277  *     info = #GstPadProbeInfo
6278  *     userData = the gpointer to optional user data.
6279  *
6280  * Returns: a #GstPadProbeReturn
6281  */
6282 public alias extern(C) GstPadProbeReturn function(GstPad* pad, GstPadProbeInfo* info, void* userData) GstPadProbeCallback;
6283 
6284 /**
6285  * The signature of the query function.
6286  *
6287  * Params:
6288  *     pad = the #GstPad to query.
6289  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6290  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6291  *         during the execution of this function.
6292  *     query = the #GstQuery object to execute
6293  *
6294  * Returns: %TRUE if the query could be performed.
6295  */
6296 public alias extern(C) int function(GstPad* pad, GstObject* parent, GstQuery* query) GstPadQueryFunction;
6297 
6298 /**
6299  * Callback used by gst_pad_sticky_events_foreach().
6300  *
6301  * When this function returns %TRUE, the next event will be
6302  * returned. When %FALSE is returned, gst_pad_sticky_events_foreach() will return.
6303  *
6304  * When @event is set to %NULL, the item will be removed from the list of sticky events.
6305  * @event can be replaced by assigning a new reference to it.
6306  * This function is responsible for unreffing the old event when
6307  * removing or modifying.
6308  *
6309  * Params:
6310  *     pad = the #GstPad.
6311  *     event = a sticky #GstEvent.
6312  *     userData = the #gpointer to optional user data.
6313  *
6314  * Returns: %TRUE if the iteration should continue
6315  */
6316 public alias extern(C) int function(GstPad* pad, GstEvent** event, void* userData) GstPadStickyEventsForeachFunction;
6317 
6318 /**
6319  * Function signature to handle a unlinking the pad prom its peer.
6320  *
6321  * The pad's lock is already held when the unlink function is called, so most
6322  * pad functions cannot be called from within the callback.
6323  *
6324  * Params:
6325  *     pad = the #GstPad that is linked.
6326  *     parent = the parent of @pad. If the #GST_PAD_FLAG_NEED_PARENT
6327  *         flag is set, @parent is guaranteed to be not-%NULL and remain valid
6328  *         during the execution of this function.
6329  */
6330 public alias extern(C) void function(GstPad* pad, GstObject* parent) GstPadUnlinkFunction;
6331 
6332 /**
6333  * A function that can be used with e.g. gst_registry_feature_filter()
6334  * to get a list of pluginfeature that match certain criteria.
6335  *
6336  * Params:
6337  *     feature = the pluginfeature to check
6338  *     userData = the user_data that has been passed on e.g.
6339  *         gst_registry_feature_filter()
6340  *
6341  * Returns: %TRUE for a positive match, %FALSE otherwise
6342  */
6343 public alias extern(C) int function(GstPluginFeature* feature, void* userData) GstPluginFeatureFilter;
6344 
6345 /**
6346  * A function that can be used with e.g. gst_registry_plugin_filter()
6347  * to get a list of plugins that match certain criteria.
6348  *
6349  * Params:
6350  *     plugin = the plugin to check
6351  *     userData = the user_data that has been passed on e.g. gst_registry_plugin_filter()
6352  *
6353  * Returns: %TRUE for a positive match, %FALSE otherwise
6354  */
6355 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginFilter;
6356 
6357 /**
6358  * A plugin should provide a pointer to a function of either #GstPluginInitFunc
6359  * or this type in the plugin_desc struct.
6360  * The function will be called by the loader at startup. One would then
6361  * register each #GstPluginFeature. This version allows
6362  * user data to be passed to init function (useful for bindings).
6363  *
6364  * Params:
6365  *     plugin = The plugin object
6366  *     userData = extra data
6367  *
6368  * Returns: %TRUE if plugin initialised successfully
6369  */
6370 public alias extern(C) int function(GstPlugin* plugin, void* userData) GstPluginInitFullFunc;
6371 
6372 /**
6373  * A plugin should provide a pointer to a function of this type in the
6374  * plugin_desc struct.
6375  * This function will be called by the loader at startup. One would then
6376  * register each #GstPluginFeature.
6377  *
6378  * Params:
6379  *     plugin = The plugin object
6380  *
6381  * Returns: %TRUE if plugin initialised successfully
6382  */
6383 public alias extern(C) int function(GstPlugin* plugin) GstPluginInitFunc;
6384 
6385 /** */
6386 public alias extern(C) void function(GstPromise* promise, void* userData) GstPromiseChangeFunc;
6387 
6388 /**
6389  * A function that will be called in gst_structure_filter_and_map_in_place().
6390  * The function may modify @value, and the value will be removed from
6391  * the structure if %FALSE is returned.
6392  *
6393  * Params:
6394  *     fieldId = the #GQuark of the field name
6395  *     value = the #GValue of the field
6396  *     userData = user data
6397  *
6398  * Returns: %TRUE if the field should be preserved, %FALSE if it
6399  *     should be removed.
6400  */
6401 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureFilterMapFunc;
6402 
6403 /**
6404  * A function that will be called in gst_structure_foreach(). The function may
6405  * not modify @value.
6406  *
6407  * Params:
6408  *     fieldId = the #GQuark of the field name
6409  *     value = the #GValue of the field
6410  *     userData = user data
6411  *
6412  * Returns: %TRUE if the foreach operation should continue, %FALSE if
6413  *     the foreach operation should stop with %FALSE.
6414  */
6415 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureForeachFunc;
6416 
6417 /**
6418  * A function that will be called in gst_structure_map_in_place(). The function
6419  * may modify @value.
6420  *
6421  * Params:
6422  *     fieldId = the #GQuark of the field name
6423  *     value = the #GValue of the field
6424  *     userData = user data
6425  *
6426  * Returns: %TRUE if the map operation should continue, %FALSE if
6427  *     the map operation should stop with %FALSE.
6428  */
6429 public alias extern(C) int function(GQuark fieldId, GValue* value, void* userData) GstStructureMapFunc;
6430 
6431 /**
6432  * A function that will be called in gst_tag_list_foreach(). The function may
6433  * not modify the tag list.
6434  *
6435  * Params:
6436  *     list = the #GstTagList
6437  *     tag = a name of a tag in @list
6438  *     userData = user data
6439  */
6440 public alias extern(C) void function(GstTagList* list, const(char)* tag, void* userData) GstTagForeachFunc;
6441 
6442 /**
6443  * A function for merging multiple values of a tag used when registering
6444  * tags.
6445  *
6446  * Params:
6447  *     dest = the destination #GValue
6448  *     src = the source #GValue
6449  */
6450 public alias extern(C) void function(GValue* dest, GValue* src) GstTagMergeFunc;
6451 
6452 /**
6453  * A function that will repeatedly be called in the thread created by
6454  * a #GstTask.
6455  *
6456  * Params:
6457  *     userData = user data passed to the function
6458  */
6459 public alias extern(C) void function(void* userData) GstTaskFunction;
6460 
6461 /**
6462  * Task function, see gst_task_pool_push().
6463  *
6464  * Params:
6465  *     userData = user data for the task function
6466  */
6467 public alias extern(C) void function(void* userData) GstTaskPoolFunction;
6468 
6469 /**
6470  * Custom GstTask thread callback functions that can be installed.
6471  *
6472  * Params:
6473  *     task = The #GstTask
6474  *     thread = The #GThread
6475  *     userData = user data
6476  */
6477 public alias extern(C) void function(GstTask* task, GThread* thread, void* userData) GstTaskThreadFunc;
6478 
6479 /**
6480  * A function that will be called by typefinding.
6481  *
6482  * Params:
6483  *     find = A #GstTypeFind structure
6484  *     userData = optional data to pass to the function
6485  */
6486 public alias extern(C) void function(GstTypeFind* find, void* userData) GstTypeFindFunction;
6487 
6488 /**
6489  * Used together with gst_value_compare() to compare #GValue items.
6490  *
6491  * Params:
6492  *     value1 = first value for comparison
6493  *     value2 = second value for comparison
6494  *
6495  * Returns: one of GST_VALUE_LESS_THAN, GST_VALUE_EQUAL, GST_VALUE_GREATER_THAN
6496  *     or GST_VALUE_UNORDERED
6497  */
6498 public alias extern(C) int function(GValue* value1, GValue* value2) GstValueCompareFunc;
6499 
6500 /**
6501  * Used by gst_value_deserialize() to parse a non-binary form into the #GValue.
6502  *
6503  * Params:
6504  *     dest = a #GValue
6505  *     s = a string
6506  *
6507  * Returns: %TRUE for success
6508  */
6509 public alias extern(C) int function(GValue* dest, const(char)* s) GstValueDeserializeFunc;
6510 
6511 /**
6512  * Used by gst_value_serialize() to obtain a non-binary form of the #GValue.
6513  *
6514  * Free-function: g_free
6515  *
6516  * Params:
6517  *     value1 = a #GValue
6518  *
6519  * Returns: the string representation of the value
6520  */
6521 public alias extern(C) char* function(GValue* value1) GstValueSerializeFunc;
6522 
6523 /**
6524  * The allocator name for the default system memory allocator
6525  */
6526 enum ALLOCATOR_SYSMEM = "SystemMemory";
6527 alias GST_ALLOCATOR_SYSMEM = ALLOCATOR_SYSMEM;
6528 
6529 /**
6530  * Combination of all possible fields that can be copied with
6531  * gst_buffer_copy_into().
6532  */
6533 enum BUFFER_COPY_ALL = 15;
6534 alias GST_BUFFER_COPY_ALL = BUFFER_COPY_ALL;
6535 
6536 /**
6537  * Combination of all possible metadata fields that can be copied with
6538  * gst_buffer_copy_into().
6539  */
6540 enum BUFFER_COPY_METADATA = 7;
6541 alias GST_BUFFER_COPY_METADATA = BUFFER_COPY_METADATA;
6542 
6543 /**
6544  * Constant for no-offset return results.
6545  */
6546 enum BUFFER_OFFSET_NONE = 18446744073709551615UL;
6547 alias GST_BUFFER_OFFSET_NONE = BUFFER_OFFSET_NONE;
6548 
6549 enum CAN_INLINE = 1;
6550 alias GST_CAN_INLINE = CAN_INLINE;
6551 
6552 enum CAPS_FEATURE_MEMORY_SYSTEM_MEMORY = "memory:SystemMemory";
6553 alias GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY = CAPS_FEATURE_MEMORY_SYSTEM_MEMORY;
6554 
6555 /**
6556  * Constant to define an undefined clock time.
6557  */
6558 enum CLOCK_TIME_NONE = 18446744073709551615UL;
6559 alias GST_CLOCK_TIME_NONE = CLOCK_TIME_NONE;
6560 
6561 enum DEBUG_BG_MASK = 240;
6562 alias GST_DEBUG_BG_MASK = DEBUG_BG_MASK;
6563 
6564 enum DEBUG_FG_MASK = 15;
6565 alias GST_DEBUG_FG_MASK = DEBUG_FG_MASK;
6566 
6567 enum DEBUG_FORMAT_MASK = 65280;
6568 alias GST_DEBUG_FORMAT_MASK = DEBUG_FORMAT_MASK;
6569 
6570 enum ELEMENT_FACTORY_KLASS_DECODER = "Decoder";
6571 alias GST_ELEMENT_FACTORY_KLASS_DECODER = ELEMENT_FACTORY_KLASS_DECODER;
6572 
6573 enum ELEMENT_FACTORY_KLASS_DECRYPTOR = "Decryptor";
6574 alias GST_ELEMENT_FACTORY_KLASS_DECRYPTOR = ELEMENT_FACTORY_KLASS_DECRYPTOR;
6575 
6576 enum ELEMENT_FACTORY_KLASS_DEMUXER = "Demuxer";
6577 alias GST_ELEMENT_FACTORY_KLASS_DEMUXER = ELEMENT_FACTORY_KLASS_DEMUXER;
6578 
6579 enum ELEMENT_FACTORY_KLASS_DEPAYLOADER = "Depayloader";
6580 alias GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER = ELEMENT_FACTORY_KLASS_DEPAYLOADER;
6581 
6582 enum ELEMENT_FACTORY_KLASS_ENCODER = "Encoder";
6583 alias GST_ELEMENT_FACTORY_KLASS_ENCODER = ELEMENT_FACTORY_KLASS_ENCODER;
6584 
6585 enum ELEMENT_FACTORY_KLASS_ENCRYPTOR = "Encryptor";
6586 alias GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR = ELEMENT_FACTORY_KLASS_ENCRYPTOR;
6587 
6588 enum ELEMENT_FACTORY_KLASS_FORMATTER = "Formatter";
6589 alias GST_ELEMENT_FACTORY_KLASS_FORMATTER = ELEMENT_FACTORY_KLASS_FORMATTER;
6590 
6591 /**
6592  * Elements interacting with hardware devices should specify this classifier in
6593  * their metadata. You may need to put the element in "READY" state to test if
6594  * the hardware is present in the system.
6595  */
6596 enum ELEMENT_FACTORY_KLASS_HARDWARE = "Hardware";
6597 alias GST_ELEMENT_FACTORY_KLASS_HARDWARE = ELEMENT_FACTORY_KLASS_HARDWARE;
6598 
6599 enum ELEMENT_FACTORY_KLASS_MEDIA_AUDIO = "Audio";
6600 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO = ELEMENT_FACTORY_KLASS_MEDIA_AUDIO;
6601 
6602 enum ELEMENT_FACTORY_KLASS_MEDIA_IMAGE = "Image";
6603 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE = ELEMENT_FACTORY_KLASS_MEDIA_IMAGE;
6604 
6605 enum ELEMENT_FACTORY_KLASS_MEDIA_METADATA = "Metadata";
6606 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA = ELEMENT_FACTORY_KLASS_MEDIA_METADATA;
6607 
6608 enum ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE = "Subtitle";
6609 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE = ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE;
6610 
6611 enum ELEMENT_FACTORY_KLASS_MEDIA_VIDEO = "Video";
6612 alias GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO = ELEMENT_FACTORY_KLASS_MEDIA_VIDEO;
6613 
6614 enum ELEMENT_FACTORY_KLASS_MUXER = "Muxer";
6615 alias GST_ELEMENT_FACTORY_KLASS_MUXER = ELEMENT_FACTORY_KLASS_MUXER;
6616 
6617 enum ELEMENT_FACTORY_KLASS_PARSER = "Parser";
6618 alias GST_ELEMENT_FACTORY_KLASS_PARSER = ELEMENT_FACTORY_KLASS_PARSER;
6619 
6620 enum ELEMENT_FACTORY_KLASS_PAYLOADER = "Payloader";
6621 alias GST_ELEMENT_FACTORY_KLASS_PAYLOADER = ELEMENT_FACTORY_KLASS_PAYLOADER;
6622 
6623 enum ELEMENT_FACTORY_KLASS_SINK = "Sink";
6624 alias GST_ELEMENT_FACTORY_KLASS_SINK = ELEMENT_FACTORY_KLASS_SINK;
6625 
6626 enum ELEMENT_FACTORY_KLASS_SRC = "Source";
6627 alias GST_ELEMENT_FACTORY_KLASS_SRC = ELEMENT_FACTORY_KLASS_SRC;
6628 
6629 /**
6630  * Elements of any of the defined GST_ELEMENT_FACTORY_LIST types
6631  */
6632 enum ELEMENT_FACTORY_TYPE_ANY = 562949953421311UL;
6633 alias GST_ELEMENT_FACTORY_TYPE_ANY = ELEMENT_FACTORY_TYPE_ANY;
6634 
6635 /**
6636  * All sinks handling audio, video or image media types
6637  */
6638 enum ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS = 3940649673949188UL;
6639 alias GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS = ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS;
6640 
6641 /**
6642  * All encoders handling audio media types
6643  */
6644 enum ELEMENT_FACTORY_TYPE_AUDIO_ENCODER = 1125899906842626UL;
6645 alias GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER = ELEMENT_FACTORY_TYPE_AUDIO_ENCODER;
6646 
6647 /**
6648  * All elements used to 'decode' streams (decoders, demuxers, parsers, depayloaders)
6649  */
6650 enum ELEMENT_FACTORY_TYPE_DECODABLE = 1377UL;
6651 alias GST_ELEMENT_FACTORY_TYPE_DECODABLE = ELEMENT_FACTORY_TYPE_DECODABLE;
6652 
6653 enum ELEMENT_FACTORY_TYPE_DECODER = 1UL;
6654 alias GST_ELEMENT_FACTORY_TYPE_DECODER = ELEMENT_FACTORY_TYPE_DECODER;
6655 
6656 enum ELEMENT_FACTORY_TYPE_DECRYPTOR = 1024UL;
6657 alias GST_ELEMENT_FACTORY_TYPE_DECRYPTOR = ELEMENT_FACTORY_TYPE_DECRYPTOR;
6658 
6659 enum ELEMENT_FACTORY_TYPE_DEMUXER = 32UL;
6660 alias GST_ELEMENT_FACTORY_TYPE_DEMUXER = ELEMENT_FACTORY_TYPE_DEMUXER;
6661 
6662 enum ELEMENT_FACTORY_TYPE_DEPAYLOADER = 256UL;
6663 alias GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER = ELEMENT_FACTORY_TYPE_DEPAYLOADER;
6664 
6665 enum ELEMENT_FACTORY_TYPE_ENCODER = 2UL;
6666 alias GST_ELEMENT_FACTORY_TYPE_ENCODER = ELEMENT_FACTORY_TYPE_ENCODER;
6667 
6668 enum ELEMENT_FACTORY_TYPE_ENCRYPTOR = 2048UL;
6669 alias GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR = ELEMENT_FACTORY_TYPE_ENCRYPTOR;
6670 
6671 enum ELEMENT_FACTORY_TYPE_FORMATTER = 512UL;
6672 alias GST_ELEMENT_FACTORY_TYPE_FORMATTER = ELEMENT_FACTORY_TYPE_FORMATTER;
6673 
6674 enum ELEMENT_FACTORY_TYPE_MAX_ELEMENTS = 281474976710656UL;
6675 alias GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS = ELEMENT_FACTORY_TYPE_MAX_ELEMENTS;
6676 
6677 /**
6678  * Elements matching any of the defined GST_ELEMENT_FACTORY_TYPE_MEDIA types
6679  *
6680  * Note: Do not use this if you wish to not filter against any of the defined
6681  * media types. If you wish to do this, simply don't specify any
6682  * GST_ELEMENT_FACTORY_TYPE_MEDIA flag.
6683  */
6684 enum ELEMENT_FACTORY_TYPE_MEDIA_ANY = 18446462598732840960UL;
6685 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY = ELEMENT_FACTORY_TYPE_MEDIA_ANY;
6686 
6687 enum ELEMENT_FACTORY_TYPE_MEDIA_AUDIO = 1125899906842624UL;
6688 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO = ELEMENT_FACTORY_TYPE_MEDIA_AUDIO;
6689 
6690 enum ELEMENT_FACTORY_TYPE_MEDIA_IMAGE = 2251799813685248UL;
6691 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE = ELEMENT_FACTORY_TYPE_MEDIA_IMAGE;
6692 
6693 enum ELEMENT_FACTORY_TYPE_MEDIA_METADATA = 9007199254740992UL;
6694 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA = ELEMENT_FACTORY_TYPE_MEDIA_METADATA;
6695 
6696 enum ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE = 4503599627370496UL;
6697 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE = ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE;
6698 
6699 enum ELEMENT_FACTORY_TYPE_MEDIA_VIDEO = 562949953421312UL;
6700 alias GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO = ELEMENT_FACTORY_TYPE_MEDIA_VIDEO;
6701 
6702 enum ELEMENT_FACTORY_TYPE_MUXER = 16UL;
6703 alias GST_ELEMENT_FACTORY_TYPE_MUXER = ELEMENT_FACTORY_TYPE_MUXER;
6704 
6705 enum ELEMENT_FACTORY_TYPE_PARSER = 64UL;
6706 alias GST_ELEMENT_FACTORY_TYPE_PARSER = ELEMENT_FACTORY_TYPE_PARSER;
6707 
6708 enum ELEMENT_FACTORY_TYPE_PAYLOADER = 128UL;
6709 alias GST_ELEMENT_FACTORY_TYPE_PAYLOADER = ELEMENT_FACTORY_TYPE_PAYLOADER;
6710 
6711 enum ELEMENT_FACTORY_TYPE_SINK = 4UL;
6712 alias GST_ELEMENT_FACTORY_TYPE_SINK = ELEMENT_FACTORY_TYPE_SINK;
6713 
6714 enum ELEMENT_FACTORY_TYPE_SRC = 8UL;
6715 alias GST_ELEMENT_FACTORY_TYPE_SRC = ELEMENT_FACTORY_TYPE_SRC;
6716 
6717 /**
6718  * All encoders handling video or image media types
6719  */
6720 enum ELEMENT_FACTORY_TYPE_VIDEO_ENCODER = 2814749767106562UL;
6721 alias GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER = ELEMENT_FACTORY_TYPE_VIDEO_ENCODER;
6722 
6723 /**
6724  * Name and contact details of the author(s). Use \n to separate
6725  * multiple author details.
6726  * E.g: "Joe Bloggs &lt;joe.blogs at foo.com&gt;"
6727  */
6728 enum ELEMENT_METADATA_AUTHOR = "author";
6729 alias GST_ELEMENT_METADATA_AUTHOR = ELEMENT_METADATA_AUTHOR;
6730 
6731 /**
6732  * Sentence describing the purpose of the element.
6733  * E.g: "Write stream to a file"
6734  */
6735 enum ELEMENT_METADATA_DESCRIPTION = "description";
6736 alias GST_ELEMENT_METADATA_DESCRIPTION = ELEMENT_METADATA_DESCRIPTION;
6737 
6738 /**
6739  * Set uri pointing to user documentation. Applications can use this to show
6740  * help for e.g. effects to users.
6741  */
6742 enum ELEMENT_METADATA_DOC_URI = "doc-uri";
6743 alias GST_ELEMENT_METADATA_DOC_URI = ELEMENT_METADATA_DOC_URI;
6744 
6745 /**
6746  * Elements that bridge to certain other products can include an icon of that
6747  * used product. Application can show the icon in menus/selectors to help
6748  * identifying specific elements.
6749  */
6750 enum ELEMENT_METADATA_ICON_NAME = "icon-name";
6751 alias GST_ELEMENT_METADATA_ICON_NAME = ELEMENT_METADATA_ICON_NAME;
6752 
6753 /**
6754  * String describing the type of element, as an unordered list
6755  * separated with slashes ('/'). See draft-klass.txt of the design docs
6756  * for more details and common types. E.g: "Sink/File"
6757  */
6758 enum ELEMENT_METADATA_KLASS = "klass";
6759 alias GST_ELEMENT_METADATA_KLASS = ELEMENT_METADATA_KLASS;
6760 
6761 /**
6762  * The long English name of the element. E.g. "File Sink"
6763  */
6764 enum ELEMENT_METADATA_LONGNAME = "long-name";
6765 alias GST_ELEMENT_METADATA_LONGNAME = ELEMENT_METADATA_LONGNAME;
6766 
6767 /**
6768  * Builds a string using errno describing the previously failed system
6769  * call.  To be used as the debug argument in #GST_ELEMENT_ERROR.
6770  */
6771 enum ERROR_SYSTEM = "system error: %s";
6772 alias GST_ERROR_SYSTEM = ERROR_SYSTEM;
6773 
6774 enum EVENT_NUM_SHIFT = 8;
6775 alias GST_EVENT_NUM_SHIFT = EVENT_NUM_SHIFT;
6776 
6777 /**
6778  * The same thing as #GST_EVENT_TYPE_UPSTREAM | #GST_EVENT_TYPE_DOWNSTREAM.
6779  */
6780 enum EVENT_TYPE_BOTH = 3;
6781 alias GST_EVENT_TYPE_BOTH = EVENT_TYPE_BOTH;
6782 
6783 /**
6784  * A mask value with all bits set, for use as a
6785  * GstFlagSet mask where all flag bits must match
6786  * exactly
6787  */
6788 enum FLAG_SET_MASK_EXACT = 4294967295;
6789 alias GST_FLAG_SET_MASK_EXACT = FLAG_SET_MASK_EXACT;
6790 
6791 /**
6792  * The PERCENT format is between 0 and this value
6793  */
6794 enum FORMAT_PERCENT_MAX = 1000000UL;
6795 alias GST_FORMAT_PERCENT_MAX = FORMAT_PERCENT_MAX;
6796 
6797 /**
6798  * The value used to scale down the reported PERCENT format value to
6799  * its real value.
6800  */
6801 enum FORMAT_PERCENT_SCALE = 10000UL;
6802 alias GST_FORMAT_PERCENT_SCALE = FORMAT_PERCENT_SCALE;
6803 
6804 /**
6805  * Can be used together with #GST_FOURCC_ARGS to properly output a
6806  * #guint32 fourcc value in a printf()-style text message.
6807  *
6808  * |[
6809  * printf ("fourcc: %" GST_FOURCC_FORMAT "\n", GST_FOURCC_ARGS (fcc));
6810  * ]|
6811  */
6812 enum FOURCC_FORMAT = "c%c%c%c";
6813 alias GST_FOURCC_FORMAT = FOURCC_FORMAT;
6814 
6815 /**
6816  * A value which is guaranteed to never be returned by
6817  * gst_util_group_id_next().
6818  *
6819  * Can be used as a default value in variables used to store group_id.
6820  */
6821 enum GROUP_ID_INVALID = 0;
6822 alias GST_GROUP_ID_INVALID = GROUP_ID_INVALID;
6823 
6824 /**
6825  * To be used in GST_PLUGIN_DEFINE if unsure about the licence.
6826  */
6827 enum LICENSE_UNKNOWN = "unknown";
6828 alias GST_LICENSE_UNKNOWN = LICENSE_UNKNOWN;
6829 
6830 /**
6831  * GstLockFlags value alias for GST_LOCK_FLAG_READ | GST_LOCK_FLAG_WRITE
6832  */
6833 enum LOCK_FLAG_READWRITE = 3;
6834 alias GST_LOCK_FLAG_READWRITE = LOCK_FLAG_READWRITE;
6835 
6836 /**
6837  * GstMapFlags value alias for GST_MAP_READ | GST_MAP_WRITE
6838  */
6839 enum MAP_READWRITE = 3;
6840 alias GST_MAP_READWRITE = MAP_READWRITE;
6841 
6842 /**
6843  * This metadata stays relevant as long as memory layout is unchanged.
6844  */
6845 enum META_TAG_MEMORY_STR = "memory";
6846 alias GST_META_TAG_MEMORY_STR = META_TAG_MEMORY_STR;
6847 
6848 /**
6849  * Constant that defines one GStreamer millisecond.
6850  */
6851 enum MSECOND = 1000000UL;
6852 alias GST_MSECOND = MSECOND;
6853 
6854 /**
6855  * Constant that defines one GStreamer nanosecond
6856  */
6857 enum NSECOND = 1UL;
6858 alias GST_NSECOND = NSECOND;
6859 
6860 /**
6861  * Use this flag on GObject properties to signal they can make sense to be.
6862  * controlled over time. This hint is used by the GstController.
6863  */
6864 enum PARAM_CONTROLLABLE = 512;
6865 alias GST_PARAM_CONTROLLABLE = PARAM_CONTROLLABLE;
6866 
6867 /**
6868  * Use this flag on GObject properties of GstElements to indicate that
6869  * they can be changed when the element is in the PAUSED or lower state.
6870  * This flag implies GST_PARAM_MUTABLE_READY.
6871  */
6872 enum PARAM_MUTABLE_PAUSED = 2048;
6873 alias GST_PARAM_MUTABLE_PAUSED = PARAM_MUTABLE_PAUSED;
6874 
6875 /**
6876  * Use this flag on GObject properties of GstElements to indicate that
6877  * they can be changed when the element is in the PLAYING or lower state.
6878  * This flag implies GST_PARAM_MUTABLE_PAUSED.
6879  */
6880 enum PARAM_MUTABLE_PLAYING = 4096;
6881 alias GST_PARAM_MUTABLE_PLAYING = PARAM_MUTABLE_PLAYING;
6882 
6883 /**
6884  * Use this flag on GObject properties of GstElements to indicate that
6885  * they can be changed when the element is in the READY or lower state.
6886  */
6887 enum PARAM_MUTABLE_READY = 1024;
6888 alias GST_PARAM_MUTABLE_READY = PARAM_MUTABLE_READY;
6889 
6890 /**
6891  * Bits based on GST_PARAM_USER_SHIFT can be used by 3rd party applications.
6892  */
6893 enum PARAM_USER_SHIFT = 65536;
6894 alias GST_PARAM_USER_SHIFT = PARAM_USER_SHIFT;
6895 
6896 /**
6897  * The field name in a GstCaps that is used to signal the UUID of the protection
6898  * system.
6899  */
6900 enum PROTECTION_SYSTEM_ID_CAPS_FIELD = "protection-system";
6901 alias GST_PROTECTION_SYSTEM_ID_CAPS_FIELD = PROTECTION_SYSTEM_ID_CAPS_FIELD;
6902 
6903 /**
6904  * The protection system value of the unspecified UUID.
6905  * In some cases the system protection ID is not present in the contents or in their
6906  * metadata, as encrypted WebM.
6907  * This define is used to set the value of the "system_id" field in GstProtectionEvent,
6908  * with this value, the application will use an external information to choose which
6909  * protection system to use.
6910  *
6911  * Example: The matroskademux uses this value in the case of encrypted WebM,
6912  * the application will choose the appropriate protection system based on the information
6913  * received through EME API.
6914  */
6915 enum PROTECTION_UNSPECIFIED_SYSTEM_ID = "unspecified-system-id";
6916 alias GST_PROTECTION_UNSPECIFIED_SYSTEM_ID = PROTECTION_UNSPECIFIED_SYSTEM_ID;
6917 
6918 /**
6919  * printf format type used to debug GStreamer types. You can use this in
6920  * combination with GStreamer's debug logging system as well as the functions
6921  * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
6922  * to pretty-print the following types: #GstCaps, #GstStructure,
6923  * #GstCapsFeatures, #GstTagList, #GstDateTime, #GstBuffer, #GstBufferList,
6924  * #GstMessage, #GstEvent, #GstQuery, #GstContext, #GstPad, #GstObject. All
6925  * #GObject types will be printed as typename plus pointer, and everything
6926  * else will simply be printed as pointer address.
6927  *
6928  * This can only be used on types whose size is >= sizeof(gpointer).
6929  */
6930 enum PTR_FORMAT = "paA";
6931 alias GST_PTR_FORMAT = PTR_FORMAT;
6932 
6933 enum QUERY_NUM_SHIFT = 8;
6934 alias GST_QUERY_NUM_SHIFT = QUERY_NUM_SHIFT;
6935 
6936 /**
6937  * The same thing as #GST_QUERY_TYPE_UPSTREAM | #GST_QUERY_TYPE_DOWNSTREAM.
6938  */
6939 enum QUERY_TYPE_BOTH = 3;
6940 alias GST_QUERY_TYPE_BOTH = QUERY_TYPE_BOTH;
6941 
6942 /**
6943  * Constant that defines one GStreamer second.
6944  */
6945 enum SECOND = 1000000000UL;
6946 alias GST_SECOND = SECOND;
6947 
6948 /**
6949  * printf format type used to debug GStreamer segments. You can use this in
6950  * combination with GStreamer's debug logging system as well as the functions
6951  * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
6952  * to pretty-print #GstSegment structures.
6953  * This can only be used on pointers to GstSegment structures.
6954  */
6955 enum SEGMENT_FORMAT = "paB";
6956 alias GST_SEGMENT_FORMAT = SEGMENT_FORMAT;
6957 
6958 /**
6959  * A value which is guaranteed to never be returned by
6960  * gst_util_seqnum_next().
6961  *
6962  * Can be used as a default value in variables used to store seqnum.
6963  */
6964 enum SEQNUM_INVALID = 0;
6965 alias GST_SEQNUM_INVALID = SEQNUM_INVALID;
6966 
6967 /**
6968  * A string that can be used in printf-like format strings to display a signed
6969  * #GstClockTimeDiff or #gint64 value in h:m:s format.  Use GST_TIME_ARGS() to
6970  * construct the matching arguments.
6971  *
6972  * Example:
6973  * |[
6974  * printf("%" GST_STIME_FORMAT "\n", GST_STIME_ARGS(ts));
6975  * ]|
6976  */
6977 enum STIME_FORMAT = "c%";
6978 alias GST_STIME_FORMAT = STIME_FORMAT;
6979 
6980 /**
6981  * album containing this data (string)
6982  *
6983  * The album name as it should be displayed, e.g. 'The Jazz Guitar'
6984  */
6985 enum TAG_ALBUM = "album";
6986 alias GST_TAG_ALBUM = TAG_ALBUM;
6987 
6988 /**
6989  * The artist of the entire album, as it should be displayed.
6990  */
6991 enum TAG_ALBUM_ARTIST = "album-artist";
6992 alias GST_TAG_ALBUM_ARTIST = TAG_ALBUM_ARTIST;
6993 
6994 /**
6995  * The artist of the entire album, as it should be sorted.
6996  */
6997 enum TAG_ALBUM_ARTIST_SORTNAME = "album-artist-sortname";
6998 alias GST_TAG_ALBUM_ARTIST_SORTNAME = TAG_ALBUM_ARTIST_SORTNAME;
6999 
7000 /**
7001  * album gain in db (double)
7002  */
7003 enum TAG_ALBUM_GAIN = "replaygain-album-gain";
7004 alias GST_TAG_ALBUM_GAIN = TAG_ALBUM_GAIN;
7005 
7006 /**
7007  * peak of the album (double)
7008  */
7009 enum TAG_ALBUM_PEAK = "replaygain-album-peak";
7010 alias GST_TAG_ALBUM_PEAK = TAG_ALBUM_PEAK;
7011 
7012 /**
7013  * album containing this data, as used for sorting (string)
7014  *
7015  * The album name as it should be sorted, e.g. 'Jazz Guitar, The'
7016  */
7017 enum TAG_ALBUM_SORTNAME = "album-sortname";
7018 alias GST_TAG_ALBUM_SORTNAME = TAG_ALBUM_SORTNAME;
7019 
7020 /**
7021  * count of discs inside collection this disc belongs to (unsigned integer)
7022  */
7023 enum TAG_ALBUM_VOLUME_COUNT = "album-disc-count";
7024 alias GST_TAG_ALBUM_VOLUME_COUNT = TAG_ALBUM_VOLUME_COUNT;
7025 
7026 /**
7027  * disc number inside a collection (unsigned integer)
7028  */
7029 enum TAG_ALBUM_VOLUME_NUMBER = "album-disc-number";
7030 alias GST_TAG_ALBUM_VOLUME_NUMBER = TAG_ALBUM_VOLUME_NUMBER;
7031 
7032 /**
7033  * Arbitrary application data (sample)
7034  *
7035  * Some formats allow applications to add their own arbitrary data
7036  * into files. This data is application dependent.
7037  */
7038 enum TAG_APPLICATION_DATA = "application-data";
7039 alias GST_TAG_APPLICATION_DATA = TAG_APPLICATION_DATA;
7040 
7041 /**
7042  * Name of the application used to create the media (string)
7043  */
7044 enum TAG_APPLICATION_NAME = "application-name";
7045 alias GST_TAG_APPLICATION_NAME = TAG_APPLICATION_NAME;
7046 
7047 /**
7048  * person(s) responsible for the recording (string)
7049  *
7050  * The artist name as it should be displayed, e.g. 'Jimi Hendrix' or
7051  * 'The Guitar Heroes'
7052  */
7053 enum TAG_ARTIST = "artist";
7054 alias GST_TAG_ARTIST = TAG_ARTIST;
7055 
7056 /**
7057  * person(s) responsible for the recording, as used for sorting (string)
7058  *
7059  * The artist name as it should be sorted, e.g. 'Hendrix, Jimi' or
7060  * 'Guitar Heroes, The'
7061  */
7062 enum TAG_ARTIST_SORTNAME = "artist-sortname";
7063 alias GST_TAG_ARTIST_SORTNAME = TAG_ARTIST_SORTNAME;
7064 
7065 /**
7066  * generic file attachment (sample) (sample taglist should specify the content
7067  * type and if possible set "filename" to the file name of the
7068  * attachment)
7069  */
7070 enum TAG_ATTACHMENT = "attachment";
7071 alias GST_TAG_ATTACHMENT = TAG_ATTACHMENT;
7072 
7073 /**
7074  * codec the audio data is stored in (string)
7075  */
7076 enum TAG_AUDIO_CODEC = "audio-codec";
7077 alias GST_TAG_AUDIO_CODEC = TAG_AUDIO_CODEC;
7078 
7079 /**
7080  * number of beats per minute in audio (double)
7081  */
7082 enum TAG_BEATS_PER_MINUTE = "beats-per-minute";
7083 alias GST_TAG_BEATS_PER_MINUTE = TAG_BEATS_PER_MINUTE;
7084 
7085 /**
7086  * exact or average bitrate in bits/s (unsigned integer)
7087  */
7088 enum TAG_BITRATE = "bitrate";
7089 alias GST_TAG_BITRATE = TAG_BITRATE;
7090 
7091 /**
7092  * codec the data is stored in (string)
7093  */
7094 enum TAG_CODEC = "codec";
7095 alias GST_TAG_CODEC = TAG_CODEC;
7096 
7097 /**
7098  * free text commenting the data (string)
7099  */
7100 enum TAG_COMMENT = "comment";
7101 alias GST_TAG_COMMENT = TAG_COMMENT;
7102 
7103 /**
7104  * person(s) who composed the recording (string)
7105  */
7106 enum TAG_COMPOSER = "composer";
7107 alias GST_TAG_COMPOSER = TAG_COMPOSER;
7108 
7109 /**
7110  * The composer's name, used for sorting (string)
7111  */
7112 enum TAG_COMPOSER_SORTNAME = "composer-sortname";
7113 alias GST_TAG_COMPOSER_SORTNAME = TAG_COMPOSER_SORTNAME;
7114 
7115 /**
7116  * conductor/performer refinement (string)
7117  */
7118 enum TAG_CONDUCTOR = "conductor";
7119 alias GST_TAG_CONDUCTOR = TAG_CONDUCTOR;
7120 
7121 /**
7122  * contact information (string)
7123  */
7124 enum TAG_CONTACT = "contact";
7125 alias GST_TAG_CONTACT = TAG_CONTACT;
7126 
7127 /**
7128  * container format the data is stored in (string)
7129  */
7130 enum TAG_CONTAINER_FORMAT = "container-format";
7131 alias GST_TAG_CONTAINER_FORMAT = TAG_CONTAINER_FORMAT;
7132 
7133 /**
7134  * copyright notice of the data (string)
7135  */
7136 enum TAG_COPYRIGHT = "copyright";
7137 alias GST_TAG_COPYRIGHT = TAG_COPYRIGHT;
7138 
7139 /**
7140  * URI to location where copyright details can be found (string)
7141  */
7142 enum TAG_COPYRIGHT_URI = "copyright-uri";
7143 alias GST_TAG_COPYRIGHT_URI = TAG_COPYRIGHT_URI;
7144 
7145 /**
7146  * date the data was created (#GDate structure)
7147  */
7148 enum TAG_DATE = "date";
7149 alias GST_TAG_DATE = TAG_DATE;
7150 
7151 /**
7152  * date and time the data was created (#GstDateTime structure)
7153  */
7154 enum TAG_DATE_TIME = "datetime";
7155 alias GST_TAG_DATE_TIME = TAG_DATE_TIME;
7156 
7157 /**
7158  * short text describing the content of the data (string)
7159  */
7160 enum TAG_DESCRIPTION = "description";
7161 alias GST_TAG_DESCRIPTION = TAG_DESCRIPTION;
7162 
7163 /**
7164  * Manufacturer of the device used to create the media (string)
7165  */
7166 enum TAG_DEVICE_MANUFACTURER = "device-manufacturer";
7167 alias GST_TAG_DEVICE_MANUFACTURER = TAG_DEVICE_MANUFACTURER;
7168 
7169 /**
7170  * Model of the device used to create the media (string)
7171  */
7172 enum TAG_DEVICE_MODEL = "device-model";
7173 alias GST_TAG_DEVICE_MODEL = TAG_DEVICE_MODEL;
7174 
7175 /**
7176  * length in GStreamer time units (nanoseconds) (unsigned 64-bit integer)
7177  */
7178 enum TAG_DURATION = "duration";
7179 alias GST_TAG_DURATION = TAG_DURATION;
7180 
7181 /**
7182  * name of the person or organisation that encoded the file. May contain a
7183  * copyright message if the person or organisation also holds the copyright
7184  * (string)
7185  *
7186  * Note: do not use this field to describe the encoding application. Use
7187  * #GST_TAG_APPLICATION_NAME or #GST_TAG_COMMENT for that.
7188  */
7189 enum TAG_ENCODED_BY = "encoded-by";
7190 alias GST_TAG_ENCODED_BY = TAG_ENCODED_BY;
7191 
7192 /**
7193  * encoder used to encode this stream (string)
7194  */
7195 enum TAG_ENCODER = "encoder";
7196 alias GST_TAG_ENCODER = TAG_ENCODER;
7197 
7198 /**
7199  * version of the encoder used to encode this stream (unsigned integer)
7200  */
7201 enum TAG_ENCODER_VERSION = "encoder-version";
7202 alias GST_TAG_ENCODER_VERSION = TAG_ENCODER_VERSION;
7203 
7204 /**
7205  * key/value text commenting the data (string)
7206  *
7207  * Must be in the form of 'key=comment' or
7208  * 'key[lc]=comment' where 'lc' is an ISO-639
7209  * language code.
7210  *
7211  * This tag is used for unknown Vorbis comment tags,
7212  * unknown APE tags and certain ID3v2 comment fields.
7213  */
7214 enum TAG_EXTENDED_COMMENT = "extended-comment";
7215 alias GST_TAG_EXTENDED_COMMENT = TAG_EXTENDED_COMMENT;
7216 
7217 /**
7218  * genre this data belongs to (string)
7219  */
7220 enum TAG_GENRE = "genre";
7221 alias GST_TAG_GENRE = TAG_GENRE;
7222 
7223 /**
7224  * Indicates the direction the device is pointing to when capturing
7225  * a media. It is represented as degrees in floating point representation,
7226  * 0 means the geographic north, and increases clockwise (double from 0 to 360)
7227  *
7228  * See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION
7229  */
7230 enum TAG_GEO_LOCATION_CAPTURE_DIRECTION = "geo-location-capture-direction";
7231 alias GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION = TAG_GEO_LOCATION_CAPTURE_DIRECTION;
7232 
7233 /**
7234  * The city (english name) where the media has been produced (string).
7235  */
7236 enum TAG_GEO_LOCATION_CITY = "geo-location-city";
7237 alias GST_TAG_GEO_LOCATION_CITY = TAG_GEO_LOCATION_CITY;
7238 
7239 /**
7240  * The country (english name) where the media has been produced (string).
7241  */
7242 enum TAG_GEO_LOCATION_COUNTRY = "geo-location-country";
7243 alias GST_TAG_GEO_LOCATION_COUNTRY = TAG_GEO_LOCATION_COUNTRY;
7244 
7245 /**
7246  * geo elevation of where the media has been recorded or produced in meters
7247  * according to WGS84 (zero is average sea level) (double).
7248  */
7249 enum TAG_GEO_LOCATION_ELEVATION = "geo-location-elevation";
7250 alias GST_TAG_GEO_LOCATION_ELEVATION = TAG_GEO_LOCATION_ELEVATION;
7251 
7252 /**
7253  * Represents the expected error on the horizontal positioning in
7254  * meters (double).
7255  */
7256 enum TAG_GEO_LOCATION_HORIZONTAL_ERROR = "geo-location-horizontal-error";
7257 alias GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR = TAG_GEO_LOCATION_HORIZONTAL_ERROR;
7258 
7259 /**
7260  * geo latitude location of where the media has been recorded or produced in
7261  * degrees according to WGS84 (zero at the equator, negative values for southern
7262  * latitudes) (double).
7263  */
7264 enum TAG_GEO_LOCATION_LATITUDE = "geo-location-latitude";
7265 alias GST_TAG_GEO_LOCATION_LATITUDE = TAG_GEO_LOCATION_LATITUDE;
7266 
7267 /**
7268  * geo longitude location of where the media has been recorded or produced in
7269  * degrees according to WGS84 (zero at the prime meridian in Greenwich/UK,
7270  * negative values for western longitudes). (double).
7271  */
7272 enum TAG_GEO_LOCATION_LONGITUDE = "geo-location-longitude";
7273 alias GST_TAG_GEO_LOCATION_LONGITUDE = TAG_GEO_LOCATION_LONGITUDE;
7274 
7275 /**
7276  * Indicates the movement direction of the device performing the capture
7277  * of a media. It is represented as degrees in floating point representation,
7278  * 0 means the geographic north, and increases clockwise (double from 0 to 360)
7279  *
7280  * See also #GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION
7281  */
7282 enum TAG_GEO_LOCATION_MOVEMENT_DIRECTION = "geo-location-movement-direction";
7283 alias GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION = TAG_GEO_LOCATION_MOVEMENT_DIRECTION;
7284 
7285 /**
7286  * Speed of the capturing device when performing the capture.
7287  * Represented in m/s. (double)
7288  *
7289  * See also #GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION
7290  */
7291 enum TAG_GEO_LOCATION_MOVEMENT_SPEED = "geo-location-movement-speed";
7292 alias GST_TAG_GEO_LOCATION_MOVEMENT_SPEED = TAG_GEO_LOCATION_MOVEMENT_SPEED;
7293 
7294 /**
7295  * human readable descriptive location of where the media has been recorded or
7296  * produced. (string).
7297  */
7298 enum TAG_GEO_LOCATION_NAME = "geo-location-name";
7299 alias GST_TAG_GEO_LOCATION_NAME = TAG_GEO_LOCATION_NAME;
7300 
7301 /**
7302  * A location 'smaller' than GST_TAG_GEO_LOCATION_CITY that specifies better
7303  * where the media has been produced. (e.g. the neighborhood) (string).
7304  *
7305  * This tag has been added as this is how it is handled/named in XMP's
7306  * Iptc4xmpcore schema.
7307  */
7308 enum TAG_GEO_LOCATION_SUBLOCATION = "geo-location-sublocation";
7309 alias GST_TAG_GEO_LOCATION_SUBLOCATION = TAG_GEO_LOCATION_SUBLOCATION;
7310 
7311 /**
7312  * Groups together media that are related and spans multiple tracks. An
7313  * example are multiple pieces of a concerto. (string)
7314  */
7315 enum TAG_GROUPING = "grouping";
7316 alias GST_TAG_GROUPING = TAG_GROUPING;
7317 
7318 /**
7319  * Homepage for this media (i.e. artist or movie homepage) (string)
7320  */
7321 enum TAG_HOMEPAGE = "homepage";
7322 alias GST_TAG_HOMEPAGE = TAG_HOMEPAGE;
7323 
7324 /**
7325  * image (sample) (sample taglist should specify the content type and preferably
7326  * also set "image-type" field as #GstTagImageType)
7327  */
7328 enum TAG_IMAGE = "image";
7329 alias GST_TAG_IMAGE = TAG_IMAGE;
7330 
7331 /**
7332  * Represents the 'Orientation' tag from EXIF. Defines how the image
7333  * should be rotated and mirrored for display. (string)
7334  *
7335  * This tag has a predefined set of allowed values:
7336  * "rotate-0"
7337  * "rotate-90"
7338  * "rotate-180"
7339  * "rotate-270"
7340  * "flip-rotate-0"
7341  * "flip-rotate-90"
7342  * "flip-rotate-180"
7343  * "flip-rotate-270"
7344  *
7345  * The naming is adopted according to a possible transformation to perform
7346  * on the image to fix its orientation, obviously equivalent operations will
7347  * yield the same result.
7348  *
7349  * Rotations indicated by the values are in clockwise direction and
7350  * 'flip' means an horizontal mirroring.
7351  */
7352 enum TAG_IMAGE_ORIENTATION = "image-orientation";
7353 alias GST_TAG_IMAGE_ORIENTATION = TAG_IMAGE_ORIENTATION;
7354 
7355 /**
7356  * Information about the people behind a remix and similar
7357  * interpretations of another existing piece (string)
7358  */
7359 enum TAG_INTERPRETED_BY = "interpreted-by";
7360 alias GST_TAG_INTERPRETED_BY = TAG_INTERPRETED_BY;
7361 
7362 /**
7363  * International Standard Recording Code - see http://www.ifpi.org/isrc/ (string)
7364  */
7365 enum TAG_ISRC = "isrc";
7366 alias GST_TAG_ISRC = TAG_ISRC;
7367 
7368 /**
7369  * comma separated keywords describing the content (string).
7370  */
7371 enum TAG_KEYWORDS = "keywords";
7372 alias GST_TAG_KEYWORDS = TAG_KEYWORDS;
7373 
7374 /**
7375  * ISO-639-2 or ISO-639-1 code for the language the content is in (string)
7376  *
7377  * There is utility API in libgsttag in gst-plugins-base to obtain a translated
7378  * language name from the language code: gst_tag_get_language_name()
7379  */
7380 enum TAG_LANGUAGE_CODE = "language-code";
7381 alias GST_TAG_LANGUAGE_CODE = TAG_LANGUAGE_CODE;
7382 
7383 /**
7384  * Name of the language the content is in (string)
7385  *
7386  * Free-form name of the language the content is in, if a language code
7387  * is not available. This tag should not be set in addition to a language
7388  * code. It is undefined what language or locale the language name is in.
7389  */
7390 enum TAG_LANGUAGE_NAME = "language-name";
7391 alias GST_TAG_LANGUAGE_NAME = TAG_LANGUAGE_NAME;
7392 
7393 /**
7394  * license of data (string)
7395  */
7396 enum TAG_LICENSE = "license";
7397 alias GST_TAG_LICENSE = TAG_LICENSE;
7398 
7399 /**
7400  * URI to location where license details can be found (string)
7401  */
7402 enum TAG_LICENSE_URI = "license-uri";
7403 alias GST_TAG_LICENSE_URI = TAG_LICENSE_URI;
7404 
7405 /**
7406  * Origin of media as a URI (location, where the original of the file or stream
7407  * is hosted) (string)
7408  */
7409 enum TAG_LOCATION = "location";
7410 alias GST_TAG_LOCATION = TAG_LOCATION;
7411 
7412 /**
7413  * The lyrics of the media (string)
7414  */
7415 enum TAG_LYRICS = "lyrics";
7416 alias GST_TAG_LYRICS = TAG_LYRICS;
7417 
7418 /**
7419  * maximum bitrate in bits/s (unsigned integer)
7420  */
7421 enum TAG_MAXIMUM_BITRATE = "maximum-bitrate";
7422 alias GST_TAG_MAXIMUM_BITRATE = TAG_MAXIMUM_BITRATE;
7423 
7424 /**
7425  * <ulink url="http://en.wikipedia.org/wiki/Note#Note_designation_in_accordance_with_octave_name">Midi note number</ulink>
7426  * of the audio track. This is useful for sample instruments and in particular
7427  * for multi-samples.
7428  */
7429 enum TAG_MIDI_BASE_NOTE = "midi-base-note";
7430 alias GST_TAG_MIDI_BASE_NOTE = TAG_MIDI_BASE_NOTE;
7431 
7432 /**
7433  * minimum bitrate in bits/s (unsigned integer)
7434  */
7435 enum TAG_MINIMUM_BITRATE = "minimum-bitrate";
7436 alias GST_TAG_MINIMUM_BITRATE = TAG_MINIMUM_BITRATE;
7437 
7438 /**
7439  * nominal bitrate in bits/s (unsigned integer). The actual bitrate might be
7440  * different from this target bitrate.
7441  */
7442 enum TAG_NOMINAL_BITRATE = "nominal-bitrate";
7443 alias GST_TAG_NOMINAL_BITRATE = TAG_NOMINAL_BITRATE;
7444 
7445 /**
7446  * organization (string)
7447  */
7448 enum TAG_ORGANIZATION = "organization";
7449 alias GST_TAG_ORGANIZATION = TAG_ORGANIZATION;
7450 
7451 /**
7452  * person(s) performing (string)
7453  */
7454 enum TAG_PERFORMER = "performer";
7455 alias GST_TAG_PERFORMER = TAG_PERFORMER;
7456 
7457 /**
7458  * image that is meant for preview purposes, e.g. small icon-sized version
7459  * (sample) (sample taglist should specify the content type)
7460  */
7461 enum TAG_PREVIEW_IMAGE = "preview-image";
7462 alias GST_TAG_PREVIEW_IMAGE = TAG_PREVIEW_IMAGE;
7463 
7464 /**
7465  * Any private data that may be contained in tags (sample).
7466  *
7467  * It is represented by #GstSample in which #GstBuffer contains the
7468  * binary data and the sample's info #GstStructure may contain any
7469  * extra information that identifies the origin or meaning of the data.
7470  *
7471  * Private frames in ID3v2 tags ('PRIV' frames) will be represented
7472  * using this tag, in which case the GstStructure will be named
7473  * "ID3PrivateFrame" and contain a field named "owner" of type string
7474  * which contains the owner-identification string from the tag.
7475  */
7476 enum TAG_PRIVATE_DATA = "private-data";
7477 alias GST_TAG_PRIVATE_DATA = TAG_PRIVATE_DATA;
7478 
7479 /**
7480  * Name of the label or publisher (string)
7481  */
7482 enum TAG_PUBLISHER = "publisher";
7483 alias GST_TAG_PUBLISHER = TAG_PUBLISHER;
7484 
7485 /**
7486  * reference level of track and album gain values (double)
7487  */
7488 enum TAG_REFERENCE_LEVEL = "replaygain-reference-level";
7489 alias GST_TAG_REFERENCE_LEVEL = TAG_REFERENCE_LEVEL;
7490 
7491 /**
7492  * serial number of track (unsigned integer)
7493  */
7494 enum TAG_SERIAL = "serial";
7495 alias GST_TAG_SERIAL = TAG_SERIAL;
7496 
7497 /**
7498  * Number of the episode within a season/show (unsigned integer)
7499  */
7500 enum TAG_SHOW_EPISODE_NUMBER = "show-episode-number";
7501 alias GST_TAG_SHOW_EPISODE_NUMBER = TAG_SHOW_EPISODE_NUMBER;
7502 
7503 /**
7504  * Name of the show, used for displaying (string)
7505  */
7506 enum TAG_SHOW_NAME = "show-name";
7507 alias GST_TAG_SHOW_NAME = TAG_SHOW_NAME;
7508 
7509 /**
7510  * Number of the season of a show/series (unsigned integer)
7511  */
7512 enum TAG_SHOW_SEASON_NUMBER = "show-season-number";
7513 alias GST_TAG_SHOW_SEASON_NUMBER = TAG_SHOW_SEASON_NUMBER;
7514 
7515 /**
7516  * Name of the show, used for sorting (string)
7517  */
7518 enum TAG_SHOW_SORTNAME = "show-sortname";
7519 alias GST_TAG_SHOW_SORTNAME = TAG_SHOW_SORTNAME;
7520 
7521 /**
7522  * codec/format the subtitle data is stored in (string)
7523  */
7524 enum TAG_SUBTITLE_CODEC = "subtitle-codec";
7525 alias GST_TAG_SUBTITLE_CODEC = TAG_SUBTITLE_CODEC;
7526 
7527 /**
7528  * commonly used title (string)
7529  *
7530  * The title as it should be displayed, e.g. 'The Doll House'
7531  */
7532 enum TAG_TITLE = "title";
7533 alias GST_TAG_TITLE = TAG_TITLE;
7534 
7535 /**
7536  * commonly used title, as used for sorting (string)
7537  *
7538  * The title as it should be sorted, e.g. 'Doll House, The'
7539  */
7540 enum TAG_TITLE_SORTNAME = "title-sortname";
7541 alias GST_TAG_TITLE_SORTNAME = TAG_TITLE_SORTNAME;
7542 
7543 /**
7544  * count of tracks inside collection this track belongs to (unsigned integer)
7545  */
7546 enum TAG_TRACK_COUNT = "track-count";
7547 alias GST_TAG_TRACK_COUNT = TAG_TRACK_COUNT;
7548 
7549 /**
7550  * track gain in db (double)
7551  */
7552 enum TAG_TRACK_GAIN = "replaygain-track-gain";
7553 alias GST_TAG_TRACK_GAIN = TAG_TRACK_GAIN;
7554 
7555 /**
7556  * track number inside a collection (unsigned integer)
7557  */
7558 enum TAG_TRACK_NUMBER = "track-number";
7559 alias GST_TAG_TRACK_NUMBER = TAG_TRACK_NUMBER;
7560 
7561 /**
7562  * peak of the track (double)
7563  */
7564 enum TAG_TRACK_PEAK = "replaygain-track-peak";
7565 alias GST_TAG_TRACK_PEAK = TAG_TRACK_PEAK;
7566 
7567 /**
7568  * Rating attributed by a person (likely the application user).
7569  * The higher the value, the more the user likes this media
7570  * (unsigned int from 0 to 100)
7571  */
7572 enum TAG_USER_RATING = "user-rating";
7573 alias GST_TAG_USER_RATING = TAG_USER_RATING;
7574 
7575 /**
7576  * version of this data (string)
7577  */
7578 enum TAG_VERSION = "version";
7579 alias GST_TAG_VERSION = TAG_VERSION;
7580 
7581 /**
7582  * codec the video data is stored in (string)
7583  */
7584 enum TAG_VIDEO_CODEC = "video-codec";
7585 alias GST_TAG_VIDEO_CODEC = TAG_VIDEO_CODEC;
7586 
7587 /**
7588  * A string that can be used in printf-like format strings to display a
7589  * #GstClockTime value in h:m:s format.  Use GST_TIME_ARGS() to construct
7590  * the matching arguments.
7591  *
7592  * Example:
7593  * |[<!-- language="C" -->
7594  * printf("%" GST_TIME_FORMAT "\n", GST_TIME_ARGS(ts));
7595  * ]|
7596  */
7597 enum TIME_FORMAT = "u:%02u:%02u.%09u";
7598 alias GST_TIME_FORMAT = TIME_FORMAT;
7599 
7600 /**
7601  * Special value for the repeat_count set in gst_toc_entry_set_loop() or
7602  * returned by gst_toc_entry_set_loop() to indicate infinite looping.
7603  */
7604 enum TOC_REPEAT_COUNT_INFINITE = -1;
7605 alias GST_TOC_REPEAT_COUNT_INFINITE = TOC_REPEAT_COUNT_INFINITE;
7606 
7607 /**
7608  * Value for #GstUri<!-- -->.port to indicate no port number.
7609  */
7610 enum URI_NO_PORT = 0;
7611 alias GST_URI_NO_PORT = URI_NO_PORT;
7612 
7613 /**
7614  * Constant that defines one GStreamer microsecond.
7615  */
7616 enum USECOND = 1000UL;
7617 alias GST_USECOND = USECOND;
7618 
7619 /**
7620  * Indicates that the first value provided to a comparison function
7621  * (gst_value_compare()) is equal to the second one.
7622  */
7623 enum VALUE_EQUAL = 0;
7624 alias GST_VALUE_EQUAL = VALUE_EQUAL;
7625 
7626 /**
7627  * Indicates that the first value provided to a comparison function
7628  * (gst_value_compare()) is greater than the second one.
7629  */
7630 enum VALUE_GREATER_THAN = 1;
7631 alias GST_VALUE_GREATER_THAN = VALUE_GREATER_THAN;
7632 
7633 /**
7634  * Indicates that the first value provided to a comparison function
7635  * (gst_value_compare()) is lesser than the second one.
7636  */
7637 enum VALUE_LESS_THAN = -1;
7638 alias GST_VALUE_LESS_THAN = VALUE_LESS_THAN;
7639 
7640 /**
7641  * Indicates that the comparison function (gst_value_compare()) can not
7642  * determine a order for the two provided values.
7643  */
7644 enum VALUE_UNORDERED = 2;
7645 alias GST_VALUE_UNORDERED = VALUE_UNORDERED;
7646 
7647 /**
7648  * The major version of GStreamer at compile time:
7649  */
7650 enum VERSION_MAJOR = 1;
7651 alias GST_VERSION_MAJOR = VERSION_MAJOR;
7652 
7653 /**
7654  * The micro version of GStreamer at compile time:
7655  */
7656 enum VERSION_MICRO = 0;
7657 alias GST_VERSION_MICRO = VERSION_MICRO;
7658 
7659 /**
7660  * The minor version of GStreamer at compile time:
7661  */
7662 enum VERSION_MINOR = 16;
7663 alias GST_VERSION_MINOR = VERSION_MINOR;
7664 
7665 /**
7666  * The nano version of GStreamer at compile time:
7667  * Actual releases have 0, GIT versions have 1, prerelease versions have 2-...
7668  */
7669 enum VERSION_NANO = 0;
7670 alias GST_VERSION_NANO = VERSION_NANO;