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