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